<?xml version="1.0" encoding="UTF-8"?>
  <?xml-stylesheet type="text/xsl" href="rfc2629.xslt" ?>
  <!-- generated by https://github.com/cabo/kramdown-rfc version 1.7.29 (Ruby 3.1.7) -->


<!DOCTYPE rfc  [
  <!ENTITY nbsp    "&#160;">
  <!ENTITY zwsp   "&#8203;">
  <!ENTITY nbhy   "&#8209;">
  <!ENTITY wj     "&#8288;">

]>


<rfc ipr="trust200902" docName="draft-berra-dnsop-keystate-02" category="std" consensus="true" tocInclude="true" sortRefs="true" symRefs="true">
  <front>
    <title abbrev="KeyState Signalling Via EDNS(0)">Signalling Key State Via DNS EDNS(0) OPT</title>

    <author initials="E." surname="Bergström" fullname="Erik Bergström">
      <organization>The Swedish Internet Foundation</organization>
      <address>
        <postal>
          <country>Sweden</country>
        </postal>
        <email>erik.bergstrom@internetstiftelsen.se</email>
      </address>
    </author>
    <author initials="L." surname="Fernandez" fullname="Leon Fernandez">
      <organization>The Swedish Internet Foundation</organization>
      <address>
        <postal>
          <country>Sweden</country>
        </postal>
        <email>leon.fernandez@internetstiftelsen.se</email>
      </address>
    </author>
    <author initials="J." surname="Stenstam" fullname="Johan Stenstam">
      <organization>The Swedish Internet Foundation</organization>
      <address>
        <postal>
          <country>Sweden</country>
        </postal>
        <email>johan.stenstam@internetstiftelsen.se</email>
      </address>
    </author>

    <date />

    <area>Internet</area>
    <workgroup>DNSOP Working Group</workgroup>
    <keyword>Internet-Draft</keyword>

    <abstract>


<?line 40?>

<t>This document introduces the KeyState EDNS(0) option code, to enable
the exchange of SIG(0) key state information between DNS entities via
the DNS protocol. The KeyState option allows DNS clients and servers to
include key state data in both queries and responses, facilitating mutual
awareness of SIG(0) key status between child and parent zones.
This mechanism addresses the challenges of maintaining synchronization
of SIG(0) keys used for securing DNS UPDATE messages, thereby enhancing
the efficiency and reliability of DNS operations that require coordinated
key management.</t>

<t>This document proposes such a mechanism.</t>

<t>TO BE REMOVED: This document is being collaborated on in Github at:
<eref target="https://github.com/johanix/draft-berra-dnsop-transaction-state-00">https://github.com/johanix/draft-berra-dnsop-opt-transaction-state</eref>.
The most recent working version of the document, open issues, etc, should all be
available there.  The authors (gratefully) accept pull requests.</t>



    </abstract>



  </front>

  <middle>


<?line 59?>

<section anchor="introduction"><name>Introduction</name>

<t>In <xref target="I-D.ietf-dnsop-delegation-mgmt-via-ddns"/> a mechanism for
automatic synchronization of delegation data between a child zone and
a parent zone is proposed.</t>

<t>That mechanism relies on the parent validating and subsequently
trusting the child SIG(0) public key so that the child is able to sign
DNS UPDATE requests to the parent using the corresponding SIG(0)
private key. While there is a mechanism for both uploading and rolling the 
public SIG(0) key there is still a risk of the child operator and the 
parent receiver getting out of sync.</t>

<t>This will be noticed by the child if a DNS UPDATE is refused. In this
situation the parent UPDATE Receiver does have the opportunity and
ability to provide more details of the refusal via an EDE opcode
<xref target="RFC8914"/>. However, at that point it is too late to immediately get
back in sync again and as a result the needed delegation
synchronization that triggered the DNS UPDATE will be delayed until
the child has managed to "re-bootstrap" a new SIG(0) key with the
parent. As such re-bootstrapping may require manual actions, the
length of the delay would not always be predictable.</t>

