Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
101 changes: 56 additions & 45 deletions draft-dnsop-deleg-transport.md
Original file line number Diff line number Diff line change
Expand Up @@ -104,76 +104,82 @@ contributor:

--- abstract

This document extends DELEG record, and SVCB records pointed to by DELEG record, as defined in {{?I-D.draft-dnsop-deleg}}, with ability to specify transport protocols and authentication parameters supported by name servers.
This document extends the DNS DELEG record, and SVCB records pointed to by the DELEG record, as defined in {{?I-D.draft-dnsop-deleg}}, with the ability to specify transport protocols and authentication parameters supported by nameservers.

--- middle

# Introduction

The new delegation mechanism based on DELEG record type allows to specify attributes a resolver can use when talking to a delegated authority. This document introduces parameters specific to different transport mechanism than the default udp/53 protocol.
The new Domain Name System delegation mechanism based on the DELEG record type allows an authoritative nameserver to specify attributes a resolver can use when talking to another delegated authority. This document introduces parameters specific to different transport mechanisms than the default DNS protocol transports of udp and tcp to port 53.

Legacy DNS resolvers unaware of DELEG mechanism would continue to use the NS and DS records, while resolvers that understand DELEG and its associated parameters can efficiently switch to new transports.
Legacy DNS resolvers that are unaware of the DELEG mechanism would continue to use the NS and DS records, while resolvers that understand DELEG and its associated parameters can efficiently switch to new transports.

## Terminology

The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT",
"SHOULD", "SHOULD NOT", "RECOMMENDED", "NOT RECOMMENDED", "MAY", and
"OPTIONAL" in this document are to be interpreted as described in \\
"OPTIONAL" in this document are to be interpreted as described in
BCP 14 {{?RFC2119}} {{?RFC8174}} when, and only when, they appear in
all capitals, as shown here.

Terminology regarding the Domain Name System comes from {{?BCP219}}, with addition terms defined here:

* [tbd]
* transport parameters The set of attributes that define how to reach the nameserver specified in a ServiceMode DELEG record.
* [tbd]

## Introductory Examples

To introduce DELEG record with DNS-over-TLS {{?RFC7858}}, this example shows a possible response from an authoritative in the authority section of the DNS response when delegating to another nameserver.

To use a DELEG record to point a resolver to an authority that supports DNS-over-TLS {{?RFC7858}}, this example shows a possible response from an authoritative server in the Authority section of the DNS response:

