<?xml version="1.0" encoding="utf-8"?>
<!-- name="GENERATOR" content="github.com/mmarkdown/mmark Mmark Markdown Processor - mmark.miek.nl" -->
<rfc version="3" ipr="trust200902" docName="draft-ietf-dnsop-delext-02" submissionType="IETF" category="std" xml:lang="en" xmlns:xi="http://www.w3.org/2001/XInclude" indexInclude="true">

<front>
<title abbrev="DELEXT">DNS Protocol Modifications for Delegation Extensions</title><seriesInfo value="draft-ietf-dnsop-delext-02" stream="IETF" status="standard" name="Internet-Draft"></seriesInfo>
<author initials="R." surname="Arends" fullname="Roy Arends"><organization>ICANN</organization><address><postal><street></street>
<country>Guernsey</country>
</postal><email>roy.arends@icann.org</email>
</address></author><author initials="P." surname="van Dijk" fullname="Peter van Dijk"><organization>PowerDNS</organization><address><postal><street></street>
<city>Den Haag</city>
<country>Netherlands</country>
</postal><email>peter.van.dijk@powerdns.com</email>
</address></author><author initials="P." surname="Špaček" fullname="Petr Špaček"><organization>ISC</organization><address><postal><street></street>
<city>Brno</city>
<country>Czech Republic</country>
</postal><email>pspacek@isc.org</email>
</address></author><date/>
<area>General</area>
<workgroup>deleg</workgroup>
<keyword>Internet-Draft</keyword>

<abstract>
<t>The Domain Name System (DNS) protocol permits Delegation Signer (DS) records at delegation points. This document describes modifications to the Domain Name System (DNS) protocol to permit a range of resource record types at delegation points. These modifications are designed to maintain compatibility with existing DNS resolution mechanisms and provide a secure method for processing these records at delegation points.</t>
</abstract>

</front>

<middle>

<section anchor="introduction"><name>Introduction</name>
<t><xref target="RFC4034"></xref> defines the Delegation Signer (DS) resource record as having a unique property: it resides at a delegation as authoritative data. Discussions and drafts within the DPRIVE, DNSOP, and DELEG working groups have highlighted interest in allowing additional types of data to be present at delegation points. This document reserves a range of Resource Record (RR) types allowed at delegation points and describes the protocol modifications for DNS implementations that support them.</t>
<t>To shield implementations that do not implement these modifications, a new EDNS(0) <xref target="RFC6891"></xref> option is introduced to indicate support for this range of RR types.</t>
<t>To protect against downgrade attacks, a new DNSKEY flag is introduced.</t>

<section anchor="term"><name>Conventions and Definitions</name>
<t>The term Delegation Types designates the set of RR types consisting of the range of RR types reserved in <xref target="alloc"></xref> of this document.</t>

<ul spacing="compact">
<li>Delegation-Extension-aware name server or resolver: A server that implements this specification.</li>
</ul>
<t>The key words &quot;MUST&quot;, &quot;MUST NOT&quot;, &quot;REQUIRED&quot;, &quot;SHALL&quot;, &quot;SHALL NOT&quot;, &quot;SHOULD&quot;, &quot;SHOULD NOT&quot;, &quot;RECOMMENDED&quot;, &quot;NOT RECOMMENDED&quot;, &quot;MAY&quot;, and &quot;OPTIONAL&quot; in this document are to be interpreted as described in BCP 14 <xref target="RFC2119"></xref> <xref target="RFC8174"></xref> when, and only when, they appear in all capitals, as shown here.</t>
</section>

<section anchor="relationship-with-the-deleg-draft"><name>Relationship with the DELEG draft</name>
<t>The DELEG draft specifies a new resource record type (DELEG) that is authoritative at a delegation point and proposes protocol modifications to support DELEG. The purpose of this document is to make sure that protocol modifications are generic for a range of types.</t>
</section>

<section anchor="relationship-with-ns-and-ds-records"><name>Relationship with NS and DS records</name>
<t>The use of DS and delegation-point NS records is orthogonal to the use of Delegation Types. Both types MAY coexist with Delegation Types.</t>
</section>

<section anchor="services-provided-by-delegation-types"><name>Services Provided by Delegation Types</name>
<t>Services provided by Delegation Types consist of information useful to a resolver when connecting to servers responsible for the delegated namespace. This can include, but is not limited to, secure transport parameters, policy information about zones, and DNSSEC security parameters.</t>
</section>
</section>

<section anchor="alloc"><name>Delegation Types</name>
<t><xref target="RFC6895"></xref> contains three subcategories of RR type numbers: Data Types, Q-Types, and Meta-Types. This specification adds a fourth subcategory: Delegation Types.</t>
<t>Considerations for the allocation of Delegation Types are as follows:</t>

<artwork><![CDATA[Decimal      Hexadecimal      Registration Procedure
61440-61935  0xF000-0xF1EF    Expert Review or Standards Action
61936-61951  0xF1F0-0xF1FF    Private Use
]]></artwork>

<section anchor="updates-to-allocation-policy"><name>Updates to allocation policy</name>
<t>This section is to be written with guidance from the RFC6895 Experts Pool.</t>
</section>
</section>

<section anchor="resolver-requirements"><name>Resolver Requirements</name>
<t>To indicate Delegation Types support, the resolver sets the Delegation Extensions (DE) flag in the EDNS(0) Flags field when sending a DNS request message.</t>