<t>The proposed new KeyState EDNS(0) Option addresses this problem by
allowing the child and parent to exchange information about the
current "state" of a SIG(0) key. This enables the child to become
aware of any issue with the SIG(0) key currently being used in
advance, and then address and resolve the problem. Additionally,
the KeyState EDNS(0) Option enables the child to detect and resolve
key synchronization issues before they cause operational failures.</t>

<section anchor="trusting-sig0-signed-dns-messages-between-child-and-parent"><name>Trusting SIG(0) Signed DNS Messages Between Child and Parent</name>

<t>Using the proposed OPT KeyState the child gains the ability to 
inform the parent about its own state and in return become aware of 
the parent's state independently of a new DNS UPDATE (i.e. the OPT 
exchange may be sent via a normal DNS QUERY + response).</t>

<t>It should be pointed out that for the child to be able to trust the
response from the parent, the response must be signed using a key that
the child trusts. As the mechanism for automatic synchronization of
delegation data aims to work independently of whether the involved
zones are DNSSEC-signed or not, this requires that the parent UPDATE
Receiver is able to sign the response using its own SIG(0) private key.</t>

<t>Hence there is a similar need for the UPDATE Receiver to "bootstrap"
(as in "validate so that the key may be trusted") the child SIG(0)
public key and for the child to "bootstrap" the UPDATE Receiver SIG(0)
public key. The mechanism for doing this is described in
<xref target="I-D.ietf-dnsop-delegation-mgmt-via-ddns"/>.</t>

<t>Knowledge of DNS NOTIFY <xref target="RFC1996"/> and DNS Dynamic Updates
<xref target="RFC2136"/> and <xref target="RFC3007"/> is assumed. DNS SIG(0) transaction
signatures are documented in <xref target="RFC2931"/>.</t>

</section>
<section anchor="requirements-notation"><name>Requirements Notation</name>

<t>The key words "<strong>MUST</strong>", "<strong>MUST NOT</strong>", "<strong>REQUIRED</strong>", "<strong>SHALL</strong>",
"<strong>SHALL NOT</strong>", "<strong>SHOULD</strong>", "<strong>SHOULD NOT</strong>", "<strong>RECOMMENDED</strong>",
"<strong>NOT RECOMMENDED</strong>", "<strong>MAY</strong>", and "<strong>OPTIONAL</strong>" in this document
are to be interpreted as described in BCP 14 <xref target="RFC2119"/> <xref target="RFC8174"/>
when, and only when, they appear in all capitals, as shown here.</t>

</section>
</section>
<section anchor="terminology"><name>Terminology</name>

<dl>
  <dt>SIG(0)</dt>
  <dd>
    <t>An asymmetric signing algorithm that allows the recipient to only 
need to know the public key to verify a signature created by the 
sender's private key.</t>
  </dd>
</dl>

</section>
<section anchor="comparison-to-extended-dns-errors-rfc8914"><name>Comparison to Extended DNS Errors <xref target="RFC8914"/></name>

<t>EDE (Extended DNS Errors) specify a mechanism by which a receiver of a 
DNS message gains the ability to provide more information about the 
reason for a negative response. EDE data travels in an OPT record in 
the response and consist of an EDE code and, optionally, an EDE "Extra 
Text". It is possible to return EDE data with all types of DNS 
messages, including QUERY, NOTIFY and UPDATE.</t>

<t>However, there are three limitations to EDE that make it insufficient 
for communicating state between two parties:</t>

<t><list style="numbers" type="1">
  <t>An EDE must only be present in a response, not in the originating message.</t>
  <t>An EDE must only be used to augment an error response. It should not 
be part of a successful response.</t>
  <t>An EDE must contain an EDE info code (16 bits) and may contain "Extra 
Text". However this extra text is intended for human consumption, 
not automated parsing. To communicate state between two parties 
this requirement is too strict.</t>
</list></t>

<t>These limitations are not a problem, as EDE serves a different
purpose. But it is clear that for use cases like the above examples,
EDE is not the right mechanism and another mechanism is needed. Hence
the present proposal.</t>

