<?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.6.17 (Ruby 2.6.10) -->


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

]>


<rfc ipr="trust200902" docName="draft-berra-dnsop-keystate-00" 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>


<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>


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

<t>In <xref target="I-D.johani-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.</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.</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.johani-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 assymmetric signing algorithm that allows the recipient to only 
need to know the public key to verify a signature created by the 
senders private key.</t>
  </dd>
</dl>

</section>
<section anchor="comparision-to-extended-dns-errors-rfc8914"><name>Comparision 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 insufficent 
for communicating state between two parties:</t>

<t><list style="numbers">
  <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 EDNS0 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                          |
     +---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+
 8:  |           KEY-STATE           |  EXTRA-TEXT                   /
     +---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+ 
 10: / 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 3 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 Section 6 below.</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 an 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 Section 8.2.</t>

</section>
<section anchor="defined-and-reserved-values-for-sig0-key-states"><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 Section 8.2). 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 is set by the child to 
   indicate 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 that 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>

<t>3: Policy inquiry. Child requests information about current bootstrap
   policy for parent (or its agent).</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>11: Manual bootstrapping required for all SIG(0) keys to become
    trusted. This is a policy indication in response to a KeyState=3
    inquiry from Sender.</t>

<t>12: Automatic bootstrapping will be attempted for all SIG(0) keys to
    become trusted. This is a policy indication in response to a
    KeyState=3 inquiry from Sender.</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 Reciever with QNAME="child.parent." and 
QTYPE=ANY containing a KeyState OPT with KeyState-Code=1 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 refuses 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 possible to 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 "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="a-new-registry-for-edns-option-keystate-state-codes"><name>A New Registry for EDNS Option KeyState State Codes</name>

<t>The KeyState option also defines a 16-bit state field, for which IANA is
requested to create and mainain a new registry entitled "KeyState Codes", used
by the KeyState option. Initial values for the "KeyState Codes" registry
are given below; future assignments in  in the 8-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>UNUSED</c>
      <c>(This document)</c>
      <c>1</c>
      <c>KEY_TRUSTED</c>
      <c>(This document)</c>
      <c>2</c>
      <c>KEY_UNKNOWN</c>
      <c>(This document)</c>
      <c>3</c>
      <c>KEY_INVALID</c>
      <c>(This document)</c>
      <c>4</c>
      <c>KEY_REFUSED</c>
      <c>(This document)</c>
      <c>5</c>
      <c>VALIDATION_FAIL</c>
      <c>(This document)</c>
      <c>6</c>
      <c>AUTO_BOOTSTRAP_ONGOING</c>
      <c>(This document)</c>
      <c>7</c>
      <c>MANUAL_BOOTSTRAP_REQUIRED</c>
      <c>(This document)</c>
      <c>8</c>
      <c>MANUAL_BOOTSTRAP_SIG0</c>
      <c>(This document)</c>
      <c>9</c>
      <c>ATTEMPT_AUTO_BOOTSTRAP</c>
      <c>(This document)</c>
      <c>10</c>
      <c>REQUST_MANUAL_BOOTSTRAP</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='Normative References'>



<reference anchor='RFC8914' target='https://www.rfc-editor.org/info/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' target='https://www.rfc-editor.org/info/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' target='https://www.rfc-editor.org/info/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' target='https://www.rfc-editor.org/info/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' target='https://www.rfc-editor.org/info/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' target='https://www.rfc-editor.org/info/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' target='https://www.rfc-editor.org/info/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' target='https://www.rfc-editor.org/info/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' target='https://www.rfc-editor.org/info/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' target='https://www.rfc-editor.org/info/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' target='https://www.rfc-editor.org/info/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'>




<reference anchor='I-D.johani-dnsop-delegation-mgmt-via-ddns' target='https://datatracker.ietf.org/doc/html/draft-johani-dnsop-delegation-mgmt-via-ddns-03'>
   <front>
      <title>Automating DNS Delegation Management via DDNS</title>
      <author fullname='Johan Stenstam' initials='J.' surname='Stenstam'>
         <organization>The Swedish Internet Foundation</organization>
      </author>
      <date day='8' month='July' year='2024'/>
      <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-johani-dnsop-delegation-mgmt-via-
   ddns (https://github.com/johanix/draft-johani-dnsop-delegation-mgmt-
   via-ddns).  The most recent working version of the document, open
   issues, etc, should all be available there.  The author (gratefully)
   accept pull requests.

	 </t>
      </abstract>
   </front>
   <seriesInfo name='Internet-Draft' value='draft-johani-dnsop-delegation-mgmt-via-ddns-03'/>
   
</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>


<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-00</t>
</list></t>

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

</section>


  </back>

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

-->

</rfc>