<section anchor="the-edns-0-de-flag"><name>The EDNS(0) DE Flag</name>
<t>The DE flag is carried in the OPT RR TTL field.</t>

<artwork><![CDATA[           +0 (MSB)                            +1 (LSB)
   +---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+
0: |         EXTENDED-RCODE        |            VERSION            |
   +---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+
2: | DO| CO| DE|                   Z                               |
   +---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+
]]></artwork>
</section>

<section anchor="referrals"><name>Referrals</name>
<t>Delegation Types in the authority section of a DNS response message indicate that the response contains a referral. Delegation Types are expected to contain all the information needed for a resolver to act on. Therefore, NS records that appear in addition to Delegation Types MUST be ignored. These NS records MUST NOT be validated or cached.</t>
<t>The purpose of this restriction is to avoid leakage of DNS messages over unencrypted transport when servers, indicated by Delegation Types, fail to respond.</t>
<t>When no Delegation Types exist, the resolver MAY use NS records. Note that the use of DNSSEC can prove the presence and absence of Delegation Types for a delegation.</t>
</section>
</section>

<section anchor="name-server-requirements"><name>Name Server Requirements</name>
<t>Delegation-Extension-aware name servers MUST copy the value of the EDNS(0) DE flag from the request to the response.</t>

<section anchor="including-delegation-types-in-a-referral-response"><name>Including Delegation Types in a Referral Response</name>
<t>When the DE flag is set, the server includes Delegation Types in referrals and ignores NS types. When there are no Delegation Types for a referral, it includes NS types. The proof of existence of types for the delegated name MUST be included.</t>
<t>When the DE flag is clear, and no NS records exist for a referral, there is no facility for the resolver to continue resolving the delegated namespace. A name error SHOULD be returned in this case. While this may seem counterintuitive, since the name does exist, it is the only response code that stops the resolver from asking other authoritative name servers for the same information. Authoritative servers SHOULD include an Extended DNS Error <xref target="RFC8914"></xref> to clarify the reason.</t>
</section>

<section anchor="explicit-queries-for-delegation-types"><name>Explicit queries for Delegation Types</name>
<t>When the DE flag is set, a query for a Delegation Type SHOULD result in an authoritative answer if the Delegation Type exists, or a NODATA response (AA flag set, RCODE=0, empty answer section).</t>
<t>When the DE flag is clear, a query for a Delegation Type SHOULD result in an authoritative answer if the  Delegation Type exists; in a referral with NS types if NS types exist, or in a NODATA response if other  Delegation Types exist.</t>
</section>
</section>

<section anchor="dnssec-requirements"><name>DNSSEC Requirements</name>
<t>In a DNSSEC-signed zone, Delegation Type RRsets MUST be signed.</t>
<t>To avoid a downgrade attack, where the Delegation Types and NSEC (or NSEC3) records can be replaced by unsigned NS records, causing the resolver to use unencrypted transport, a secure signal in the form of a DNSKEY flag is introduced. This secure signal indicates that NSEC or NSEC3 records MUST be present in a referral response.</t>

<section anchor="the-dnskey-adt-flag"><name>The DNSKEY-ADT flag</name>
<t>The DNSKEY Flags field consists of 16 bits:</t>

<artwork><![CDATA[                                          1   1   1   1   1   1 
  0   1   2   3   4   5   6   7   8   9   0   1   2   3   4   5 
+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+
|                           |Zon|Rev|                   |ADT|SEP|
+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+
]]></artwork>
<t>Bit 14 is the Authoritative Delegation Types (ADT) flag. It indicates to a validator that a referral MUST contain an NSEC or NSEC3 record to prove presence or absence of types for the delegated name.</t>
</section>

<section anchor="validating-a-referral"><name>Validating a Referral</name>
<t>When the DNSKEY-ADT flag is set in any DNSKEY from the DNSKEY RRset of the delegating zone, the validator MUST check the Delegation Types in the authority section of the referral against the Type Bit Maps of the NSEC or NSEC3 record that matches the delegated name. If any are absent, the referral MUST be considered tampered with, and the response MUST be ignored.</t>
</section>
</section>

<section anchor="security-considerations"><name>Security Considerations</name>
<t>This section discusses security considerations, including downgrade attacks and resolver behavior. Further details will be added.</t>
</section>

<section anchor="iana"><name>IANA Considerations</name>
<t>IANA is requested to change reservations in the DNS Parameters RR types registry, with this document as the Reference.</t>

<ul spacing="compact">
<li>Range 0xF000-0xF1EF to Registration Procedure &quot;Expert Review or Standards Action&quot;</li>
<li>Range 0xF1F0-0xF1FF to Registration Procedure &quot;Private Use&quot;</li>
</ul>
</section>

<section anchor="acknowledgments"><name>Acknowledgments</name>
<t>This idea was initially proposed by Petr Špaček, and independently by Paul Wouters.</t>
</section>

</middle>

<back>
<references><name>References</name>
<references><name>Normative References</name>
<xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.2119.xml"/>
<xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.4034.xml"/>
<xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.6891.xml"/>
<xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.6895.xml"/>
<xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.8914.xml"/>
</references>
<references><name>Informative References</name>
<xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.8174.xml"/>
</references>
</references>

</back>

</rfc>