</section>
<section anchor="keystate-edns0-option-format"><name>KeyState EDNS(0) Option Format</name>

<t>This document uses an Extended Mechanism for DNS (EDNS0) <xref target="RFC6891"/>
option to include Key State information in DNS messages. The option is 
structured as follows:</t>

<figure><artwork><![CDATA[
                                               1   1   1   1   1   1
       0   1   2   3   4   5   6   7   8   9   0   1   2   3   4   5
     +---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+
 0:  |                            OPTION-CODE                        |
     +---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+
 2:  |                           OPTION-LENGTH                       |
     +---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+
 4:  |                              KEY-ID                           |
     +---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+
 6:  |           KEY-STATE           |           KEY-DATA            |
     +---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+
 8:  / EXTRA-TEXT                                                    /
     +---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+
]]></artwork></figure>

<t>Field definition details:</t>

<t>OPTION-CODE: 
    2 octets / 16 bits (defined in <xref target="RFC6891"/>) contains the value TBD
    for KeyState.</t>

<t>OPTION-LENGTH: 
    2 octets / 16 bits (defined in <xref target="RFC6891"/>) contains the length of 
    the payload (everything after OPTION-LENGTH) in octets and should 
    be 4 plus the length of the EXTRA-TEXT field (which may be zero 
    octets long).</t>

<t>KEY-ID:
    16 bits. The KeyID of the SIG(0) key that the KeyState inquiry is
    referring to. Note that while KeyIds are not guaranteed to be
    unique, it is the child that generates the initial SIG(0) key pair
    and all subsequent key pairs. Hence, it is the child's
    responsibility to not use multiple keys with the same KeyId.</t>

<t>KEY-STATE:
    8 bits. Currently defined values are listed in <xref target="keystate-values"/>.
    Additional values may be defined in future documents.</t>

<t>KEY-DATA:
    8 bits. Interpretation specific to each KEY-STATE.</t>

<t>EXTRA-TEXT:
    a variable-length sequence of octets that may hold additional 
    information. This information is intended for human consumption
    (typically a reason or additional detail), not automated
    parsing. The length of the EXTRA-TEXT MUST be derived from the
    OPTION-LENGTH field. The EXTRA-TEXT field may be zero octets in
    length.</t>

</section>
<section anchor="use-of-the-keystate-option"><name>Use of the KeyState Option</name>

<t>The KeyState option may be included in outgoing message of type QUERY
or UPDATE from the child to the UPDATE Receiver. The KeyState option
MUST be present in such messages if the child supports the KeyState
option.</t>

<t>The UPDATE Receiver MUST only include a KeyState option when
responding to a DNS message that contained a KeyState option. I.e. the
UPDATE Receiver must never assume that the child is able to interpret
KeyState options. A KeyState option MAY be included in any type of
response (SERVFAIL, NXDOMAIN, REFUSED, even NOERROR, etc.) to a query
that includes a KeyState Option.</t>

<t>The KeyState option may always be ignored by the recipient. However, if 
the recipient does understand the KeyState option and responding with its 
own corresponding KeyState for the specified key make sense, then it
is expected to do so.</t>

<t>This document includes a set of initial "key state" codepoints but is
extensible via the IANA registry defined and created in <xref target="keystate-registry"/>.</t>

</section>
<section anchor="keystate-values"><name>Defined and Reserved Values for SIG(0) Key States</name>

<t>This document defines a number of initial KEY-STATE codes. The
mechanism is intended to be extensible and additional KEY-STATE codes
can be registered in the "KeyState Codes" registry
(see <xref target="keystate-registry"/>). The KEY-STATE code from the "KeyState" EDNS(0)
option is used to serve as an index into the "KeyState Option
Codes" registry with the initial values defined below.</t>

<t>For KeyState signalling to be used the child includes a KeyState OPT
   in its query to indicate the ability to interpret a KeyState OPT in
   the response.</t>