example.com. 86400 IN DELEG 1 ns2.example.com. (
example.com. 86400 IN DELEG 1 ns2.example.com. (
alpn=dot
tlsa="2 0 1 ABC..."
ipv4hint=192.0.2.54
ipv6hint=2001:db8:2423::3 )
example.com. 86400 IN NS ns1.example.com.
ns1.example.com. 86400 IN A 192.0.2.1
ns1.example.com 86400 IN AAAA 2001:DB8::1
example.com. 86400 IN NS ns1.example.com.

In this example, the authoritative nameserver is delegating using DNS-over-TLS.
Like in SVCB, DELEG also offer the ability to use the AliasMode delegation. The example below shows an example where example.com is being delegated with a DELEG AliasMode record which can then be further resolved using standard SVCB to locate the actual parameters.
The alpn attribute specifies DNS-over-TLS, with the tlsa attribute
providing the necessary cryptographic material to establish the
connection. The ipv4hint and ipv6hint serves the traditional role of
glue, since the ns2 server lives in the example.com zone.

example.com. 86400 IN DELEG 0 config2.example.net.
example.com. 86400 IN NS ns1.example.net.
The Additional section would continue to serve glue records for the
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This is intriguing but I don't quite believe it. DELEG is in the parent zone, and is only retrieved by an explicit query (QTYPE=DELEG). Sure, the parent should serve glue records alongside an NS record Answer, but why should it serve glue records alongside a DELEG Answer?

There's another wrinkle here though: SVCB recommends putting A+AAAA records for TargetName in the Additional section if they are in the same zone, to avoid a followup query. If we apply that to DELEG, it could mean adding A+AAAA records for "ns2.example.com" (in the above example). However, this would be redundant with the IP hints, and it would also be logically different: those A+AAAA records are locally available but they aren't part of this zone.

Bottom line: we should do IP glue or IP hints, but not both. Overall, my preference would be to stick with hints and get rid of the whole concept of glue.

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

is only retrieved by an explicit query (QTYPE=DELEG)

That's not really a settled matter. I still think, pending testing to confirm that for the vast majority of the resolver base, that the real deployment win here is to serve NS, DS and DELEG together for any delegation and NOT require an explicit query for them. We're trying to make the whole business of finding modern auths more efficient, not add more queries.

And I really, really don't think we should be adding addresses for the DELEG names to the Additional section, because something that understands what DELEG is at all should be using the hints.

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

It seems like this is not settled, and is also not relevant to the transport draft. Please remove it or move it to the other draft.

BTW, using QTYPE=DELEG doesn't add queries. It just replaces the "arbitrary" QTYPE in QNAME minimization with a meaningful one. Non-DELEG servers should treat it as an unknown QTYPE and return the NS (and glue) in a delegation response.

nameservers within example.com as well, for the benefit of legacy
resolvers. Note that these could potentially be the same addresses as
are used in the hints of a DELEG record; NS and DELEG are orthogonal.

The example.net authoritative server may return the following SVCB records in response to a query as directed by the above records.
ns1.example.com. 86400 IN A 192.0.2.1
ns1.example.com 86400 IN AAAA 2001:DB8::1

config2.example.net 3600 IN SVCB ns2.example.net. (
alpn=dot
tlsa="2 0 1 ABC..."
ipv4hint=192.0.2.54
ipv6hint=2001:db8:2423::3 )
As with SVCB, DELEG also offer the ability to use AliasMode for a
delegation. The example below shows that example.com is
being delegated with a DELEG AliasMode record which can then be
further resolved using SVCB to locate the actual parameters.

The above records indicate to the client that the actual configuration for the example.com zone can be found at config2.example.net.
example.com. 86400 IN DELEG 0 config2.example.net.
example.com. 86400 IN NS ns1.example.net.

Later sections of this document will go into more detail on the resolution process using these records.
The example.net authoritative server's SVCB record could look like this:

## Goal of the DELEG record
config2.example.net 3600 IN SVCB ns2.example.net. (
alpn=dot
tlsa="2 0 1 ABC..."
ipv4hint=192.0.2.54
ipv6hint=2001:db8:2423::3 )

The primary goal of transport specification in DELEG records is to provide zone owners a way to signal to new clients how to connect to servers serving a child domain that can coexist with NS records in the same zone, and do not break software that does not support new transports.
This document defines in detail the resolution process using these records.

### SvcParams
## SvcParams

All SvcParamKeys for the "dns" scheme {{?9461}} apply as specified. These are the "transport parameters", describing how to reach an endpoint.
All SvcParamKeys for the "dns" scheme from SVCB-DNS {{?RFC9461}} apply as specified. These are the "transport parameters", attributes describing how to reach an endpoint.

The "alpn" transport parameter is OPTIONAL to include (unlike in SVCB-DNS, where it is generally required). If the "alpn" SvcParamKey is omitted, the only available transport is presumed to be unencrypted DNS over UDP/TCP port 53. Endpoints can indicate that insecure transport is not available by specifying "mandatory=alpn".
The "alpn" transport parameter is OPTIONAL to include, unlike in SVCB-DNS, where it is generally required. If the "alpn" SvcParamKey is omitted, the only available transport is presumed to be unencrypted DNS over UDP/TCP port 53. Endpoints can indicate that insecure transport is not available by specifying "mandatory=alpn". [Why do we not require do53 to be explicit?]
Copy link
Contributor

@bemasc bemasc Nov 15, 2023

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Are you arguing that Do53 should be opt-in instead of opt-out? We can certainly structure it that way; the difference seems pretty superficial. I appreciate the current approach as an application of Occam's Razor, but it's possible that "mandatory=alpn" is too obscure or is stretching the "mandatory" semantics too far.

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Yes, I am arguing that if you are using a DELEG record, it should be explicit when you want do53 with it. I don't want really anything assumed.

It doesn't have to be in this draft initially though, since I can argue my case on the list.

(If all you wanted was Legacy DNS then just NS records.)

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
The "alpn" transport parameter is OPTIONAL to include, unlike in SVCB-DNS, where it is generally required. If the "alpn" SvcParamKey is omitted, the only available transport is presumed to be unencrypted DNS over UDP/TCP port 53. Endpoints can indicate that insecure transport is not available by specifying "mandatory=alpn". [Why do we not require do53 to be explicit?]
The "alpn" transport parameter is OPTIONAL to include, unlike in SVCB-DNS, where it is generally required. If the "alpn" SvcParamKey is omitted, the only available transport is presumed to be unencrypted DNS over UDP/TCP port 53. Endpoints can indicate that insecure transport is not available by specifying "mandatory=alpn". [Should we change this to make do53 require a more explicit opt-in?]


When TargetName is below the zone cut, DELEG ServiceMode records MUST include "ipv4hint" or "ipv6hint" SvcParamKeys. These keys provide the address glue, which enables the initial connection to this endpoint.

The following additional DNS SVCB parameters are defined for the DELEG and SVCB ServiceModes.
The following additional SVCB-DNS parameters are defined for the DELEG and SVCB ServiceModes.

#### "tlsa"
### tlsa

The "tlsa" SvcParamKey is a transport parameter representing a TLSA RRset {{?RFC6698}} to be used when connecting to TargetName using a TLS-based transport. If present, this SvcParam SHOULD match the TLSA records whose base domain ({{?RFC6698, Section 3}}) is TargetName. Due to bootstrapping concerns, this SvcParamKey has been added to the DELEG record as the TLSA records might only be resolveable after the initial connection to the delegated nameserver was established. When this field is not present, certificate validation should be performed by either DANE or by traditional TLS certification validation using trusted root certification authorities.

Expand All @@ -186,8 +192,8 @@ To avoid a circular dependency, "tlsa" MUST appear in any DELEG record that is u
Resolvers that support TLS-based transports MUST adopt one of the following behaviors:

1. Use DANE for authentication, and treat any endpoints lacking DANE support as incompatible.
1. Use PKI for authentication, and treat any DANE-only endpoint as incompatible. In this behavior, compatibility with `tlsa=disabled` endpoints is REQUIRED.
1. Support both DANE and PKI for authentication, preferring DANE if it is available for each endpoint.
2. Use PKI for authentication, and treat any DANE-only endpoint as incompatible. In this behavior, compatibility with `tlsa=disabled` endpoints is REQUIRED.
3. Support both DANE and PKI for authentication, preferring DANE if it is available for each endpoint.

This SvcParamKey MAY be used in any SVCB context where TLSA usage is defined.

Expand All @@ -200,6 +206,9 @@ alpn=doq tlsa="..." mandatory=alpn
;; services. All resolvers can access it, but only resolvers with
;; DANE support will use DoQ.
alpn=doq tlsa="..."
[... how does this signal that it also offers do53? Is the though that it is
because only this draft specifies alpn and the core draft doesn't (currently)
have a method to explicitly signal do53? Maybe it should... ]
Comment on lines +209 to +211
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This server supports Do53 because it is not explicitly disclaimed by mandatory=alpn, as in the last example here.

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Okay, right, see above. I think we should require signalling do53 to be explicit.

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
[... how does this signal that it also offers do53? Is the though that it is
because only this draft specifies alpn and the core draft doesn't (currently)
have a method to explicitly signal do53? Maybe it should... ]
[ If we move to requiring an explicit opt-in for do53 then these examples will have to change. ]


;; The server is authenticatable via PKI. If TLSA records exist at
;; the SVCB-DANE owner names, it is also authenticatable via DANE.
Expand All @@ -212,31 +221,33 @@ alpn=doq tlsa=disabled mandatory=alpn
~~~
{: title="tlsa SvcParam Examples for DELEG"}

## Deployment Considerations
## Resolution procedure

The DELEG and SVCB records intends to replace the NS record while also adding additional functionality in order to support additional transports for the DNS. Below are discussions of considerations for deployment.
As specified in {{?I-D.draft-dnsop-deleg}}, the ServiceMode DELEG records provide a weak signal from the operator about which transport mechanisms they would most prefer clients to use, but it is not mandatory that resolvers try the delegated servers in priority order. It might not even be possible for a resolver to do, such as if the highest priority record specifies an alpn that the resolver does not implement, but a lower priority record has an alpn that it can use.
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I don't understand this line. Each ServiceMode record documents the supported transports for a particular endpoint, and the SvcPriority documents the recommended trial order. Incompatible endpoints are skipped. Of course clients are free to reorder them based on additional heuristics. This is all covered in RFC 9460.

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

What don't you understand then? It's just making it clear in this document as well. Do you think this statement is inconsistent with that, or should just be shorter in drawing attention to it?

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

OK. If this is just meant to be highlighting some relevant aspects of RFC 9460, then it should say so.

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Will do. I'll be working on some more editing tomorrow and will add the explicit reference.


### Availability
Thus, as with authority server selection for NS records, a resolver is free to use its own policy implementation to determine which servers to continue to use for resolution.

If a zone operator removes all NS records before DELEG and SVCB records are implemented by all clients, the availability of their zones will be impacted for the clients that are using non-supporting resolvers. In some cases, this may be a desired quality, but should be noted by zone owners and operators.
If a connection error occurs when a resolver attempts to access a nameserver delegated to by a DELEG or SVCB record, such as with a certificate mismatch or by being unreachable, the resolver SHOULD attempt to connect to the other nameservers in the DELEG/SVCB RRset to until either exhausting the list or the resolver's policy indicates that they should treat the resolution as failed.

# Privacy Considerations
Operators MAY return SERVFAIL when all attempts to use the DELEG/SVCB resolution process have failed. This might have privacy benefits, especially if the DELEG records only offer encrypted transports. More permissive resolvers can fall back to using the legacy DNS resolution process via NS records.

All of the information handled or transmitted by this protocol is public information published in the DNS.
## Deployment Considerations

# Security Considerations
DELEG and SVCB records are intended to be the best method for modern resolvers to use delegation information for zones.

TODO: Fill this section out
Realistically, however, legacy resolvers will continue to exist on the Internet for a long time to come. If a zone operator removes all NS records, the availability of their zones will be impacted for the clients that are using non-supporting resolvers. In some cases, this may be a desired quality, but should be noted by zone owners and operators.
Comment on lines +236 to +238
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Why is this in the transport draft? This topic seems like it should go in the main DELEG draft.

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Agreed. It was here because it was the document I was working on first on the airplane, and I was addressing "fill this section out" with relevant thoughts.

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

OK, please delete this section.


## Resolution procedure
# Privacy Considerations

TODO: Define how resolver selects which server connect to, especially when faced with selection of multiple transports. I's probably resolver's policy decision, but it should be said explicitly.
All of the information transmitted by this protocol is public information published in the DNS.
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I don't think queries are meant to be "published" in the DNS.

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I also thought the sentence as a little awkward, but was working with some prior text. I agree regarding queries. This sentence could maybe be improved with "transmitted by authoritative servers", but the section needs work anyway.

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
All of the information transmitted by this protocol is public information published in the DNS.
Negotiation of alternative transports with DELEG allows the use of authenticated encryption between resolvers and authoritative DNS servers. This improves privacy by concealing the QNAME and QTYPE from a network observer. This is especially beneficial when a resolver is only shared by a small number of users.


# Security Considerations

### Connection Failures
No new security risks are introduced by this specification. [Too bold to say?]
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Sure, maybe we aren't making anything worse (although I worry about DNS Water Torture-like attacks), but security and privacy considerations still need to cover how the protocol can fail to achieve the intended improvements. In this case, we need to talk about how TLS is authenticated, especially in unsigned zones. (Related: #5)

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Sounds good. I wasn't really pushing for that sentence so much as putting a starting point that would draw out the "you were wrong on the Internet, and let me tell you why ..." brainstorming.


When a resolver attempts to access nameserver delegated by a DELEG or SVCB record, if a connection error occurs, such as a certificate mismatch or unreachable server, the resolver SHOULD attempt to connect to the other nameservers delegated to until either exhausting the list or the resolver's policy indicates that they should treat the resolution as failed.
The primary security considerations of DNS operators and domain owners are whether they should enable more secure transports for their domains, and how they want resolution to be handled if the secure transport is not available.

The failure action when failing to resolve a name with DELEG/SVCB due to connection errors is dependent on the resolver operators policies. For resolvers which strongly favor privacy, the operators may wish to return a SERVFAIL when the DELEG/SVCB resolution process completes without successfully contacting a delegated nameserver(s) while opportunistic privacy resolvers may wish to attempt resolution using any NS records that may be present.
Similarly, resolvers should be considering whether they will use secure transport mechanisms, and if so how strongly they want to enforce their usage.

# IANA Considerations

Expand Down
10 changes: 6 additions & 4 deletions draft-wesplaap-deleg.md
Original file line number Diff line number Diff line change
Expand Up @@ -392,11 +392,13 @@ When a delegation using DELEG to a child is present, the resolver MUST use it an

# IANA Considerations

DELEG will use the SVCB IANA registry definitions in section 14.3 of {{!RFC9460}}.
IANA is requested to allocate the DELEG RR in the Resource Record (RR) TYPEs registry, with the meaning of "enchanced delegation information" and referencing this document.

The IANA has assigned a bit in the DNSKEY flags field (see Section 7 of {{!RFC4034}} for the DELEG bit (N).

EDNS0 {{!RFC6891}} defines 16 bits as extended flags in the OPT record. This draft adds the DE bit.
IANA is requested to assign a new bit in the DNSKEY RR Flags registry ({{!RFC4034}}) for the DELEG bit (N), with the descripion "DELEG" and referencing this document.

IANA is requested to assign a bit from the EDNS Header Flags registry ({{!RFC6891}}), with the abbreviation DE, the description "DELEG-only answer OK" and referencing this document.

For the RDATA parameters to a DELEG RR, the DNS Service Bindings (SVCB) registry ({{!RFC9460}}) is used. This document requests no new assignments to that registry, though it is expected that future DELEG work will.

--- back

Expand Down