draft-ietf-dnssd-srp-00.txt | draft-ietf-dnssd-srp-01.txt | |||
---|---|---|---|---|
Internet Engineering Task Force S. Cheshire | Internet Engineering Task Force S. Cheshire | |||
Internet-Draft Apple Inc. | Internet-Draft Apple Inc. | |||
Intended status: Informational T. Lemon | Intended status: Informational T. Lemon | |||
Expires: April 26, 2019 Nibbhaya Consulting | Expires: September 12, 2019 Nibbhaya Consulting | |||
October 23, 2018 | March 11, 2019 | |||
Service Registration Protocol for DNS-Based Service Discovery | Service Registration Protocol for DNS-Based Service Discovery | |||
draft-ietf-dnssd-srp-00 | draft-ietf-dnssd-srp-01 | |||
Abstract | Abstract | |||
The Service Registration Protocol for DNS-Based Service Discovery | The Service Registration Protocol for DNS-Based Service Discovery | |||
uses the standard DNS Update mechanism to enable DNS-Based Service | uses the standard DNS Update mechanism to enable DNS-Based Service | |||
Discovery using only unicast packets. This eliminates the dependency | Discovery using only unicast packets. This makes it possible to | |||
on Multicast DNS as the foundation layer, which greatly improves | deploy DNS Service Discovery without multicast, which greatly | |||
scalability and improves performance on networks where multicast | improves scalability and improves performance on networks where | |||
service is not an optimal choice, particularly 802.11 (Wi-Fi) and | multicast service is not an optimal choice, particularly 802.11 | |||
802.15.4 (IoT) networks. DNS-SD Service registration uses public | (Wi-Fi) and 802.15.4 (IoT) networks. DNS-SD Service registration | |||
keys and SIG(0) to allow services to defend their registrations | uses public keys and SIG(0) to allow services to defend their | |||
against attack. | registrations against attack. | |||
Status of This Memo | Status of This Memo | |||
This Internet-Draft is submitted in full conformance with the | This Internet-Draft is submitted in full conformance with the | |||
provisions of BCP 78 and BCP 79. | provisions of BCP 78 and BCP 79. | |||
Internet-Drafts are working documents of the Internet Engineering | Internet-Drafts are working documents of the Internet Engineering | |||
Task Force (IETF). Note that other groups may also distribute | Task Force (IETF). Note that other groups may also distribute | |||
working documents as Internet-Drafts. The list of current Internet- | working documents as Internet-Drafts. The list of current Internet- | |||
Drafts is at https://datatracker.ietf.org/drafts/current/. | Drafts is at https://datatracker.ietf.org/drafts/current/. | |||
Internet-Drafts are draft documents valid for a maximum of six months | Internet-Drafts are draft documents valid for a maximum of six months | |||
and may be updated, replaced, or obsoleted by other documents at any | and may be updated, replaced, or obsoleted by other documents at any | |||
time. It is inappropriate to use Internet-Drafts as reference | time. It is inappropriate to use Internet-Drafts as reference | |||
material or to cite them other than as "work in progress." | material or to cite them other than as "work in progress." | |||
This Internet-Draft will expire on April 26, 2019. | This Internet-Draft will expire on September 12, 2019. | |||
Copyright Notice | Copyright Notice | |||
Copyright (c) 2018 IETF Trust and the persons identified as the | Copyright (c) 2019 IETF Trust and the persons identified as the | |||
document authors. All rights reserved. | document authors. All rights reserved. | |||
This document is subject to BCP 78 and the IETF Trust's Legal | This document is subject to BCP 78 and the IETF Trust's Legal | |||
Provisions Relating to IETF Documents | Provisions Relating to IETF Documents | |||
(https://trustee.ietf.org/license-info) in effect on the date of | (https://trustee.ietf.org/license-info) in effect on the date of | |||
publication of this document. Please review these documents | publication of this document. Please review these documents | |||
carefully, as they describe your rights and restrictions with respect | carefully, as they describe your rights and restrictions with respect | |||
to this document. Code Components extracted from this document must | to this document. Code Components extracted from this document must | |||
include Simplified BSD License text as described in Section 4.e of | include Simplified BSD License text as described in Section 4.e of | |||
the Trust Legal Provisions and are provided without warranty as | the Trust Legal Provisions and are provided without warranty as | |||
described in the Simplified BSD License. | described in the Simplified BSD License. | |||
Table of Contents | Table of Contents | |||
1. Introduction . . . . . . . . . . . . . . . . . . . . . . . . 2 | 1. Introduction . . . . . . . . . . . . . . . . . . . . . . . . 3 | |||
2. Service Registration Protocol . . . . . . . . . . . . . . . . 4 | 2. Service Registration Protocol . . . . . . . . . . . . . . . . 4 | |||
2.1. What to publish . . . . . . . . . . . . . . . . . . . . . 5 | 2.1. What to publish . . . . . . . . . . . . . . . . . . . . . 5 | |||
2.2. Where to publish it . . . . . . . . . . . . . . . . . . . 6 | 2.2. Where to publish it . . . . . . . . . . . . . . . . . . . 6 | |||
2.3. How to publish it . . . . . . . . . . . . . . . . . . . . 6 | 2.3. How to publish it . . . . . . . . . . . . . . . . . . . . 6 | |||
2.3.1. How DNS-SD Service Registration differs from standard | 2.3.1. How DNS-SD Service Registration differs from standard | |||
RFC2136 DNS Update . . . . . . . . . . . . . . . . . 7 | RFC2136 DNS Update . . . . . . . . . . . . . . . . . 7 | |||
2.3.2. Testing using standard RFC2136-compliant servers . . 7 | 2.3.2. Testing using standard RFC2136-compliant servers . . 7 | |||
2.3.3. How to allow services to update standard | 2.3.3. How to allow services to update standard | |||
RFC2136-compliant servers . . . . . . . . . . . . . . 7 | RFC2136-compliant servers . . . . . . . . . . . . . . 8 | |||
2.4. How to secure it . . . . . . . . . . . . . . . . . . . . 8 | 2.4. How to secure it . . . . . . . . . . . . . . . . . . . . 8 | |||
2.4.1. First-Come First-Served Naming . . . . . . . . . . . 8 | 2.4.1. First-Come First-Served Naming . . . . . . . . . . . 9 | |||
2.4.2. SRP Server Behavior . . . . . . . . . . . . . . . . . 9 | 2.4.2. SRP Server Behavior . . . . . . . . . . . . . . . . . 10 | |||
2.5. TTL Consistency . . . . . . . . . . . . . . . . . . . . . 12 | 2.5. TTL Consistency . . . . . . . . . . . . . . . . . . . . . 12 | |||
2.6. Maintenance . . . . . . . . . . . . . . . . . . . . . . . 12 | 2.6. Maintenance . . . . . . . . . . . . . . . . . . . . . . . 13 | |||
2.6.1. Cleaning up stale data . . . . . . . . . . . . . . . 12 | 2.6.1. Cleaning up stale data . . . . . . . . . . . . . . . 13 | |||
2.6.2. Sleep Proxy . . . . . . . . . . . . . . . . . . . . . 13 | 2.6.2. Sleep Proxy . . . . . . . . . . . . . . . . . . . . . 14 | |||
3. Security Considerations . . . . . . . . . . . . . . . . . . . 14 | 3. Security Considerations . . . . . . . . . . . . . . . . . . . 15 | |||
4. Privacy Considerations . . . . . . . . . . . . . . . . . . . 15 | 3.1. Source Validation . . . . . . . . . . . . . . . . . . . . 15 | |||
5. Delegation of 'services.arpa.' . . . . . . . . . . . . . . . 15 | 3.2. SIG(0) signature validation . . . . . . . . . . . . . . . 16 | |||
6. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 15 | 3.3. Required Signature Algorithm . . . . . . . . . . . . . . 16 | |||
7. Acknowledgments . . . . . . . . . . . . . . . . . . . . . . . 16 | 4. Privacy Considerations . . . . . . . . . . . . . . . . . . . 16 | |||
8. References . . . . . . . . . . . . . . . . . . . . . . . . . 16 | 5. Delegation of 'services.arpa.' . . . . . . . . . . . . . . . 16 | |||
8.1. Normative References . . . . . . . . . . . . . . . . . . 16 | 6. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 17 | |||
8.2. Informative References . . . . . . . . . . . . . . . . . 17 | 6.1. Registration and Delegation of 'services.arpa' as a | |||
Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . . 18 | Special-Use Domain Name . . . . . . . . . . . . . . . . . 17 | |||
6.2. 'dnssd-srp' Service Name . . . . . . . . . . . . . . . . 17 | ||||
6.3. Anycast Address . . . . . . . . . . . . . . . . . . . . . 17 | ||||
7. Acknowledgments . . . . . . . . . . . . . . . . . . . . . . . 17 | ||||
8. References . . . . . . . . . . . . . . . . . . . . . . . . . 18 | ||||
8.1. Normative References . . . . . . . . . . . . . . . . . . 18 | ||||
8.2. Informative References . . . . . . . . . . . . . . . . . 19 | ||||
Appendix A. Sample BIND9 configuration for | ||||
default.services.arpa. . . . . . . . . . . . . . . . 20 | ||||
Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . . 21 | ||||
1. Introduction | 1. Introduction | |||
DNS-Based Service Discovery [RFC6763] is a component of Zero | DNS-Based Service Discovery [RFC6763] is a component of Zero | |||
Configuration Networking [RFC6760] [ZC] [I-D.cheshire-dnssd-roadmap]. | Configuration Networking [RFC6760] [ZC] [I-D.cheshire-dnssd-roadmap]. | |||
This document describes an enhancement to DNS-Based Service Discovery | This document describes an enhancement to DNS-Based Service Discovery | |||
[RFC6763] that allows services to automatically register their | [RFC6763] that allows services to automatically register their | |||
services using the DNS protocol rather than using Multicast DNS | services using the DNS protocol rather than using Multicast DNS | |||
[RFC6762] (mDNS). There is already a large installed base of DNS-SD | [RFC6762] (mDNS). There is already a large installed base of DNS-SD | |||
clients that can do service discovery using the DNS protocol. This | clients that can discover services using the DNS protocol. This | |||
extension makes it much easier to take advantage of this existing | extension makes it much easier to take advantage of this existing | |||
functionality. | functionality. | |||
This document is intended for three audiences: implementors of | This document is intended for three audiences: implementors of | |||
software that provides services that should be advertised using DNS- | software that provides services that should be advertised using | |||
SD, implementors of DNS servers that will be used in contexts where | DNS-SD, implementors of DNS servers that will be used in contexts | |||
DNS-SD registration is needed, and administrators of networks where | where DNS-SD registration is needed, and administrators of networks | |||
DNS-SD service is required. The document is intended to provide | where DNS-SD service is required. The document is intended to | |||
sufficient information to allow interoperable implementation of the | provide sufficient information to allow interoperable implementation | |||
registration protocol. | of the registration protocol. | |||
DNS-Based Service Discovery (DNS-SD) allows services to advertise the | DNS-Based Service Discovery (DNS-SD) allows services to advertise the | |||
fact that they provide service, and to provide the information | fact that they provide service, and to provide the information | |||
required to access that service. Clients can then discover the set | required to access that service. Clients can then discover the set | |||
of services of a particular type that are available. They can then | of services of a particular type that are available. They can then | |||
select a service from among those that are available and obtain the | select a service from among those that are available and obtain the | |||
information required to use it. | information required to use it. | |||
The Service Registration Protocol for DNS-SD (SRP), described in this | The Service Registration Protocol for DNS-SD (SRP), described in this | |||
document, provides a reasonably secure mechanism for publishing this | document, provides a reasonably secure mechanism for publishing this | |||
skipping to change at page 4, line 37 ¶ | skipping to change at page 4, line 45 ¶ | |||
means appropriate to the particular use case being addressed. Full- | means appropriate to the particular use case being addressed. Full- | |||
featured devices construct the names of the SRV, TXT, and PTR records | featured devices construct the names of the SRV, TXT, and PTR records | |||
describing their service(s) as subdomains of the chosen service | describing their service(s) as subdomains of the chosen service | |||
registration domain. For these names they then discover the zone | registration domain. For these names they then discover the zone | |||
apex of the closest enclosing DNS zone using SOA queries | apex of the closest enclosing DNS zone using SOA queries | |||
[I-D.ietf-dnssd-push]. Having discovered the enclosing DNS zone, | [I-D.ietf-dnssd-push]. Having discovered the enclosing DNS zone, | |||
they query for the "_dnssd-srp._tcp<zone>" SRV record to discover the | they query for the "_dnssd-srp._tcp<zone>" SRV record to discover the | |||
server to which they should send DNS updates. | server to which they should send DNS updates. | |||
For devices designed for Constrained-Node Networks [RFC7228] some | For devices designed for Constrained-Node Networks [RFC7228] some | |||
simplifications are used. Instead of being configured with (or | simplifications are available. Instead of being configured with (or | |||
discovering) the service registration domain, the (proposed) special- | discovering) the service registration domain, the (proposed) special- | |||
use domain name [RFC6761] "services.arpa" is used. Instead of | use domain name [RFC6761] "default.services.arpa" is used. Instead | |||
learning the server to which they should send DNS updates, a fixed | of learning the server to which they should send DNS updates, a fixed | |||
IPv6 anycast address is used (value TBD). Anycasts are sent using | IPv6 anycast address is used (value TBD). Anycasts are sent using | |||
UDP unless TCP is required due to the size of the update. It is the | UDP unless TCP is required due to the size of the update. It is the | |||
responsibility of a Constrained-Node Network supporting SRP to | responsibility of a Constrained-Node Network supporting SRP to | |||
provide appropriate anycast routing to deliver the DNS updates to the | provide appropriate anycast routing to deliver the DNS updates to the | |||
appropriate server. It is the responsibility of the SRP server | appropriate server. It is the responsibility of the SRP server | |||
supporting a Constrained-Node Network to handle the updates | supporting a Constrained-Node Network to handle the updates | |||
appropriately. In some network environments, updates may be accepted | appropriately. In some network environments, updates may be accepted | |||
directly into a local "services.arpa" zone, which has only local | directly into a local "default.services.arpa" zone, which has only | |||
visibility. In other network environments, updates for names ending | local visibility. In other network environments, updates for names | |||
in "services.arpa" may be rewritten internally to names with broader | ending in "default.services.arpa" may be rewritten internally to | |||
visibility. | names with broader visibility. | |||
The reason for these different assumptions is that Constrained-Node | The reason for these different assumptions is that Constrained-Node | |||
Networks generally require special egress support, and Anycast | Networks generally require special egress support, and Anycast | |||
packets captured at the Constrained-Node Network egress can be | packets captured at the Constrained-Node Network egress can be | |||
assumed to have originated locally. Low-power devices that typically | assumed to have originated locally. Low-power devices that typically | |||
use Constrained-Node Networks may have very limited battery power. | use Constrained-Node Networks may have very limited battery power. | |||
The additional DNS lookups required to discover an SRP server and | The additional DNS lookups required to discover an SRP server and | |||
then communicate with it will increase the power required to | then communicate with it will increase the power required to | |||
advertise a service; for low-power devices, the additional | advertise a service; for low-power devices, the additional | |||
flexibility this provides does not justify the additional use of | flexibility this provides does not justify the additional use of | |||
skipping to change at page 6, line 24 ¶ | skipping to change at page 6, line 33 ¶ | |||
2.2. Where to publish it | 2.2. Where to publish it | |||
Multicast DNS uses a single namespace, ".local", which is valid on | Multicast DNS uses a single namespace, ".local", which is valid on | |||
the local link. This convenience is not available for DNS-SD using | the local link. This convenience is not available for DNS-SD using | |||
the DNS protocol: services must exist in some specific unicast | the DNS protocol: services must exist in some specific unicast | |||
namespace. | namespace. | |||
As described above, full-featured devices are responsible for knowing | As described above, full-featured devices are responsible for knowing | |||
in what domain they should register their services. Devices made for | in what domain they should register their services. Devices made for | |||
Constrained-Node Networks register in the (proposed) special use | Constrained-Node Networks register in the (proposed) special use | |||
domain name [RFC6761] "services.arpa", and let the SRP server handle | domain name [RFC6761] "default.services.arpa", and let the SRP server | |||
rewriting that to a different domain if necessary. | handle rewriting that to a different domain if necessary. | |||
2.3. How to publish it | 2.3. How to publish it | |||
It is possible to issue a DNS Update that does several things at | It is possible to issue a DNS Update that does several things at | |||
once; this means that it's possible to do all the work of adding a | once; this means that it's possible to do all the work of adding a | |||
PTR resource record to the PTR RRset on the Service Name if it | PTR resource record to the PTR RRset on the Service Name if it | |||
already exists, or creating one if it doesn't, and creating or | already exists, or creating one if it doesn't, and creating or | |||
updating the Service Instance Name and Host Description in a single | updating the Service Instance Name and Host Description in a single | |||
transaction. | transaction. | |||
skipping to change at page 7, line 16 ¶ | skipping to change at page 7, line 25 ¶ | |||
DNS Update | DNS Update | |||
DNS-SD Service Registration is based on standard RFC2136 DNS Update, | DNS-SD Service Registration is based on standard RFC2136 DNS Update, | |||
with some differences: | with some differences: | |||
o It implements first-come first-served name allocation, protected | o It implements first-come first-served name allocation, protected | |||
using SIG(0) [RFC2931]. | using SIG(0) [RFC2931]. | |||
o It enforces policy about what updates are allowed. | o It enforces policy about what updates are allowed. | |||
o It optionally performs rewriting of "services.arpa" to some other | o It optionally performs rewriting of "default.services.arpa" to | |||
domain. | some other domain. | |||
o It optionally performs automatic population of the address-to-name | o It optionally performs automatic population of the address-to-name | |||
reverse mapping domains. | reverse mapping domains. | |||
o An SRP server is not required to implement general DNS Update | o An SRP server is not required to implement general DNS Update | |||
prerequsite processing. | prerequsite processing. | |||
o Simplified clients are allowed to send updates to an anycast | o Simplified clients are allowed to send updates to an anycast | |||
address, for names ending in "services.arpa" | address, for names ending in "default.services.arpa" | |||
2.3.2. Testing using standard RFC2136-compliant servers | 2.3.2. Testing using standard RFC2136-compliant servers | |||
It may be useful to set up a DNS server for testing that does not | It may be useful to set up a DNS server for testing that does not | |||
implement SRP. This can be done by configuring the server to listen | implement SRP. This can be done by configuring the server to listen | |||
on the anycast address, or advertising it in the _dnssd-srp._tcp SRV | on the anycast address, or advertising it in the | |||
record. It must be configured to be authoritative for | _dnssd-srp._tcp.<zone> SRV record. It must be configured to be | |||
"services.arpa", and to accept updates from hosts on local networks | authoritative for "default.services.arpa", and to accept updates from | |||
for names under "services.arpa" without authentication, since such | hosts on local networks for names under "default.services.arpa" | |||
servers will not have support for FCFS authentication Section 2.4.1. | without authentication, since such servers will not have support for | |||
FCFS authentication Section 2.4.1. | ||||
A server configured in this way will be able to successfully accept | A server configured in this way will be able to successfully accept | |||
and process SRP updates from services that send SRP updates. | and process SRP updates from services that send SRP updates. | |||
However, no constraints will be applied, and this means that the test | However, no constraints will be applied, and this means that the test | |||
server will accept internally inconsistent SRP updates, and will not | server will accept internally inconsistent SRP updates, and will not | |||
stop two SRP updates, sent by different services, that claim the same | stop two SRP updates, sent by different services, that claim the same | |||
name(s), from overwriting each other. | name(s), from overwriting each other. | |||
Since SRP updates are signed with keys, validation of the SIG(0) | ||||
algorithm used by the client can be done by manually installing the | ||||
client public key on the DNS server that will be receiving the | ||||
updates. The key can then be used to authenticate the client, and | ||||
can be used as a requirement for the update. An example | ||||
configuration for testing SRP using BIND 9 is given in Appendix A. | ||||
2.3.3. How to allow services to update standard RFC2136-compliant | 2.3.3. How to allow services to update standard RFC2136-compliant | |||
servers | servers | |||
Ordinarily SRP updates will fail when sent to an RFC 2136-compliant | Ordinarily SRP updates will fail when sent to an RFC 2136-compliant | |||
server that does not implement SRP because the zone being updated is | server that does not implement SRP because the zone being updated is | |||
"services.arpa", and no DNS server that is not an SRP server should | "default.services.arpa", and no DNS server that is not an SRP server | |||
normally be configured to be authoritative for "services.arpa". | should normally be configured to be authoritative for | |||
Therefore, a service that sends an SRP update can tell that the | "default.services.arpa". Therefore, a service that sends an SRP | |||
receiving server does not support SRP, but does support RFC2136, | update can tell that the receiving server does not support SRP, but | |||
because the RCODE will either be NOTZONE, NOTAUTH or REFUSED, or | does support RFC2136, because the RCODE will either be NOTZONE, | |||
because there is no response to the update request (when using the | NOTAUTH or REFUSED, or because there is no response to the update | |||
anycast address) | request (when using the anycast address) | |||
In this case a service MAY attempt to register itself using regular | In this case a service MAY attempt to register itself using regular | |||
RFC2136 DNS updates. To do so, it must discover the default | RFC2136 DNS updates. To do so, it must discover the default | |||
registration zone and the DNS server designated to receive updates | registration zone and the DNS server designated to receive updates | |||
for that zone, as described earlier using the _dns-update._udp SRV | for that zone, as described earlier using the _dns-update._udp SRV | |||
record. It can then make the update using the port and host pointed | record. It can then make the update using the port and host pointed | |||
to by the SRV record, and should use appropriate constraints to avoid | to by the SRV record, and should use appropriate constraints to avoid | |||
overwriting competing records. Such updates are out of scope for | overwriting competing records. Such updates are out of scope for | |||
SRP, and a service that implements SRP MUST first attempt to use SRP | SRP, and a service that implements SRP MUST first attempt to use SRP | |||
to register itself, and should only attempt to use RFC2136 backwards | to register itself, and should only attempt to use RFC2136 backwards | |||
skipping to change at page 8, line 43 ¶ | skipping to change at page 9, line 13 ¶ | |||
describe here improves upon the security of mDNS. The goal is not to | describe here improves upon the security of mDNS. The goal is not to | |||
provide the level of security of a network managed by a skilled | provide the level of security of a network managed by a skilled | |||
operator. | operator. | |||
2.4.1. First-Come First-Served Naming | 2.4.1. First-Come First-Served Naming | |||
First-Come First-Serve naming provides a limited degree of security: | First-Come First-Serve naming provides a limited degree of security: | |||
a service that registers its service using DNS-SD Registration | a service that registers its service using DNS-SD Registration | |||
protocol is given ownership of a name for an extended period of time | protocol is given ownership of a name for an extended period of time | |||
based on the key used to authenticate the DNS Update. As long as the | based on the key used to authenticate the DNS Update. As long as the | |||
registration service remembers thename and the key used to register | registration service remembers the name and the key used to register | |||
that name, no other service can add or update the information | that name, no other service can add or update the information | |||
associated with that. FCFS naming is used to protect both the | associated with that. FCFS naming is used to protect both the | |||
Service Description and the Host Description. | Service Description and the Host Description. | |||
2.4.1.1. Service Behavior | 2.4.1.1. Service Behavior | |||
The service generates a public/private key pair. This key pair MUST | The service generates a public/private key pair. This key pair MUST | |||
be stored in stable storage; if there is no writable stable storage | be stored in stable storage; if there is no writable stable storage | |||
on the client, the client MUST be pre-configured with a public/ | on the client, the client MUST be pre-configured with a public/ | |||
private key pair in read-only storage that can be used. This key | private key pair in read-only storage that can be used. This key | |||
pair MUST be unique to the device. | pair MUST be unique to the device. | |||
When sending DNS updates, the service includes a KEY record | When sending DNS updates, the service includes a KEY record | |||
containing the public portion of the key in each Host Description | containing the public portion of the key in each Host Description | |||
update and each Service Description update. Each KEY record MUST | update and each Service Description update. Each KEY record MUST | |||
contain the same public key. The update is signed using SIG(0), | contain the same public key. The update is signed using SIG(0), | |||
using the private key that corresponds to the public key in the KEY | using the private key that corresponds to the public key in the KEY | |||
record. The lifetimes of the records in the update is set using the | record. The lifetimes of the records in the update is set using the | |||
EDNS(0) Update Lease option [I-D.sekar-dns-ul]. | EDNS(0) Update Lease option [I-D.sekar-dns-ul]. | |||
The KEY record in service description updates MAY be omitted for | ||||
brevity; if it is omitted, the SRP server MUST behave as if the same | ||||
KEY record that is given for the Host Description is also given for | ||||
each Service Description for which no KEY record is provided. | ||||
Omitted KEY records are not used when computing the SIG(0) signature. | ||||
The lifetime of the DNS-SD PTR, SRV, A, AAAA and TXT records | The lifetime of the DNS-SD PTR, SRV, A, AAAA and TXT records | |||
[RFC6763] uses the LEASE field of the Update Lease option, and is | [RFC6763] uses the LEASE field of the Update Lease option, and is | |||
typically set to two hours. This means that if a device is | typically set to two hours. This means that if a device is | |||
disconnected from the network, it does not appear in the user | disconnected from the network, it does not appear in the user | |||
interfaces of devices looking for services of that type for too long. | interfaces of devices looking for services of that type for too long. | |||
The lifetime of the KEY records is set using the KEY-LEASE field of | The lifetime of the KEY records is set using the KEY-LEASE field of | |||
the Update Lease Option, and should be set to a much longer time, | the Update Lease Option, and should be set to a much longer time, | |||
typically 14 days. The result of this is that even though a device | typically 14 days. The result of this is that even though a device | |||
may be temporarily unplugged, disappearing from the network for a few | may be temporarily unplugged, disappearing from the network for a few | |||
skipping to change at page 10, line 19 ¶ | skipping to change at page 10, line 40 ¶ | |||
o which points to a Service Instance Name | o which points to a Service Instance Name | |||
o for which an update is present in the SRP update. | o for which an update is present in the SRP update. | |||
o Service Discovery updates do not contain any deletes, and do not | o Service Discovery updates do not contain any deletes, and do not | |||
contain any other updates. | contain any other updates. | |||
An update is a Service Description update if, for the appropriate | An update is a Service Description update if, for the appropriate | |||
Service Instance Name, it contains | Service Instance Name, it contains | |||
o exactly one "Delete all RRsets from a name" update, | o exactly one "Delete all RRsets from a name" update, | |||
o exactly one SRV RRset update, | o exactly one SRV RRset update, | |||
o exactly one KEY RR update that adds a KEY RR that contains the | o zero or one KEY RR update that adds a KEY RR that contains the | |||
public key corresponding to the private key that was used to sign | public key corresponding to the private key that was used to sign | |||
the message, | the message (if present, the KEY MUST match the KEY RR given in | |||
the Host Description), | ||||
o one or more TXT RRset updates, | o one or more TXT RRset updates, | |||
o and the target of the SRV record update references a hostname for | o and the target of the SRV record update references a hostname for | |||
which there is a Host Description update in the SRP update. | which there is a Host Description update in the SRP update. | |||
o Service Descriptions do not update any other records. | o Service Descriptions do not update any other records. | |||
An update is a Host Description update if, for the appropriate | An update is a Host Description update if, for the appropriate | |||
hostname, it contains | hostname, it contains | |||
o exactly one "Delete all RRsets from a name" update, | o exactly one "Delete all RRsets from a name" update, | |||
o one or more A or AAAA RR update(s) | o one or more A or AAAA RR update(s) | |||
skipping to change at page 11, line 13 ¶ | skipping to change at page 11, line 35 ¶ | |||
that contains an update to a Service Name and an update to a Service | that contains an update to a Service Name and an update to a Service | |||
Instance Name, where the Service Name does not reference the Service | Instance Name, where the Service Name does not reference the Service | |||
Instance Name, is not a valid SRP update message, but may be a valid | Instance Name, is not a valid SRP update message, but may be a valid | |||
RFC2136 update. | RFC2136 update. | |||
Assuming that an update message has been validated with these | Assuming that an update message has been validated with these | |||
conditions and is a valid SRP update, the server checks that the name | conditions and is a valid SRP update, the server checks that the name | |||
in the Host Description update exists. If so, then the server checks | in the Host Description update exists. If so, then the server checks | |||
to see if the KEY record on the name is the same as the KEY record in | to see if the KEY record on the name is the same as the KEY record in | |||
the update. The server performs the same check for the KEY records | the update. The server performs the same check for the KEY records | |||
in any Service Description update. If any existing KEY record | in any Service Description update. For KEY records that were | |||
corresponding to a KEY record in the SRP update does not match the | omitted, the KEY from the Host Description update is used. If any | |||
KEY record in the SRP update, then the server MUST reject the SRP | existing KEY record corresponding to a KEY record in the SRP update | |||
update with the YXDOMAIN RCODE. | does not match the KEY record in the SRP update, then the server MUST | |||
reject the SRP update with the YXDOMAIN RCODE. | ||||
Otherwise, the server validates the SRP update using SIG(0) on the | Otherwise, the server validates the SRP update using SIG(0) on the | |||
public key in the KEY record of the Host Description update. If the | public key in the KEY record of the Host Description update. If the | |||
validation fails, the server MUST reject the SRP Update with the | validation fails, the server MUST reject the SRP Update with the | |||
REFUSED RCODE. Otherwise, the SRP update is considered valid and | REFUSED RCODE. Otherwise, the SRP update is considered valid and | |||
authentic, and is processed according to the method described in | authentic, and is processed according to the method described in | |||
RFC2136. The status that is returned depends on the result of | RFC2136. | |||
processing the update. | ||||
KEY record updates omitted from Service Description update are | ||||
processed as if they had been explicitly present: every Service | ||||
Description that is updated MUST, after the update, have a KEY RR, | ||||
and it must be the same KEY RR that is present in the Host | ||||
Description to which the Service Description refers. | ||||
The status that is returned depends on the result of processing the | ||||
update, and can be either SUCCESS or SERVFAIL: all other possible | ||||
outcomes should already have been accounted for when applying the | ||||
constraints. | ||||
The server MAY add a Reverse Mapping that corresponds to the Host | The server MAY add a Reverse Mapping that corresponds to the Host | |||
Description. This is not required because the Reverse Mapping serves | Description. This is not required because the Reverse Mapping serves | |||
no protocol function, but it may be useful for debugging, e.g. in | no protocol function, but it may be useful for debugging, e.g. in | |||
annotating network packet traces or logs. | annotating network packet traces or logs. | |||
The server MAY apply additional criteria when accepting updates. In | The server MAY apply additional criteria when accepting updates. In | |||
some networks, it may be possible to do out-of-band registration of | some networks, it may be possible to do out-of-band registration of | |||
keys, and only accept updates from pre-registered keys. In this | keys, and only accept updates from pre-registered keys. In this | |||
case, an update for a key that has not been registered should be | case, an update for a key that has not been registered should be | |||
skipping to change at page 14, line 49 ¶ | skipping to change at page 15, line 37 ¶ | |||
dealing with sleep and wakeup. An SRP registration for such a device | dealing with sleep and wakeup. An SRP registration for such a device | |||
will be useful regardless of the mechanism whereby messages are | will be useful regardless of the mechanism whereby messages are | |||
delivered to the sleepy end device. For example, the message might | delivered to the sleepy end device. For example, the message might | |||
be held in a buffer for an extended period of time by an intermediate | be held in a buffer for an extended period of time by an intermediate | |||
device on a mesh network, and then delivered to the device when it | device on a mesh network, and then delivered to the device when it | |||
wakes up. The exact details of such behaviors are out of scope for | wakes up. The exact details of such behaviors are out of scope for | |||
this document. | this document. | |||
3. Security Considerations | 3. Security Considerations | |||
3.1. Source Validation | ||||
SRP updates have no authorization semantics other than first-come, | SRP updates have no authorization semantics other than first-come, | |||
first-served. This means that if an attacker from outside of the | first-served. This means that if an attacker from outside of the | |||
administrative domain of the server knows the server's IP address, it | administrative domain of the server knows the server's IP address, it | |||
can in principle send updates to the server that will be processed | can in principle send updates to the server that will be processed | |||
successfully. Servers should therefore be configured to reject | successfully. Servers should therefore be configured to reject | |||
updates from source addresses outside of the administrative domain of | updates from source addresses outside of the administrative domain of | |||
the server. | the server. | |||
For Anycast updates, this validation must be enforced by every router | For Anycast updates, this validation must be enforced by every router | |||
that connects the Constrained-Device Network to the unconstrained | that connects the Constrained-Device Network to the unconstrained | |||
skipping to change at page 15, line 32 ¶ | skipping to change at page 16, line 22 ¶ | |||
For example, a normal, authenticated RFC2136 update to any RR that | For example, a normal, authenticated RFC2136 update to any RR that | |||
was added using SRP, but that is authenticated using a different key, | was added using SRP, but that is authenticated using a different key, | |||
could be used to override a promise made by the registration | could be used to override a promise made by the registration | |||
protocol, by replacing all or part of the service registration | protocol, by replacing all or part of the service registration | |||
information with information provided by a different client. An | information with information provided by a different client. An | |||
implementation that allows both kinds of updates should not allow | implementation that allows both kinds of updates should not allow | |||
updates to records added by SRP updates using different | updates to records added by SRP updates using different | |||
authentication and authorization credentials. | authentication and authorization credentials. | |||
3.2. SIG(0) signature validation | ||||
This specification does not provide a mechanism for validating | ||||
responses from DNS servers to SRP clients. In the case of | ||||
Constrained Network/Constrained Node clients, such validation isn't | ||||
practical because there's no way to establish trust. In principle, a | ||||
KEY RR could be used by a non-constrained SRP client to validate | ||||
responses from the server, but this is not required, nor do we | ||||
specify a mechanism for determining which key to use. | ||||
3.3. Required Signature Algorithm | ||||
For validation, SRP Servers MUST implement the ECDSAP256SHA256 | ||||
signature algorithm. SRP servers SHOULD implement the algorithms | ||||
specified in [I-D.ietf-dnsop-algorithm-update] section 3.1, in the | ||||
validation column of the table, starting with algorithm number 13. | ||||
SRP clients MUST NOT assume that any algorithm numbered lower than 13 | ||||
is available for use in validating SIG(0) signatures. | ||||
4. Privacy Considerations | 4. Privacy Considerations | |||
5. Delegation of 'services.arpa.' | 5. Delegation of 'services.arpa.' | |||
In order to be fully functional, there must be a delegation of | In order to be fully functional, there must be a delegation of | |||
'services.arpa.' in the '.arpa.' zone [RFC3172]. This delegation | 'services.arpa.' in the '.arpa.' zone [RFC3172]. This delegation | |||
should be set up as was done for 'home.arpa', as a result of the | should be set up as was done for 'home.arpa', as a result of the | |||
specification in [RFC8375]Section 7. | specification in [RFC8375]Section 7. | |||
6. IANA Considerations | 6. IANA Considerations | |||
6.1. Registration and Delegation of 'services.arpa' as a Special-Use | ||||
Domain Name | ||||
IANA is requested to record the domain name 'services.arpa.' in the | IANA is requested to record the domain name 'services.arpa.' in the | |||
Special-Use Domain Names registry [SUDN]. IANA is requested, with | Special-Use Domain Names registry [SUDN]. IANA is requested, with | |||
the approval of IAB, to implement the delegation requested in | the approval of IAB, to implement the delegation requested in | |||
Section 5. | Section 5. | |||
IANA is further requested to add a new entry to the "Transport- | IANA is further requested to add a new entry to the "Transport- | |||
Independent Locally-Served Zones" subregistry of the the "Locally- | Independent Locally-Served Zones" subregistry of the the "Locally- | |||
Served DNS Zones" registry[LSDZ]. The entry will of for | Served DNS Zones" registry[LSDZ]. The entry will be for the domain | |||
'services.arpa.' with the description "DNS-SD Registration Protocol | 'services.arpa.' with the description "DNS-SD Registration Protocol | |||
Special-Use Domain", listing this document as the reference. | Special-Use Domain", listing this document as the reference. | |||
6.2. 'dnssd-srp' Service Name | ||||
IANA is also requested to add a new entry to the Service Names and | IANA is also requested to add a new entry to the Service Names and | |||
Port Numbers registry for dnssd-srp with a transport type of tcp. No | Port Numbers registry for dnssd-srp with a transport type of tcp. No | |||
port number is to be assigned. The reference should be to this | port number is to be assigned. The reference should be to this | |||
document, and the Assignee and Contact information should reference | document, and the Assignee and Contact information should reference | |||
the authors of this document. The Description should be as follows: | the authors of this document. The Description should be as follows: | |||
Availability of DNS Service Discovery Service Registration Protocol | Availability of DNS Service Discovery Service Registration Protocol | |||
Service for a given domain is advertised using the "_dnssd- | Service for a given domain is advertised using the | |||
srp._tcp.<domain>." SRV record gives the target host and port where | "_dnssd-srp._tcp.<domain>." SRV record gives the target host and | |||
DNSSD Service Registration Service is provided for the named domain. | port where DNSSD Service Registration Service is provided for the | |||
named domain. | ||||
6.3. Anycast Address | ||||
IANA is requested to allocate an IPv6 Anycast address from the IPv6 | ||||
Special-Purpose Address Registry, similar to the Port Control | ||||
Protocol anycast address, 2001:1::1. This address is referred to | ||||
within the document as TBD1, and the document should be updated to | ||||
reflect the address that was allocated. | ||||
7. Acknowledgments | 7. Acknowledgments | |||
Thanks to Toke Hoeiland-Joergensen for a thorough technical review, | Thanks to Toke Hoeiland-Joergensen for a thorough technical review, | |||
to Tamara Kemper for doing a nice developmental edit, Tim Wattenberg | to Tamara Kemper for doing a nice developmental edit, Tim Wattenberg | |||
for doing a service implementation at the Montreal Hackathon at IETF | for doing a service implementation at the Montreal Hackathon at IETF | |||
102, Tom Pusateri for reviewing during the hackathon and afterwards, | 102, Tom Pusateri for reviewing during the hackathon and afterwards, | |||
and [...] more reviewers to come, hopefully. | and [...] more reviewers to come, hopefully. | |||
8. References | 8. References | |||
skipping to change at page 17, line 9 ¶ | skipping to change at page 18, line 35 ¶ | |||
[RFC8106] Jeong, J., Park, S., Beloeil, L., and S. Madanapalli, | [RFC8106] Jeong, J., Park, S., Beloeil, L., and S. Madanapalli, | |||
"IPv6 Router Advertisement Options for DNS Configuration", | "IPv6 Router Advertisement Options for DNS Configuration", | |||
RFC 8106, DOI 10.17487/RFC8106, March 2017, | RFC 8106, DOI 10.17487/RFC8106, March 2017, | |||
<https://www.rfc-editor.org/info/rfc8106>. | <https://www.rfc-editor.org/info/rfc8106>. | |||
[RFC8375] Pfister, P. and T. Lemon, "Special-Use Domain | [RFC8375] Pfister, P. and T. Lemon, "Special-Use Domain | |||
'home.arpa.'", RFC 8375, DOI 10.17487/RFC8375, May 2018, | 'home.arpa.'", RFC 8375, DOI 10.17487/RFC8375, May 2018, | |||
<https://www.rfc-editor.org/info/rfc8375>. | <https://www.rfc-editor.org/info/rfc8375>. | |||
[I-D.ietf-dnsop-algorithm-update] | ||||
Wouters, P. and O. Sury, "Algorithm Implementation | ||||
Requirements and Usage Guidance for DNSSEC", draft-ietf- | ||||
dnsop-algorithm-update-06 (work in progress), February | ||||
2019. | ||||
[SUDN] "Special-Use Domain Names Registry", July 2012, | [SUDN] "Special-Use Domain Names Registry", July 2012, | |||
<https://www.iana.org/assignments/special-use-domain- | <https://www.iana.org/assignments/special-use-domain- | |||
names/special-use-domain-names.xhtml>. | names/special-use-domain-names.xhtml>. | |||
[LSDZ] "Locally-Served DNS Zones Registry", July 2011, | [LSDZ] "Locally-Served DNS Zones Registry", July 2011, | |||
<https://www.iana.org/assignments/locally-served-dns- | <https://www.iana.org/assignments/locally-served-dns- | |||
zones/locally-served-dns-zones.xhtml>. | zones/locally-served-dns-zones.xhtml>. | |||
8.2. Informative References | 8.2. Informative References | |||
skipping to change at page 18, line 30 ¶ | skipping to change at page 20, line 17 ¶ | |||
DOI 10.17487/RFC7228, May 2014, | DOI 10.17487/RFC7228, May 2014, | |||
<https://www.rfc-editor.org/info/rfc7228>. | <https://www.rfc-editor.org/info/rfc7228>. | |||
[I-D.ietf-dnssd-hybrid] | [I-D.ietf-dnssd-hybrid] | |||
Cheshire, S., "Discovery Proxy for Multicast DNS-Based | Cheshire, S., "Discovery Proxy for Multicast DNS-Based | |||
Service Discovery", draft-ietf-dnssd-hybrid-08 (work in | Service Discovery", draft-ietf-dnssd-hybrid-08 (work in | |||
progress), March 2018. | progress), March 2018. | |||
[I-D.ietf-dnssd-push] | [I-D.ietf-dnssd-push] | |||
Pusateri, T. and S. Cheshire, "DNS Push Notifications", | Pusateri, T. and S. Cheshire, "DNS Push Notifications", | |||
draft-ietf-dnssd-push-15 (work in progress), September | draft-ietf-dnssd-push-17 (work in progress), March 2019. | |||
2018. | ||||
[I-D.cheshire-dnssd-roadmap] | [I-D.cheshire-dnssd-roadmap] | |||
Cheshire, S., "Service Discovery Road Map", draft- | Cheshire, S., "Service Discovery Road Map", draft- | |||
cheshire-dnssd-roadmap-02 (work in progress), October | cheshire-dnssd-roadmap-03 (work in progress), October | |||
2018. | 2018. | |||
[I-D.cheshire-edns0-owner-option] | [I-D.cheshire-edns0-owner-option] | |||
Cheshire, S. and M. Krochmal, "EDNS0 OWNER Option", draft- | Cheshire, S. and M. Krochmal, "EDNS0 OWNER Option", draft- | |||
cheshire-edns0-owner-option-01 (work in progress), July | cheshire-edns0-owner-option-01 (work in progress), July | |||
2017. | 2017. | |||
[ZC] Cheshire, S. and D. Steinberg, "Zero Configuration | [ZC] Cheshire, S. and D. Steinberg, "Zero Configuration | |||
Networking: The Definitive Guide", O'Reilly Media, Inc. , | Networking: The Definitive Guide", O'Reilly Media, Inc. , | |||
ISBN 0-596-10100-7, December 2005. | ISBN 0-596-10100-7, December 2005. | |||
Appendix A. Sample BIND9 configuration for default.services.arpa. | ||||
zone "default.services.arpa." { | ||||
type master; | ||||
file "/etc/bind/master/service.db"; | ||||
allow-update { key demo.default.services.arpa.; }; | ||||
}; | ||||
Zone Configuration in named.conf | ||||
$ORIGIN . | ||||
$TTL 57600 ; 16 hours | ||||
default.services.arpa IN SOA ns3.default.services.arpa. postmaster.default.services.arpa. ( | ||||
2951053287 ; serial | ||||
3600 ; refresh (1 hour) | ||||
1800 ; retry (30 minutes) | ||||
604800 ; expire (1 week) | ||||
3600 ; minimum (1 hour) | ||||
) | ||||
NS ns3.default.services.arpa. | ||||
SRV 0 0 53 ns3.default.services.arpa. | ||||
$ORIGIN default.services.arpa. | ||||
$TTL 3600 ; 1 hour | ||||
_ipps._tcp PTR demo._ipps._tcp | ||||
$ORIGIN _ipps._tcp.default.services.arpa. | ||||
demo TXT "0" | ||||
SRV 0 0 9992 demo.default.services.arpa. | ||||
$ORIGIN _udp.default.services.arpa. | ||||
$TTL 3600 ; 1 hour | ||||
_dns-update PTR ns3.default.services.arpa. | ||||
$ORIGIN _tcp.default.services.arpa. | ||||
_dnssd-srp PTR ns3.default.services.arpa. | ||||
$ORIGIN default.services.arpa. | ||||
$TTL 300 ; 5 minutes | ||||
ns3 AAAA 2001:db8:0:1::1 | ||||
$TTL 3600 ; 1 hour | ||||
demo AAAA 2001:db8:0:2::1 | ||||
KEY 513 3 13 ( | ||||
qweEmaaq0FAWok5//ftuQtZgiZoiFSUsm0srWREdywQU | ||||
9dpvtOhrdKWUuPT3uEFF5TZU6B4q1z1I662GdaUwqg== | ||||
); alg = ECDSAP256SHA256 ; key id = 15008 | ||||
AAAA ::1 | ||||
Example Zone file | ||||
Authors' Addresses | Authors' Addresses | |||
Stuart Cheshire | Stuart Cheshire | |||
Apple Inc. | Apple Inc. | |||
One Apple Park Way | One Apple Park Way | |||
Cupertino, California 95014 | Cupertino, California 95014 | |||
USA | USA | |||
Phone: +1 408 974 3207 | Phone: +1 408 974 3207 | |||
Email: cheshire@apple.com | Email: cheshire@apple.com | |||
Ted Lemon | Ted Lemon | |||
Nibbhaya Consulting | Nibbhaya Consulting | |||
P.O. Box 958 | P.O. Box 958 | |||
Brattleboro, Vermont 05302 | Brattleboro, Vermont 05302 | |||
United States of America | United States of America | |||
Email: mellon@fugue.com | Email: mellon@fugue.com | |||
End of changes. 38 change blocks. | ||||
76 lines changed or deleted | 196 lines changed or added | |||
This html diff was produced by rfcdiff 1.47. The latest version is available from http://tools.ietf.org/tools/rfcdiff/ |