<section anchor="keystates-set-by-the-sender-the-child"><name>KeyStates Set By The Sender (the Child)</name>

<t>0: Automatic bootstrap requested. This assumes that the child SIG(0)
   public key is already published as a KEY record at the child
   apex.</t>

<t>1: Manual bootstrap requested. Child requests that manual bootstrap
   should be used (child does not want automatic bootstrap of the
   SIG(0) public key).</t>

<t>2: Key inquiry. Child requests information about current KeyState for
   specified key.</t>

</section>
<section anchor="keystates-set-by-the-update-receiver-the-parent-or-its-agent"><name>KeyStates Set By The UPDATE Receiver (the Parent or Its Agent)</name>

<t>4: SIG(0) key is known and trusted.</t>

<t>5: SIG(0) key is unknown.</t>

<t>6: SIG(0) key is invalid (eg. key data doesn't match algorithm).</t>

<t>7: SIG(0) key is refused (eg. algorithm not accepted by policy).</t>

<t>8: SIG(0) key is known but validation has failed.</t>

<t>9: SIG(0) key is known but not trusted, automatic bootstrapping
   ongoing.</t>

<t>10: SIG(0) key is known but not trusted, manual bootstrapping required.</t>

<t>128-255: Reserved for private use.</t>

<t>To ensure that automatic delegation is correctly prepared and
bootstrapped, the child (or an agent for the child) sends a DNS QUERY
to the parent UPDATE Receiver with QNAME="child.parent." and
QTYPE=ANY containing a KeyState OPT with KeyState-Code=2 and the KeyId of
the SIG(0) key to inquire state for in the KEY-ID field.</t>

<t>The response should be signed by the SIG(0) key for the UPDATE
Receiver and contain both the KeyId and the Key State encoded as
described above.</t>

</section>
</section>
<section anchor="security-considerations"><name>Security Considerations</name>

<t>Key state signals in OPT queries and answers are unauthenticated unless the
transaction carrying the state signal is secured via mechanisms such as
<xref target="RFC2845"/>, <xref target="RFC2931"/>, <xref target="RFC8094"/> or <xref target="RFC8484"/>. Unauthenticated
information MUST NOT be trusted as the state signals influence the DNS
protocol processing. For instance, an attacker might cause a denial-of-service
by forging a response claiming that the victim's key is invalid, thereby
halting the delegation synchronization procedure.</t>

<t>Moreover, it is assumed that the child has some means of validating messages
from the parent during the initial phase when the child initializes the SIG(0)
key synchronization. Otherwise, an attacker could prevent a child from
initializing the synchronization by spoofing responses that refuse the key
that the child is trying to upload. For that reason, it is expected that the
parent has already published a public key that the child can use for this
purpose. It could also possibly establish this trust out-of-band, such as
via a physical meeting.</t>

<t>Lastly, SIG(0) transaction signatures are vulnerable to replay attacks, which
could allow an attacker to disrupt the synchronization. Secure transport
alternatives exist in <xref target="RFC8094"/> and <xref target="RFC8484"/>.</t>

</section>
<section anchor="iana-considerations"><name>IANA Considerations</name>

<section anchor="new-keystate-edns-option"><name>New KeyState EDNS Option</name>

<t>This document defines a new EDNS(0) option, entitled "KeyState",
assigned a value of TBD in the "DNS EDNS0 Option Codes (OPT)" registry</t>

<texttable>
      <ttcol align='left'>Value</ttcol>
      <ttcol align='left'>Name</ttcol>
      <ttcol align='left'>Status</ttcol>
      <ttcol align='left'>Reference</ttcol>
      <c>TBD</c>
      <c>KeyState</c>
      <c>Standard</c>
      <c>(This document)</c>
</texttable>

</section>
<section anchor="keystate-registry"><name>A New Registry for EDNS Option KeyState State Codes</name>

<t>The KeyState option also defines a 8-bit state field, for which IANA is
requested to create and maintain a new registry entitled "KeyState Codes", used
by the KeyState option. Initial values for the "KeyState Codes" registry
are given below; future assignments in the 11-127 range are to be made
through Specification Required review <xref target="BCP26"/>.</t>

<texttable>
      <ttcol align='left'>KEY STATE</ttcol>
      <ttcol align='left'>Mnemonic</ttcol>
      <ttcol align='left'>Reference</ttcol>
      <c>0</c>
      <c>REQUEST_AUTO_BOOTSTRAP</c>
      <c>(This document)</c>
      <c>1</c>
      <c>REQUEST_MANUAL_BOOTSTRAP</c>
      <c>(This document)</c>
      <c>2</c>
      <c>INQUIRY_KEY</c>
      <c>(This document)</c>
      <c>3</c>
      <c>Unassigned</c>
      <c>(This document)</c>
      <c>4</c>
      <c>KEY_TRUSTED</c>
      <c>(This document)</c>
      <c>5</c>
      <c>KEY_UNKNOWN</c>
      <c>(This document)</c>
      <c>6</c>
      <c>KEY_INVALID</c>
      <c>(This document)</c>
      <c>7</c>
      <c>KEY_REFUSED</c>
      <c>(This document)</c>
      <c>8</c>
      <c>KEY_VALIDATION_FAIL</c>
      <c>(This document)</c>
      <c>9</c>
      <c>BOOTSTRAP_AUTO_ONGOING</c>
      <c>(This document)</c>
      <c>10</c>
      <c>BOOTSTRAP_MANUAL_REQUIRED</c>
      <c>(This document)</c>
      <c>11-127</c>
      <c>Unassigned</c>
      <c>(This document)</c>
      <c>128-255</c>
      <c>Private use</c>
      <c>(This document)</c>
</texttable>

<t><vspace blankLines='999' /></t>

</section>
</section>


  </middle>

  <back>


<references title='References' anchor="sec-combined-references">

    <references title='Normative References' anchor="sec-normative-references">



<reference anchor="RFC8914">
  <front>
    <title>Extended DNS Errors</title>
    <author fullname="W. Kumari" initials="W." surname="Kumari"/>
    <author fullname="E. Hunt" initials="E." surname="Hunt"/>
    <author fullname="R. Arends" initials="R." surname="Arends"/>
    <author fullname="W. Hardaker" initials="W." surname="Hardaker"/>
    <author fullname="D. Lawrence" initials="D." surname="Lawrence"/>
    <date month="October" year="2020"/>
    <abstract>
      <t>This document defines an extensible method to return additional information about the cause of DNS errors. Though created primarily to extend SERVFAIL to provide additional information about the cause of DNS and DNSSEC failures, the Extended DNS Errors option defined in this document allows all response types to contain extended error information. Extended DNS Error information does not change the processing of RCODEs.</t>
    </abstract>
  </front>
  <seriesInfo name="RFC" value="8914"/>
  <seriesInfo name="DOI" value="10.17487/RFC8914"/>
</reference>
<reference anchor="RFC1996">
  <front>
    <title>A Mechanism for Prompt Notification of Zone Changes (DNS NOTIFY)</title>
    <author fullname="P. Vixie" initials="P." surname="Vixie"/>
    <date month="August" year="1996"/>
    <abstract>
      <t>This memo describes the NOTIFY opcode for DNS, by which a master server advises a set of slave servers that the master's data has been changed and that a query should be initiated to discover the new data. [STANDARDS-TRACK]</t>
    </abstract>
  </front>
  <seriesInfo name="RFC" value="1996"/>
  <seriesInfo name="DOI" value="10.17487/RFC1996"/>
</reference>
<reference anchor="RFC2136">
  <front>
    <title>Dynamic Updates in the Domain Name System (DNS UPDATE)</title>
    <author fullname="P. Vixie" initials="P." role="editor" surname="Vixie"/>
    <author fullname="S. Thomson" initials="S." surname="Thomson"/>
    <author fullname="Y. Rekhter" initials="Y." surname="Rekhter"/>
    <author fullname="J. Bound" initials="J." surname="Bound"/>
    <date month="April" year="1997"/>
    <abstract>
      <t>Using this specification of the UPDATE opcode, it is possible to add or delete RRs or RRsets from a specified zone. Prerequisites are specified separately from update operations, and can specify a dependency upon either the previous existence or nonexistence of an RRset, or the existence of a single RR. [STANDARDS-TRACK]</t>
    </abstract>
  </front>
  <seriesInfo name="RFC" value="2136"/>
  <seriesInfo name="DOI" value="10.17487/RFC2136"/>
</reference>
<reference anchor="RFC3007">
  <front>
    <title>Secure Domain Name System (DNS) Dynamic Update</title>
    <author fullname="B. Wellington" initials="B." surname="Wellington"/>
    <date month="November" year="2000"/>
    <abstract>
      <t>This document proposes a method for performing secure Domain Name System (DNS) dynamic updates. [STANDARDS-TRACK]</t>
    </abstract>
  </front>
  <seriesInfo name="RFC" value="3007"/>
  <seriesInfo name="DOI" value="10.17487/RFC3007"/>
</reference>
<reference anchor="RFC2931">
  <front>
    <title>DNS Request and Transaction Signatures ( SIG(0)s )</title>
    <author fullname="D. Eastlake 3rd" initials="D." surname="Eastlake 3rd"/>
    <date month="September" year="2000"/>
    <abstract>
      <t>This document describes the minor but non-interoperable changes in Request and Transaction signature resource records ( SIG(0)s ) that implementation experience has deemed necessary. [STANDARDS-TRACK]</t>
    </abstract>
  </front>
  <seriesInfo name="RFC" value="2931"/>
  <seriesInfo name="DOI" value="10.17487/RFC2931"/>
</reference>
<reference anchor="RFC2119">
  <front>
    <title>Key words for use in RFCs to Indicate Requirement Levels</title>
    <author fullname="S. Bradner" initials="S." surname="Bradner"/>
    <date month="March" year="1997"/>
    <abstract>
      <t>In many standards track documents several words are used to signify the requirements in the specification. These words are often capitalized. This document defines these words as they should be interpreted in IETF documents. This document specifies an Internet Best Current Practices for the Internet Community, and requests discussion and suggestions for improvements.</t>
    </abstract>
  </front>
  <seriesInfo name="BCP" value="14"/>
  <seriesInfo name="RFC" value="2119"/>
  <seriesInfo name="DOI" value="10.17487/RFC2119"/>
</reference>
<reference anchor="RFC8174">
  <front>
    <title>Ambiguity of Uppercase vs Lowercase in RFC 2119 Key Words</title>
    <author fullname="B. Leiba" initials="B." surname="Leiba"/>
    <date month="May" year="2017"/>
    <abstract>
      <t>RFC 2119 specifies common key words that may be used in protocol specifications. This document aims to reduce the ambiguity by clarifying that only UPPERCASE usage of the key words have the defined special meanings.</t>
    </abstract>
  </front>
  <seriesInfo name="BCP" value="14"/>
  <seriesInfo name="RFC" value="8174"/>
  <seriesInfo name="DOI" value="10.17487/RFC8174"/>
</reference>
<reference anchor="RFC6891">
  <front>
    <title>Extension Mechanisms for DNS (EDNS(0))</title>
    <author fullname="J. Damas" initials="J." surname="Damas"/>
    <author fullname="M. Graff" initials="M." surname="Graff"/>
    <author fullname="P. Vixie" initials="P." surname="Vixie"/>
    <date month="April" year="2013"/>
    <abstract>
      <t>The Domain Name System's wire protocol includes a number of fixed fields whose range has been or soon will be exhausted and does not allow requestors to advertise their capabilities to responders. This document describes backward-compatible mechanisms for allowing the protocol to grow.</t>
      <t>This document updates the Extension Mechanisms for DNS (EDNS(0)) specification (and obsoletes RFC 2671) based on feedback from deployment experience in several implementations. It also obsoletes RFC 2673 ("Binary Labels in the Domain Name System") and adds considerations on the use of extended labels in the DNS.</t>
    </abstract>
  </front>
  <seriesInfo name="STD" value="75"/>
  <seriesInfo name="RFC" value="6891"/>
  <seriesInfo name="DOI" value="10.17487/RFC6891"/>
</reference>
<reference anchor="RFC2845">
  <front>
    <title>Secret Key Transaction Authentication for DNS (TSIG)</title>
    <author fullname="P. Vixie" initials="P." surname="Vixie"/>
    <author fullname="O. Gudmundsson" initials="O." surname="Gudmundsson"/>
    <author fullname="D. Eastlake 3rd" initials="D." surname="Eastlake 3rd"/>
    <author fullname="B. Wellington" initials="B." surname="Wellington"/>
    <date month="May" year="2000"/>
    <abstract>
      <t>This protocol allows for transaction level authentication using shared secrets and one way hashing. It can be used to authenticate dynamic updates as coming from an approved client, or to authenticate responses as coming from an approved recursive name server. [STANDARDS-TRACK]</t>
    </abstract>
  </front>
  <seriesInfo name="RFC" value="2845"/>
  <seriesInfo name="DOI" value="10.17487/RFC2845"/>
</reference>
<reference anchor="RFC8094">
  <front>
    <title>DNS over Datagram Transport Layer Security (DTLS)</title>
    <author fullname="T. Reddy" initials="T." surname="Reddy"/>
    <author fullname="D. Wing" initials="D." surname="Wing"/>
    <author fullname="P. Patil" initials="P." surname="Patil"/>
    <date month="February" year="2017"/>
    <abstract>
      <t>DNS queries and responses are visible to network elements on the path between the DNS client and its server. These queries and responses can contain privacy-sensitive information, which is valuable to protect.</t>
      <t>This document proposes the use of Datagram Transport Layer Security (DTLS) for DNS, to protect against passive listeners and certain active attacks. As latency is critical for DNS, this proposal also discusses mechanisms to reduce DTLS round trips and reduce the DTLS handshake size. The proposed mechanism runs over port 853.</t>
    </abstract>
  </front>
  <seriesInfo name="RFC" value="8094"/>
  <seriesInfo name="DOI" value="10.17487/RFC8094"/>
</reference>
<reference anchor="RFC8484">
  <front>
    <title>DNS Queries over HTTPS (DoH)</title>
    <author fullname="P. Hoffman" initials="P." surname="Hoffman"/>
    <author fullname="P. McManus" initials="P." surname="McManus"/>
    <date month="October" year="2018"/>
    <abstract>
      <t>This document defines a protocol for sending DNS queries and getting DNS responses over HTTPS. Each DNS query-response pair is mapped into an HTTP exchange.</t>
    </abstract>
  </front>
  <seriesInfo name="RFC" value="8484"/>
  <seriesInfo name="DOI" value="10.17487/RFC8484"/>
</reference>



    </references>

    <references title='Informative References' anchor="sec-informative-references">




<reference anchor="I-D.ietf-dnsop-delegation-mgmt-via-ddns">
   <front>
      <title>Automating DNS Delegation Management via DDNS</title>
      <author fullname="Johan Stenstam" initials="J." surname="Stenstam">
         <organization>The Swedish Internet Foundation</organization>
      </author>
      <author fullname="Erik Bergström" initials="E." surname="Bergström">
         <organization>The Swedish Internet Foundation</organization>
      </author>
      <author fullname="Leon Fernandez" initials="L." surname="Fernandez">
         <organization>The Swedish Internet Foundation</organization>
      </author>
      <date day="17" month="February" year="2026"/>
      <abstract>
	 <t>   Delegation information (i.e. the NS RRset, possible glue, possible DS
   records) should always be kept in sync between child zone and parent
   zone.  However, in practice that is not always the case.

   When the delegation information is not in sync the child zone is
   usually working fine, but without the amount of redundancy that the
   zone owner likely expects to have.  Hence, should any further
   problems ensue it could have catastropic consequences.

   The DNS name space has lived with this problem for decades and it
   never goes away.  Or, rather, it will never go away until a fully
   automated mechanism for how to keep the information in sync
   automatically is deployed.

   This document proposes such a mechanism.

   TO BE REMOVED: This document is being collaborated on in Github at:
   https://github.com/johanix/draft-ietf-dnsop-delegation-mgmt-via-ddns
   (https://github.com/johanix/draft-ietf-dnsop-delegation-mgmt-via-
   ddns).  The most recent working version of the document, open issues,
   etc, should all be available there.  The authors (gratefully) accept
   pull requests.

	 </t>
      </abstract>
   </front>
   <seriesInfo name="Internet-Draft" value="draft-ietf-dnsop-delegation-mgmt-via-ddns-00"/>
   
</reference>
<referencegroup anchor="BCP26" target="https://www.rfc-editor.org/info/bcp26">
  <reference anchor="RFC8126" target="https://www.rfc-editor.org/info/rfc8126">
    <front>
      <title>Guidelines for Writing an IANA Considerations Section in RFCs</title>
      <author fullname="M. Cotton" initials="M." surname="Cotton"/>
      <author fullname="B. Leiba" initials="B." surname="Leiba"/>
      <author fullname="T. Narten" initials="T." surname="Narten"/>
      <date month="June" year="2017"/>
      <abstract>
        <t>Many protocols make use of points of extensibility that use constants to identify various protocol parameters. To ensure that the values in these fields do not have conflicting uses and to promote interoperability, their allocations are often coordinated by a central record keeper. For IETF protocols, that role is filled by the Internet Assigned Numbers Authority (IANA).</t>
        <t>To make assignments in a given registry prudently, guidance describing the conditions under which new values should be assigned, as well as when and how modifications to existing values can be made, is needed. This document defines a framework for the documentation of these guidelines by specification authors, in order to assure that the provided guidance for the IANA Considerations is clear and addresses the various issues that are likely in the operation of a registry.</t>
        <t>This is the third edition of this document; it obsoletes RFC 5226.</t>
      </abstract>
    </front>
    <seriesInfo name="BCP" value="26"/>
    <seriesInfo name="RFC" value="8126"/>
    <seriesInfo name="DOI" value="10.17487/RFC8126"/>
  </reference>
</referencegroup>



    </references>

</references>


<?line 366?>

<section anchor="change-history-to-be-removed-before-publication"><name>Change History (to be removed before publication)</name>

<t><list style="symbols">
  <t>draft-berra-dnsop-opt-keystate-02</t>
</list></t>

<ul empty="true"><li>
  <t>Removed policy inquiry KeyState code 3 (INQUIRY_POLICY) and policy
response codes 11 (POLICY_MANUAL_BOOTSTRAP_REQUIRED) and 12
(POLICY_AUTO_BOOTSTRAP). Bootstrap policy discovery is now handled
entirely via the SVCB "bootstrap" SvcParamKey mechanism described in
<xref target="I-D.ietf-dnsop-delegation-mgmt-via-ddns"/>.</t>
</li></ul>

<ul empty="true"><li>
  <t>Fixed wire format diagram: KEY-ID is 16 bits (a standard DNSSEC Key
Tag), corrected byte offsets from 4/8/10 to 4/6/8.</t>
</li></ul>

<ul empty="true"><li>
  <t>Replaced hardcoded section number references with kramdown anchors
for stable cross-references.</t>
</li></ul>

<t><list style="symbols">
  <t>draft-berra-dnsop-opt-keystate-01</t>
</list></t>

<ul empty="true"><li>
  <t>Fixed minor typos.</t>
</li></ul>

<t><list style="symbols">
  <t>draft-berra-dnsop-opt-keystate-00</t>
</list></t>

<ul empty="true"><li>
  <t>Initial public draft.</t>
</li></ul>

</section>


  </back>

<!-- ##markdown-source:
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

-->

</rfc>

