<?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-leon-dnsop-signaling-zone-owner-intent-00" category="std" consensus="true" tocInclude="true" sortRefs="true" symRefs="true">
  <front>
    <title abbrev="Signaling Zone Owner Intent">Signaling Zone Owner Intent</title>

    <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="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="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>
    <author initials="S." surname="Crocker" fullname="Steve Crocker">
      <organization>Edgemoor Research Institute</organization>
      <address>
        <postal>
          <country>United States</country>
        </postal>
        <email>steve@shinkuro.com</email>
      </address>
    </author>

    <date />

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

    <abstract>


<t>This document introduces a standardized mechanism for zone owners to
signal their intent regarding DNS provider responsibilities through
DNS itself. It defines a new DNS RRtype, HSYNC (Horizontal
Synchronization), that enables zone owners to designate which
providers are authorized to serve and/or sign their zones, control
whether providers or the zone owner manages the NS RRset, and specify
zone transfer chain configurations.</t>

<t>The HSYNC record allows DNS providers to discover each other and
establish secure communication channels, either via DNS messages
secured by SIG(0) signatures or via a RESTful API secured by TLS. This
provider-to-provider communication via Agents enables automated
coordination for tasks such as NS RRset management, zone transfers,
and DNSSEC-related operations. This specification covers the provider
discovery and communication establishment aspects.</t>

<t>The document defines two new roles to facilitate this synchronization:
the Agent responsible for provider-to-provider communication and the
Combiner which merges unsigned zone data from the zone owner with
managed data from providers.</t>

<t>While a distributed DNSSEC multi-signer architecture (similar to 
"model 2" in RFC8901) is an important application of this framework, 
the HSYNC mechanism supports broader provider synchronization needs.</t>

<t>The specific synchronization algorithms for multi-signer operation are
described in <xref target="I-D.draft-ietf-dnsop-dnssec-automation"/>. Specification
for how to express these algorithms over provider-to-provider
communication is left for a follow-up document.</t>

<t>TO BE REMOVED: This document is being collaborated on in Github at:
<eref target="https://github.com/johanix/draft-leon-dnsop-signaling-zone-owner-intent">https://github.com/johanix/draft-leon-dnsop-signaling-zone-owner-intent</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>DNS zone owners often need to work with multiple DNS providers to
serve their zones. These providers may have different
responsibilities - some may sign the zone, some may only serve it, and
some may do both. Traditionally, the configuration of these providers
and their responsibilities has been handled through manual processes
and provider-specific mechanisms.</t>

<t>This document presents a standardized mechanism for zone owners to
signal their intent regarding DNS provider responsibilities through
DNS itself. It defines a new DNS RRtype, HSYNC, that allows zone
owners to:</t>

<t><list style="symbols">
  <t>Designate which providers should serve the zone.</t>
  <t>Specify whether each provider should sign the zone.</t>
  <t>Control whether providers or the zone owner manages the NS RRset.</t>
  <t>Specify on a provider-level how the zone transfer chain should be setup.</t>
  <t>Enable providers to locate each other and establish secure communication.</t>
</list></t>

<t>By publishing this information in the DNS, zone owners ensure all
providers receive consistent configuration information. This enables
automated coordination between providers for tasks like:</t>

<t><list style="symbols">
  <t>NS RRset management across multiple providers.</t>
  <t>Addition or removal of providers.</t>
  <t>Transition between different signing configurations.</t>
  <t>Management of DNSSEC-related records when multiple signers are used.</t>
  <t>Zone transfer chain configuration.</t>
</list></t>

<t>The intent of this document is to define a framework for secure
provider-to-provider communication, based directly on intent expressed
by the zone owner.</t>

<t>Lots of work remain with specification of the details for the various
synchronization processes that will be expressed over this
framework. That will take place in follow-up documents.</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 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>

<t>Provider:
   In the context of this document the term "provider" always indicate
   a "DNS provider", i.e. an entity that provides DNS services,
   eg. DNSSEC-signing and/or authoritative nameservice.
...</t>

</section>
<section anchor="requirements"><name>Requirements</name>

<t>The requirements for an architecture facilitating DNS provider
synchronization are defined as follows:</t>

<t><list style="symbols">
  <t>Zone owners MUST be able to signal to their DNS providers
information sufficient for the providers to identify each other and
establish secure communication.</t>
  <t>All signaling from zone owner to DNS providers SHOULD be carried out
via data in the served zone, ensuring that all providers receive the
same configuration information at approximately the same time.</t>
  <t>Zone owners MUST be able to explicitly specify which DNS providers
should serve and/or sign their zones.</t>
  <t>Zone owners MUST be able to signal the intent to onboard an
additional DNS provider. This MUST automatically initiate the
appropriate provider synchronization processes.</t>
  <t>Zone owners MUST be able to signal the intent to offboard an
existing DNS provider. This MUST automatically initiate the
appropriate provider synchronization processes.</t>
  <t>By engaging DNS providers for signing, the zone owner MUST give up
control over the following records:
  <list style="symbols">
      <t>All DNSSEC-related records in the zone.</t>
      <t>Any CDS and/or CSYNC RRsets.</t>
    </list></t>
  <t>It SHOULD be possible but NOT MANDATORY for the zone owner to also
delegate the management of the NS RRset to the set of DNS providers.</t>
  <t>DNS providers MUST be able to locate and establish secure
communication with each other based on the information
provided by the zone owner in the DNS via the HSYNC RRset.</t>
  <t>The architecture SHOULD support both DNS-based and API-based
communication between providers.</t>
  <t>The architecture SHOULD allow for smooth transitions between
different provider configurations without service interruption.</t>
</list></t>

</section>
<section anchor="dns-provider-synchronization-scenarios"><name>DNS Provider Synchronization Scenarios</name>

<t>The HSYNC framework supports a variety of scenarios where zone owners
need to coordinate multiple DNS providers. The following scenarios
illustrate the range of use cases this mechanism enables:</t>

<section anchor="coordinated-ns-record-management"><name>Coordinated NS Record Management</name>

<t>A zone owner uses two DNS providers - one signs and serves the zone
while another only serves it. Through the HSYNC RRset, the zone owner
signals to both providers who is authorized to do what. The providers'
Agents establish secure communication channels, allowing them to
coordinate NS RRset management across all authoritative nameservers
without manual intervention. The zone owner can decide whether to
retain control of NS records or delegate this responsibility to the
providers.</t>

</section>
<section anchor="multi-provider-dnssec-redundancy"><name>Multi-Provider DNSSEC Redundancy</name>

<t>A zone owner needs to eliminate the "signing" single point of failure
in their DNSSEC setup. By contracting with multiple "multi-signer
capable" DNS providers and using data from the HSYNC RRset, the zone
owner enables each provider to:</t>

<t><list style="symbols">
  <t>Locate other designated providers via the HSYNC RRset and establish
secure communications.</t>
  <t>Coordinate DNSKEY, CDS, CSYNC and NS RRset management.</t>
  <t>Sign the zone using its own DNSKEYs while publishing a DNSKEY RRset
that includes keys from all authorized signers.</t>
  <t>Distribute the signed zone to its authoritative nameservers and
possibly to non-signing downstream providers.</t>
</list></t>

<t>This creates a fully redundant DNSSEC infrastructure with no single
point of failure.</t>

</section>
<section anchor="provider-transition-management"><name>Provider Transition Management</name>

<t>A zone owner wishes to replace their current DNSSEC-signing provider
with a new one. Using the mechanism provided by the HSYNC RRset, they
are able to:</t>

<t><list style="symbols">
  <t>Add a new HSYNC record with State="ON" for the incoming provider,
initiating the onboarding process.</t>
  <t>Allow the automated synchronization between providers to handle key
exchange and transition.</t>
  <t>Once the new provider is fully operational, change the HSYNC State
for the outgoing provider to "OFF" when convenient.</t>
  <t>The providers then automatically coordinate the safe removal of the
outgoing provider's data.</t>
</list></t>

<t>This entire process maintains continuous service and valid signatures
while transitioning between DNS providers.</t>

</section>
<section anchor="delegated-ns-management"><name>Delegated NS Management</name>

<t>A zone owner wants DNS providers to handle NS RRset management while
retaining control of other zone data. By setting the NSMgmt field to
"AGENT" in the HSYNC RRset, the zone owner explicitly delegates NS
management responsibility to the DNS providers. The DNS providers then
coordinate to maintain a consistent NS RRset across all authoritative
servers, adding or removing nameservers as needed based on the current
set of authorized providers.</t>

</section>
<section anchor="phased-migration-to-multi-provider-architecture"><name>Phased Migration to Multi-Provider Architecture</name>

<t>A zone owner currently using a single provider wants to implement a
more robust architecture but prefers a gradual transition. They can:</t>

<t><list style="symbols">
  <t>First add a single HSYNC record designating their current provider,
making no immediate operational changes</t>
  <t>Later add a second HSYNC record to designate an additional provider</t>
  <t>Allow the providers to automatically coordinate the transition</t>
  <t>Optionally delegate NS management to the providers by changing
NSMgmt from "OWNER" to "AGENT"</t>
</list></t>

<t>This approach enables a controlled, phased migration to a more
resilient multi-provider architecture.</t>

</section>
</section>
<section anchor="the-agent-integrated-signer-vs-separate-agent"><name>The Agent: Integrated Signer vs Separate Agent</name>

<t>In a distributed setup there must be a service located with each
DNS Provider that manages communication with other DNS
Providers. This is referred to as the Agent.</t>

<t>It is possible to implement support for the synchronization and
communication needs directly into an existing component of the
provider's provisioning infrastructure (which may be as simple as an
authoritative nameserver with or without the ability to do online
DNSSEC signing). In that case this component implements the Agent
functionality.</t>

<t>However, it is also possible to separate the synchronization and
communication needs into a separate agent. This Agent sits next to the
existing infrastructure, and is under the same administrative control
(the "DNS Provider"), but is a separate piece of software. Each Agent
is configured as a "secondary nameserver" and receives the (usually
signed) zone. In this document the functional separation using a
distinct Agent is used for clarity, not as a statement on preferred
implementation choice.</t>

<t>The "separate Agent" design has the major advantage of leaving the
DNSSEC-signer (if any) outside of the synchronization and
communication complexity. The requirements are only that the Agent is
treated as a normal secondary (it receives NOTIFY messages and is able
to request zone transfers).</t>

</section>
<section anchor="source-of-truth"><name>Source of Truth</name>

<t>A common design for DNSSEC signing (regardless of multi-signer) is to
use a separate, bump-on-the-wire Signer. This is a Signer that
receives the unsigned zone via an incoming zone transfer, signs the
zone, and publishes the signed zone via an outbound zone transfer. In
such a design the source of truth has been split up between the "zone
owner" (source of truth for all non-DNSSEC zone data), and the Signer
(source of truth for all DNSSEC data in the zone plus the DNSKEY RRset).</t>

<t>In the proposed architecture the source of truth is further split up
into three participants:</t>

<t><list style="symbols">
  <t>The zone owner is the source of truth for all unsigned zone data,
except DNSSEC data and possibly the NS RRset.</t>
  <t>The Signer is the source of truth for all data generated via DNSSEC
signing: own DNSKEYs, NSEC/NSEC3 RRs, RRSIGs, etc.</t>
  <t>The Agent is the source of truth for the RRsets that must be kept in
sync across all the Signers for the zone. This includes the DNSKEYs
from other providers, CDS and CSYNC RRsets. Possibly also the NS RRset.</t>
</list></t>

<t>The NS RRset is an interesting special case. Traditionally the NS
RRset is maintained by the zone owner, but based on data from the DNS
providers (as authoritative nameservers is a primary service for the
DNS provider). However, in the proposed architecture the NS RRset
should preferably be maintained by the Agents. For this reason the
proposed design makes control of the NS RRset explicit and the
responsibility of the zone owner to choose whether to retain control
or delegate to the Agents. Hence:</t>

<t><list style="symbols">
  <t>The Agent is the source of truth for the NS RRset, subject to the
policy of the zone owner, as described in the HSYNC RRset.</t>
</list></t>

<t>Making the control of the NS RRset explicit is useful regardless of
whether a zone uses multiple signers or single signer, as this makes
the zone owner intent explicit.</t>

<t>To be able to keep the Signer as simple as possible, the changes to the
NS, DNSKEY, CDS and CSYNC RRsets must be introduced into the unsigned
zone before the zone reaches the Signer. Likewise, to keep the zone
owner as simple as possible (i.e. not involved in the details of the
multi-signer automation) these changes must be introduced into the
unsigned zone after the zone leaves the zone owner.</t>

<section anchor="the-combiner"><name>The Combiner</name>

<t>The consequence of these requirements is that the DNSKEY, CDS and
CSYNC RRsets (and possibly the NS RRset) are maintained via a separate
piece of software inserted between the zone owner and the Signer. This
is referred to as the Combiner.</t>

<t>The Combiner has the following features:</t>

<t><list style="symbols">
  <t>It supports inbound zone transfer of the unsigned zone from the
zone owner.</t>
  <t>It receives updates for the NS, DNSKEY, CDS and CSYNC
RRsets from the Agent. Typically the mechanism used is DNS UPDATE
with a TSIG signature, as this is easy to configure in a local
context. However, other mechanisms, including APIs, are possible.</t>
  <t>It stores all data received from the Agent separate from
the zone data received from the zone owner.</t>
  <t>Whenever it receives a new unsigned zone from the zone owner it
COMBINES zone data from the zone owner (the majority of the zone)
with specific zone data under control of the Agent: three specific
RRsets, all in the apex of the zone: the DNSKEY, CDS and CSYNC
RRsets. According to zone owner policy expressed in the HSYNC RRset
it will also update the NS RRset.</t>
  <t>It is policy free (apart from being limited to the four specified
RRsets). I.e. the Combiner is not making any judgement about what
data to include in the zone from the four defined RRsets. That
judgement is the role of the Agent.</t>
  <t>It does not sign the zone.</t>
  <t>It provides outbound zone transfer of the combined zone to the
Signer.</t>
</list></t>

<t>Example setup with two signers showing the logical flow of zone data
between the zone owner, the Combiner, the Signer and the Agent:</t>

<figure><artwork><![CDATA[
                            +--------------+
                            |     owner    |
               xfr          +-+---------+--+    xfr
            /----------------/           \----------------------\
           /                                                     \
    +-----+----+    DNS  +-------+ DNS/API +-------+  DNS    +----+-----+
    | combiner +<--------+ agent +---------+ agent +-------->+ combiner |
    +-----+----+  UPDATE +--+----+         +--+----+ UPDATE  +----+-----+
          |                 ^                 ^                 |
          v xfr             |                 |                 v xfr
    +-----+----+     xfr    |                 |   xfr      +----+-----+
    |  signer  +------------+                 +------------+  signer  |
    +-----+----+                                           +----+-----+
          |                                                     |
          v                                                     v
       +--+--+                                               +--+--+
       | NS  |--+                                            | NS  |+
       +-----+  |--+                                         +-----+|-+
          +-----+  |                                            +---+ |
             +-----+                                              +---+
]]></artwork></figure>

</section>
<section anchor="the-dns-provider"><name>The DNS Provider</name>

<t>A "DNS Provider" is a term that is most commonly used to refer to an
entity that provides authoritative DNS service to one or more zone
owners. In the context of this document it is used to refer to an
entity that provides some subset of the following services:</t>

<t><list style="symbols">
  <t>Signing a zone received from the zone owner.</t>
  <t>Serving the zone via a set of authoritative nameservers.</t>
  <t>Distributing the signed zone to other downstream DNS Providers.</t>
</list></t>

<t>In addition to the above services a DNS Provider MUST also provide:</t>

<t><list style="symbols">
  <t>An Agent for synchronization with other DNS Providers</t>
  <t>A Combiner for the management of changes to the zone via
the synchronization among Agents (if it provides a signer)</t>
</list></t>

<t>I.e. in the setup above there are two DNS Providers, both of which are
"complete" in the sense that they provide all three of the above
services.</t>

</section>
</section>
<section anchor="identifying-the-designated-dns-providers"><name>Identifying the Designated DNS Providers</name>

<t>It is the responsibility of the zone owner to choose a set of "DNS
Providers", either internal or external to the zone owner's
organization. These DNS Providers MUST be clearly and uniquely
designated via publication in the HSYNC RRset, located at the apex of
the zone and consisting of one HSYNC record for each signer.</t>

<t>The HSYNC RRset MUST be added, by the zone owner, to the, typically
unsigned, zone that the zone owner maintains so that this RRset is
visible to the downstream DNS Providers and their Agents.</t>

</section>
<section anchor="the-hsync-rrset"><name>The HSYNC RRset</name>

<t>The HSYNC RR has the zone name that publishes the HSYNC RRset as the
owner name (i.e. the HSYNC RRset must be located at the apex of the
zone). The RDATA consists of five fields "State","NSMgmt", "Sign",
"Identity" and "Upstream":</t>

<t>zone.example.    IN HSYNC  State  NSMgmt  Sign  Identity  Upstream</t>

<t>State:
    Unsigned 8-bit. Defined values are 1=ON and 2=OFF. The value 0
    is an error.  Values 3-127 are presently undefined. Values 128-255
    are reserved for private use. The presentation format MUST
    use the tokens "ON" and "OFF".</t>

<t>NSMgmt:
    Unsigned 8-bit. Defined values are 1=Zone owner and
    2=Agent. The value 0 is an error. Values 3-255 are presently
    undefined (and not expected to be defined). The presentation
    format MUST use the tokens "OWNER" and "AGENT".</t>

<t>Sign:
    Unsigned 8-bit. Defined values are 1=SIGN and 2=NOSIGN. The value
    0 is an error. If Sign=YES for a particular HSYNC record, then the
    signer associated with that Identity is a designated signer for
    the zone. The presentation format MUST use the tokens "SIGN" and 
    "NOSIGN".</t>

<t>Identity:
    Domain name. Used to uniquely identify the Agent for the DNS Provider
    that the Agent represents.</t>

<t>Upstream:
    Domain name. Used to uniquely identify the upstream DNS Provider
    that this DNS Provider is a downstream of. The special case of "."
    is used to signal that this DNS Provider either has no upstream
    (is the zone owner), or that the upstream is to be configured
    manually.</t>

<t>Example:</t>

<t>zone.example.   IN HSYNC  ON  AGENT  SIGN  agent.provider.example. upstream.</t>

<section anchor="semantics-of-the-hsync-state-field"><name>Semantics of the HSYNC State Field</name>

<t>The HSYNC State field is used to signal to all Agents what the status
of each DNS Provider is from the point-of-view of the zone owner. The
two possible values are "ON" and "OFF" where "ON" means that the DNS
Provider is a currently a designated DNS Provider for the zone (or in
the process of being on-boarded and "OFF" means that the DNS Provider
is previously a designated DNS Provider for the zone that is in the
process of being offboarded.</t>

<t>One use for the "OFF" state is that the offboarding process involves
the remaining DNS Providers (hence the signalling) and it is important
to know which DNS Provider is being offboarded so that the correct
data may be removed in the correct order, eith during the multi-signer
"remove signer" process (see <xref target="RFC8901"/>) or, a simpler "remove auth
nameserver" process.</t>

<t>Once the offboarding process is complete the HSYNC RR for the
offboarded DNS Provider may be removed from the zone at the zone
owners discretion.</t>

<t>Another use for the State=OFF is during initial setup of a new DNS
provider. As long as State=OFF, no data from the provider must be used
by other providers. However, it is possible to verify that
communication, etc, works as intended.</t>

</section>
<section anchor="semantics-of-the-hsync-nsmgmt-field"><name>Semantics of the HSYNC NSMgmt Field</name>

<t>The NSMgmt field is used to signal to the Agents who is responsible for
the contents of the NS RRset for the zone. The two possible values are
"OWNER" and "AGENT".</t>

<t>The value "OWNER" signals that the zone owner is responsible for the NS
RRset and is responsible for updating the NS RRset (either with or
without the unified data from all Agents). In this case the Agents MUST NOT
instruct the Combiner to update the NS RRset.</t>

<t>The value "AGENT" means that the Agents representing DNS Providers that
sign the zone are responsible for the contents of the NS RRset. In
this case the these Agents MUST instruct the local Combiner to update the NS
RRset with the unified NS RRset data from all Agents.</t>

<section anchor="limitation-of-scope-for-hsync-based-ns-management"><name>Limitation of Scope for HSYNC-based NS Management</name>

<t>For the purpose of this document the NSMgmt Field in the HSYNC record
only covers the NS RRset. I.e. it does not include the address records
of in-bailiwick authoritative nameservers. The reasons are:</t>

<t><list style="symbols">
  <t>Limiting the possibility of DNS Providers "polluting" the name space
of the zone.</t>
  <t>Keeping the specification simpler, as the concept of "delegated" NS
management is new.</t>
</list></t>

<t>It is possible to make an argument for delegating management of
address records for in-bailiwick authoritative nameservers, but this
document does not.</t>

</section>
</section>
<section anchor="semantics-of-the-hsync-sign-field"><name>Semantics of the HSYNC Sign Field</name>

<t>The Sign field is used to signal to all Agents whether the zone owner
requests that the DNS Provider that the Agent represents should sign
the zone or not. The two possible values are "SIGN" and "NOSIGN" where
"SIGN" means that the Agent represents a a DNS Provider that should
sign the zone and "NOSIGN" means that the Agent does not.</t>

<t>When Sign=NOSIGN the Agent MUST still participate in the communication
between Agents for the zone, to ensure proper synchronization of data
between providers. If NSmgmt=AGENT, the Agent should still instruct
the Combiner to update the NS RRset, otherwise no.</t>

</section>
</section>
<section anchor="communication-between-agents"><name>Communication Between Agents</name>

<t>For the communication between Agents there are two choices that need to
be made among the designated Agents for a zone. The first is what
"transport" to use for the communication. The second is what
"synchronization" model to use when executing future synchronization
processes.</t>

<t>The two defined transport alternatives are:</t>

<t><list style="symbols">
  <t>DNS-based communication (mandatory to support)</t>
  <t>REST API-based communication</t>
</list></t>

<t>Each has pros and cons and at this point in time it is not clear that
one always is better than the other. To simplify the choice of
transport DNS-based communication is mandatory to support and the REST
API-based communication may only be used if all Agents support
it. Supported transports are signaled in the Provider-Synchronization
EDNS(0) Option (see section NNN below).</t>

<t>The two defined synchronization alternatives are:</t>

<t><list style="symbols">
  <t>Leader/Follower synchronization (mandatory to support)</t>
  <t>Peer-to-Peer synchronization</t>
</list></t>

<t>Just as for transport, supported synchronization models are signaled
in the Provider-Synchronization EDNS(0) Option (see section <xref target="provider-synchronization-edns0-option-format">Provider-Synchronization EDNS(0) Option</xref> below).</t>

<t>Regardless of the synchronization model and communication method used,
the Agents SHOULD exchange all needed information about the zone and
the DNS Provider they represent to enable the synchronization
processes to execute correctly. This includes notifications about
changes to DNSKEYs, changes to the NS RRset, etc. Depending on
synchronization model it may also include instructions for changes to
the zone.</t>

<t>In all cases the information published by a DNS provider to allow
other providers to locate its Agent MUST be DNSSEC-signed.</t>

<section anchor="agent-communication-via-dns"><name>Agent Communication via DNS</name>

<t>This transport alternative is based on the observation that all the
communication needs between Agents can be expressed via DNS
messages. Notifications are sent as DNS NOTIFY messages. Requests for
changes to a zone are sent as DNS UPDATE messages, etc. One
remaining communication requirement is for how to communicate
information about the current state between Agents in an ongoing
synchronization process. For this reason a dedicated EDNS(0) opcode
specifically for provider synchronization is proposed.</t>

<t>This model is based on <xref target="I-D.draft-berra-dnsop-keystate"/> that solves
a similar problem for delegation synchronization between child and
parent, which has already been implemented and shown to work.</t>

</section>
<section anchor="agent-communication-via-rest-api"><name>Agent Communication via REST API</name>

<t>REST APIs are well-known and a natural fit for many distributed
systems. The challenge is mostly in the initial setup of secure
communication. The certificates need to be validated, preferably
without a requirement on trusting a third party CA. The API endpoints
for each Agent need to be located. Once secure communication has been
established, using a REST API for Agent communication is
straight-forward.</t>

</section>
<section anchor="locating-remote-agents"><name>Locating Remote Agents</name>

<t>When an Agent receives a zone via zone transfer from the Signer it will
analyze the zone to see whether it contains an HSYNC RRset. If there
is no HSYNC RRset the zone MUST be ignored by the Agent from the
point-of-view of provider synchronization.</t>

<t>If, however, the zone does contain an HSYNC RRset then the Agent MUST
analyze this RRset to identify the other Agents for the zone via their
target names in each HSYNC record. If any of the other Agents listed in
the HSYNC RRset is previously unknown to this Agent then secure
communication with this other Agent MUST be established.</t>

<t>Secure communication can be achieved via various transports and it is
up to the Agents in the zone's HSYNC RRset to determine amongst
themselves. This document proposes two transports: "DNS" and
"API". "DNS" is designated as as a baseline that Agents MUST support to
be compliant.</t>

<t>The following two subsections describe the mechanism by which an Agent
SHOULD locate a remote Agent and establish secure DNS-based and
API-based communications, respectively.</t>

<section anchor="locating-a-remote-dns-transport-agent"><name>Locating a Remote DNS Transport Agent</name>

<t>Locating a remote Agent using the DNS mechanism consists of the
following steps:</t>

<t><list style="symbols">
  <t>Lookup and DNSSEC-validate a URI record for the DNS protocol for
the HSYNC identity. This provides the domain name and port to
which DNS messages should be sent.</t>
  <t>Lookup and DNSSEC-validate the SVCB record of the URI record target
to get the IP addresses to use for communication with the remote
Agent.</t>
  <t>If both the URI record and the SVCB record both include information
about the target port then the port information in the SVCB MUST
take precedence.</t>
  <t>Lookup and DNSSEC-validate the KEY record of the URI record target
name.  This enables verification of the SIG(0) public key of the
remote Agent once communication starts.</t>
</list></t>

<t>Example: given the following HSYNC record for a remote Agent:</t>

<t>zone.example. IN HSYNC  ON  AGENT  SIGN  agent.provider.com. agent.zone.example.</t>

<t>The local Agent will look up the URI record for agent.provider.com:</t>

<t>_dns._tcp.agent.provider.com.  IN  URI  10 10 "dns://ns.provider.com:5399/"
_dns._tcp.agent.provider.com.  IN  RRSIG URI …</t>

<t>which triggers a lookup for ns.provider.com. SVCB to get the IPv4
and IPv6 addresses as ipv4hints and ipv6hints in the response to the
SVCB query:</t>

<t>ns.provider.com.   IN  SVCB  1 ipv4hint=5.6.7.8 ipv6hint=2001::53
ns.provider.com.   IN  RRSIG SVCB …</t>

<t>and also a look up for the KEY record for ns.provider.com, which
may look like this:</t>

<t>ns.provider.com.  IN  KEY …
ns.provider.com.  IN  RRSIG KEY …</t>

<t>Once all the DNS lookups and DNSSEC-validation of the returned data
has been done, the local Agent is able to initiate communication with
the remote Agent and verify the identity of the responding party via the
validated KEY record for the remote Agents SIG(0) public key.</t>

</section>
<section anchor="locating-a-remote-api-transport-agent"><name>Locating a Remote API Transport Agent</name>

<t>Locating a remote Agent using the API mechanism consists of the
following steps:</t>

<t><list style="symbols">
  <t>Lookup and DNSSEC-validate the URI record for for the HTTPS protocol
for the HSYNC identity. This provides the base URL that will be used
to construct the individual API endpoints for the REST API. It also
provides the port to use.</t>
  <t>Lookup and DNSSEC-validate the SVCB record for the URI record
target.  This provides the IP-addresses to use for communication
with the Agent.</t>
  <t>If both the URI record and the SVCB record both include information
about the target port then the port information in the SVCB MUST
take precedence.</t>
  <t>Lookup and DNSSEC-validate the TLSA record for the port and protocol
specified in the URI record. This will enable verification of the
certificate of the remote Agent once communication starts.</t>
</list></t>

<t>Example: given the following HSYNC record for a remote Agent:</t>

<t>zone.example.     IN HSYNC  ON  AGENT  YES  agent.provider.com. agent.zone.example.</t>

<t>the local Agent will look up the URI record for agent.provider.com:</t>

<t>_https._tcp.agent.provider.com.  IN  URI  10 10 “https://api.provider.com:443/api/v2/”
_https._tcp.agent.provider.com.  IN  RRSIG URI …</t>

<t>which triggers a lookup for api.provider.com IPv4 and IPv6
addresses as hints in an SVCB RR:</t>

<t>api.provider.com.   IN  SVCB 1 ipv4hint=1.2.3.4 ipv6hint=2001::bad:cafe:443
api.provider.com.   IN  RRSIG SVCB …</t>

<t>Now we know the IP-address and the port as well as the base URL to
use. Finally the TLSA record for _443._tcp.api.provider.com is
looked up, with a response that may look like this:</t>

<t>_443._tcp.api.provider.com.  IN  TLSA 3 1 1 ….
  _443._tcp.api.provider.com.  IN  RRSIG TLSA …</t>

<t>Once all the DNS lookups and DNSSEC-validation of the returned data
has been done, the local Agent is able to initiate communication with
the remote Agent and verify the identity of the responding party via the
TLSA record for the remote Agents certificate.</t>

<section anchor="fallback-to-dns-based-communication"><name>Fallback to DNS-based Communication</name>

<t>If the API-based communication fails, either because needed DNS
records are missing, the TLSA record fails to validate the remote Agents
certificate or the remote Agent simply doesn't respond, the local Agent
MUST fall back to DNS-based communication.</t>

</section>
</section>
</section>
<section anchor="the-initial-hello-phase"><name>The Initial HELLO Phase</name>

<t>When two Agents need to communicate with each other for the first time
(because they are both designated DNS providers for the same zone), they
need to establish secure communication. This is done in a "HELLO"
phase where the Agents exchange information about their capabilities.</t>

<t>If all the information needed for API-based transport for the remote
party was available, the Agent SHOULD attempt an API-based HELLO. If,
however, this fails for some reason, it should fall back to DNS-based
HELLO.</t>

<section anchor="dns-based-hello-phase"><name>DNS-based HELLO Phase</name>

<t>When using DNS-based communication the HELLO phase is done by sending
a NOTIFY(SOA) for the zone that triggered the need for
communication. The NOTIFY message MUST contain a
Provider-Synchronization EDNS(0) Option (see section <xref target="provider-synchronization-edns0-option-format">Provider
Synchronization EDNS(0) Option</xref> below).</t>

<t>In the Provider-Synchronization EDNS(0) Option the OPERATION field
MUST have the value "HELLO" (1). Furthermore, the Agent signals its
transport and synchronization capabilities in the TRANSPORT and
SYNCHRONIZATION fields. This message is signed with the SIG(0) key for
the local Agent for which the public key is published as a KEY record
for the Agent.</t>

<t>In the response to the NOTIFY, the remote Agent does the same and the
two Agents can now verify each other's identity and are also aware of
the other Agents transport and synchronization capabilities.</t>

</section>
<section anchor="api-based-hello-phase"><name>API-based HELLO Phase</name>

<t>When using API-based communication the HELLO phase is done by sending
a REST API POST request to the remote Agent at the "/hello"
endpoint. The request MUST contain a JSON encoded object with the
following fields:</t>

<t><list style="symbols">
  <t>"transport": The transport capabilities of the local Agent.</t>
  <t>"synchronization": The synchronization capabilities of the local Agent.</t>
</list></t>

<t>The response MUST contain a JSON object with the following fields:</t>

<t><list style="symbols">
  <t>"transport": The transport capabilities of the remote Agent.</t>
  <t>"synchronization": The synchronization capabilities of the remote Agent.</t>
</list></t>

</section>
<section anchor="interpretation-of-the-hello-responses"><name>Interpretation of the HELLO Responses</name>

<t>Once an Agent has received HELLO responses from all other Agents that
are designated signers for the zone, it knows the capabilities of the
Agents as a group. It can then use this information to determine which
transport to use:</t>

<t><list style="symbols">
  <t>If all Agents support API-based communication, the Agents will use
API-based communication for this zone.</t>
  <t>If one or more Agents only support DNS-based communication, the
Agents will use DNS-based communication for this zone.</t>
</list></t>

<t>Likewise, each Agent now knows the provider synchronization
capabilities of the other Agents and can determine which
synchronization model to use:</t>

<t><list style="symbols">
  <t>If all Agents support the Peer-to-Peer synchronization model, the
Agents will use the Peer-to-Peer synchronization model for this
zone.</t>
  <t>If one or more Agents only support the Leader/Follower
synchronization model, the Agents will use the Leader/Follower
synchronization model for this zone.</t>
</list></t>

</section>
</section>
<section anchor="provider-synchronization-edns0-option-format"><name>Provider-Synchronization EDNS(0) Option Format</name>

<t>This document uses an Extended Mechanism for DNS (EDNS0) <xref target="RFC6891"/>
option to include DNS Provider synchronization information in DNS
messages.</t>

<t>This option is structured the same way as the KeyState option
described in <xref target="I-D.draft-berra-dnsop-keystate"/>, which has been
implemented and shown to work for a similar use case. The requirements
for DNS Provider synchronization are sufficiently different that it is
not possible to re-use the KeyState OPT also for this purpose and
therefore a new EDNS(0) option is defined here.</t>

<t>The Provider-Synchronization EDNS(0) 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:  |           OPERATION           |           TRANSPORT           |
     +---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+
 8:  |    SYNCHRONIZATION-MODEL      |                               /
     +---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+
 10: / OPERATION-BODY                                                /
     +---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+
]]></artwork></figure>

<t>Field definition details:</t>

<t>OPTION-CODE:
    2 octets / 16 bits (defined in <xref target="RFC6891"/>) contains the value TBD
    for Provider-Synchronization.</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 OPERATION-BODY field
    (which may be zero octets long).</t>

<t>OPERATION:
    8 bits. Signals the type of operation the message
    performs. This document defines the two operations HELLO and
    HEARTBEAT. For a complete distributed multi-signer specification a
    number of additional operations will need to be allocated to be
    able to describe the states in the different multi-signer
    processes. This allocation must be done either in a revision to
    this document or in a subsequent document.</t>

<t>TRANSPORT:
    8 bits. Encodes the transport capabilities of the Agent. With
    8 bits it is possible to define up to 8 different transports of
    which this document defines two: DNS and API.</t>

<t>SYNCHRONIZATION-MODEL:
    8 bits. Encodes the synchronization capabilities of the Agent.
    With 8 bits it is possible to define up to 8 different
    synchronization models of which this document identifies two:
    Leader/Follower and Peer-to-Peer.</t>

<t>OPERATION-BODY:
    Variable-length. Used to carry operation-specific parameters.</t>

<section anchor="encoding-transport-capabilities-in-the-provider-synchronization-edns0-option"><name>Encoding Transport Capabilities in the Provider-Synchronization EDNS(0) Option</name>

<t>An Agent signals the union of its transport capabilities by setting the
corresponding bits to 1.</t>

<t>0: DNS transport supported (baseline, MUST be supported by all Agents)</t>

<t>1: API transport supported</t>

<t>2-7: unused</t>

</section>
<section anchor="encoding-synchronization-capabilities-in-the-provider-synchronization-edns0-option"><name>Encoding Synchronization Capabilities in the Provider-Synchronization EDNS(0) Option</name>

<t>An Agent signals its synchronization capabilities by setting the
corresponding bits to 1.</t>

<t>0: Leader/Follower multi-signer synchronization supported</t>

<t>1: Peer-to-Peer multi-signer synchronization supported</t>

<t>2-7: unused</t>

</section>
</section>
</section>
<section anchor="sequence-diagram-example-of-establishing-secure-comms-the-hello-phase"><name>Sequence Diagram Example of Establishing Secure Comms - "The Hello Phase"</name>

<t>The procedure of locating another Agent and establishing a secure
communication, referred to as "The Hello Phase" is examplified in the
sequence diagram below.</t>

<t>The procedure is as follows:</t>

<t><list style="numbers">
  <t>The Agents receive a zone via zone transfer. By
analyzing the HSYNC RRset each Agent become aware of the identities
of the other Agents for the zone. I.e. each Agent knows which other
Agents it needs to communicate with.  Communication with each of
these, previously unknown, remote Agents is referred to as "NEEDED".</t>
  <t>Each Agent starts aquiring the information needed to establish secure
communications with any previously unknown Agents. Here we only
illustrate the baseline case where DNS-based communications is to
be used in the following phase. Once all needed information has
been collected the communication with this remote Agent is considered
to be "KNOWN".</t>
  <t>Once an Agent has received the required information (URI, SVCB and
KEY records in the baseline case) it sends a NOTIFY message with a
dedicated Provider-Synchronization OPT code with OPERATION="HELLO".
The sender uses this OPT field to signal its transport and synchronization
capabilities. Similarly, the responder signals its capabilities
using the same field.</t>
  <t>When an Agent either gets a NOERROR response to its NOTIFY OPT(hello)
message or responds with a NOERROR, it transitions out of "The
Hello Phase" with the exchanging party and they transition to the
next phaste where they start sending NOTIFY OPT(heartbeat) signals
instead. The communication with the remote Agent is now considered to
be in the "OPERATIONAL" state.</t>
</list></t>

<t>In the case where one Agent is aware of the need to communicate with
another Agent, but the other is not (eg. the zone transfer was delayed
for one of them), the slower one SHOULD respond with a RCODE=REFUSED
to any NOTIFY OPT(hello) it receives. Once it is ready, it will send
its own NOTIFY OPT(hello) which should be responded to with a
RCODE=NOERROR.</t>

<figure><artwork><![CDATA[
+----------+                 +----------+                        +----------+
|  Owner   |                 | Agent A  |                        | Agent B  |
+----------+                 +----------+                        +----------+
     |                            |                                    |
     |      AXFR(sign-me.se.)     |                                    |
     |--------------------------->|                                    |
     |      AXFR(sign-me.se.)     |                                    |
     |---------------------------------------------------------------->|
     |                            |                                    |
     |                            |                                    |
     |                            |  QUERY _dns._tcp.agent-b.se. URI?  |
     |                            |----------------------------------->|
     |                            |  QUERY ns.agent-b.se. SVCB?        |
     |                            |----------------------------------->|
     |                            |  QUERY ns.agent-b.se. KEY?         |
     |                            |----------------------------------->|
     |                            |                                    |
     |                            |                                    |
     |                            |  NOTIFY sign-me.se. OPT(hello)     |
     |                            |----------------------------------->|
     |                            |  NOERROR sign-me.se. OPT(hello)    |
     |                            |<-----------------------------------|
     |                            |                                    |
     |                            |                                    |
     |                            |  NOTIFY sign-me.se. OPT(heartbeat) |
     |                            |----------------------------------->|
     |                            |                                    |
     |                            |                                    |
     |                            |  NOTIFY sign-me.se. OPT(heartbeat) |
     |                            |<-----------------------------------|
     |                            |                                    |
     |                            |                                    |
     |                            |                                    |

]]></artwork></figure>

</section>
<section anchor="responsibilities-of-an-agent"><name>Responsibilities of an Agent</name>

<t>Each Agent has certain responsibilites, depending on supported
transports methods.</t>

<section anchor="enabling-remote-agents-to-locate-this-agent"><name>Enabling Remote Agents to Locate This Agent</name>

<t>For a group of Agents to be able to communicate securely and synchronize
data for a zone, each Agent must ensure that the DNS records needed for
secure communication with other Agents are published:</t>

<t><list style="symbols">
  <t>URI, SVCB and KEY records required for DNS-based communication
secured by SIG(0).</t>
  <t>URI, SVCB and TLSA records required for API-based communication
secured by TLS (if supported).</t>
  <t>All of the above MUST be published in a DNSSEC-signed zone under
the domain name that is the identity of the Agent.</t>
</list></t>

</section>
<section anchor="enabling-remote-agents-to-lookup-zone-data-added-by-this-agent"><name>Enabling Remote Agents to Lookup Zone Data Added By This Agent</name>

<t>When using DNS transport between Agents, four types of information is
needed to be conveyed from one party to another:</t>

<t><list style="numbers">
  <t>Notifications (sent as DNS NOTIFY).</t>
  <t>Retrieval of existing data (looked up via DNS QUERY).</t>
  <t>Changes to existing data (sent as DNS UPDATE).</t>
</list></t>

<t>In addition there is also a need for the Agents to signal state
information to each other. One obvious case of this is when the Agents
need to signal the state of an ongoing synchronization process to each
other:</t>

<t><list style="numbers">
  <t>Provider "state" information (sent via the Provider-Synchronization
EDNS(0) OPT).</t>
</list></t>

<t>The second case, i.e. looking up data for a zone that is particular to
a specific DNS Provider is typically about the DNSKEY records added
by that signer or the NS records representing the authoritative
nameservers for that DNS Provider. This is looked up under domain
names constructed from the name of the served zone and the identity of
the DNS Provider.</t>

<t>For each zone that is managed, the Agent must ensure that the data
needed for synchronization with other Agents is published:</t>

<t><list style="symbols">
  <t>The DNSKEY RRset for the zone consisting of the DNSKEYs that the
local Signer for this DNS Provider uses to sign the zone.</t>
  <t>The CDS RRset for the zone, representing the KSK that the local
Signer uses to sign the zone (when needed).</t>
  <t>The NS RRs for the zone, consisting of the NS records of the
authoritative nameservers that this DNS Provider is responsible
for.</t>
  <t>All of the above MUST be published in a DNSSEC-signed zone under
the domain name that is the concatenation of the zone name and the
identity of the Agent. Example for the zone "zone.example" and the
Agent "agent.provider":</t>
</list></t>

<t>zone.example.agent.provider. IN DNSKEY ...
zone.example.agent.provider. IN RRSIG DNSKEY ...
zone.example.agent.provider. IN NS ...
zone.example.agent.provider. IN RRSIG NS ...</t>

</section>
</section>
<section anchor="migration-from-single-signer-to-multi-signer"><name>Migration from Single-Signer to Multi-Signer</name>

<t>The migration from a single-signer to a multi-signer architecture is
done by changing from only having a single designated signer in the
HSYNC RRset to having multiple designated signers (i.e. the SIGN field
changed from "NOSIGN" to "SIGN"). This may be done in several steps.</t>

<section anchor="adding-a-single-hsync-record-to-an-already-signed-zone"><name>Adding a single HSYNC record to an already signed zone</name>

<t>Adding a single HSYNC record to a zone that is already signed by the
DNS provider "provider.com" with NSmgmt=OWNER is a no-op that does not
change anything in the zone:</t>

<t>zone.example. IN HSYNC  ON  OWNER  SIGN  agent.provider.com. upstream.</t>

<t>The zone was already signed by the DNS provider "provider.com" and the
provider added any needed DNSSEC records, including DNSKEYs. The zone
NS RRset was managed by the zone owner. All of this is unchanged by
the addition of the HSYNC RRset.</t>

<t>What does change is possibly the zone transfer chain, if the specified
upstream is different from previously.</t>

</section>
<section anchor="changing-the-hsync-nsmgmt-field-from-agent-to-owner"><name>Changing the HSYNC NSMGMT Field from AGENT To OWNER</name>

<t>Each Agent publishes the data it contributes to the zone under the
domain name {zone}.{identity}. I.e. the zone DNSKEYs that the Agent
agent.provider.com. uses are published as:</t>

<t>zone.example.agent.provider.com. DNSKEY ...
zone.example.agent.provider.com. DNSKEY ...</t>

<t>Likewise, the NS records for the zone are published as:</t>

<t>zone.example.ns.agent.provider.com. NS ...
zone.example.ns.agent.provider.com. NS ...</t>

<t>To migrate from "owner maintained" NS RRset to "Agent maintained", the
zone owner must verify that the NS RRset as published by the Agent is
correct and in sync with the NS RRset as published by the zone owner
itself.  After this verification the zone owner changes the HSYNC
NSmgmt field in the existing HSYNC records from NSmgmt=OWNER to
NSmgmt=AGENT.</t>

</section>
<section anchor="migrating-from-a-multi-signer-architecture-back-to-single-signer"><name>Migrating from a Multi-Signer Architecture Back to Single-Signer.</name>

<t>If, for some reason, a zone owner wants to migrate back to a
single-signer architecture (i.e. offboarding the second DNS Provider),
the process is essentially the reverse of the migration from
single-signer to multi-signer:</t>

<t><list style="numbers">
  <t>The zone owner offboards the second signing DNS Provider (only keeping
one signing DNS Provider).</t>
</list></t>

<t>When offboarding the second signing DNS Provider is signalled via the
HSYNC RRset, the multi-step process "remove signer" (as defined in
<xref target="I-D.draft-ietf-dnsop-dnssec-automation"/>) is initiated to remove
the second DNS Provider from the zone in a series of steps.</t>

<t>The zone is now essentially back to a single-signer architecture.
Once the offboarding is complete, the zone owner may remove the HSYNC
RRset designating the offboarded DNS Provider from the zone.</t>

<t>TO BE REMOVED BEFORE PUBLICATION:
# Rationale</t>

</section>
<section anchor="choice-of-the-hsync-mnemonic"><name>Choice of the HSYNC Mnemonic</name>

<t>Initially the mnemonic "MSIGNER" was used for the HSYNC RRset. However,
as work progressed it became clear that we want also non-signing DNS
Providers to be able to participate. So the RRset is a signalling
mechanism from zone owner to DNS Providers, some of which may or may
not be instructed to sign the zone. Therefore we suggest the mnemonic
"HSYNC" to indicate that this is a mechanism for "horizontal
synchronization" inside a zone.</t>

<t>But the mnemonic chosen is a very minor point and should a better
suggestion come up it would be great.</t>

</section>
<section anchor="separation-of-agent-and-combiner"><name>Separation of Agent and Combiner</name>

<t>It is possible to integrate all three multi-signer components (Signer,
Agent and Combiner) into a single piece of software (or two pieces,
depending on the preferred way of slicing the functionality). However,
such a composite module would be a fairly complex piece of software.</t>

<t>This document aims to describe the functional separation of the
different components rather than make a judgement on software design
alternatives.  Hence possible implementation choices are left to the
implementer.</t>

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

<t>An architecture for automated multi-provider zone management is a
complex system with a number of components.  The authors believe that
the only way to make such an architecture useful in practice is via
automation. However, automation is a double-edged sword. It can both
make the system more robust and more vulnerable.</t>

<t>While all communication between Agents is authenticated (either via
SIG(0) signatures or TLS), the signalling from the zone owner to the
Agents is via the HSYNC RRset in an unsigned zone. This is a potential
attack vector. However, securing zone transfers from zone owner to DNS
providers is a well-known issue with lots of existing solutions (TSIG,
zone transfer via a secure channel, zone transfer-over-TLS,
etc). Employing some of these solutions is strongly recommended.</t>

<t>From a vulnerability point-of-view this architecture introduces
several new components into the zone signing and publication
process. In particular the Combiner and the Agents are new components
that need to be secure. The Combiner has the advantage of not having
to announce its location to the outside world, as it only needs to
communicate with internal components (the zone owner, the Signer and
the Agent).</t>

<t>The Agent is more vulnerable. It needs to be discoverable by other
Agents and hence it is also discoverable by an adversary. On the
other hand, the Agents are not needed for a new zone to be signed and
published, they are only needed when there are changes that require
the Agents to synchronize, which is an infrequent event.</t>

<t>Furthermore, should an Agent be unable to fulfill its role during the
execution of a change requiring synchronization, whether it is a
complex multi-signer process or perhaps only a change to the NS RRset,
the synchronization process will simply stop where it is. Regardless
of where the stop (or rather pause) occurs, the zone will be fully
functional (as in available and properly signed). Once the Agent is
able to resume its role, the synchronization process will continue
from where it left off.</t>

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

<t><strong>Note to the RFC Editor</strong>: In this section, please replace
occurrences of "(This document)" with a proper reference.</t>

<section anchor="hsync-rr-type"><name>HSYNC RR Type</name>

<t>IANA is requested to update the "Resource Record (RR) TYPEs" registry
under the "Domain Name System (DNS) Parameters" registry group as
follows:</t>

<dl>
  <dt>Type</dt>
  <dd>
    <t>HSYNC</t>
  </dd>
  <dt>Value</dt>
  <dd>
    <t>TBD</t>
  </dd>
  <dt>Meaning</dt>
  <dd>
    <t>Zone owner designation of DNS providers enabling mutual discovery</t>
  </dd>
  <dt>Reference</dt>
  <dd>
    <t>(This document)</t>
  </dd>
</dl>

</section>
<section anchor="new-provider-synchronization-edns-option"><name>New Provider-Synchronization EDNS Option</name>

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

<t>TO BE REMOVED UPON PUBLICATION:
<eref target="foo">https://www.iana.org/assignments/dns-parameters/dns-parameters.xhtml#dns-parameters-11</eref></t>

<figure><artwork><![CDATA[
   +-------+--------------------------+----------+----------------------+
   | Value | Name                     | Status   | Reference            |
   +-------+--------------------------+----------+----------------------+
   | TBD   | Provider-Synchronization | Standard | ( This document )    |
   +-------+--------------------------+----------+----------------------+
]]></artwork></figure>

</section>
<section anchor="a-new-registry-for-edns-option-provider-synchronization-operation-codes"><name>A New Registry for EDNS Option Provider-Synchronization Operation Codes</name>

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

<figure><artwork><![CDATA[
+-----------+---------------------------------------------+-------------------+
| OPERATION | Mnemonic                                    | Reference         |
+-----------+---------------------------------------------+-------------------+
| 0         | forbidden                                   | ( This document ) |
+-----------+---------------------------------------------+-------------------+
| 1         | HELLO                                       | ( This document ) |
+-----------+---------------------------------------------+-------------------+
| 2         | HEARTBEAT                                   | ( This document ) |
+-----------+---------------------------------------------+-------------------+
| 3-127     | Unassigned                                  | ( This document ) |
+-----------+---------------------------------------------+-------------------+
| 128-255   | Private Use                                 | ( This document ) |
+-----------+---------------------------------------------+-------------------+
]]></artwork></figure>

</section>
</section>


  </middle>

  <back>


    <references title='Normative References'>



<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='RFC8901' target='https://www.rfc-editor.org/info/rfc8901'>
  <front>
    <title>Multi-Signer DNSSEC Models</title>
    <author fullname='S. Huque' initials='S.' surname='Huque'/>
    <author fullname='P. Aras' initials='P.' surname='Aras'/>
    <author fullname='J. Dickinson' initials='J.' surname='Dickinson'/>
    <author fullname='J. Vcelak' initials='J.' surname='Vcelak'/>
    <author fullname='D. Blacka' initials='D.' surname='Blacka'/>
    <date month='September' year='2020'/>
    <abstract>
      <t>Many enterprises today employ the service of multiple DNS providers to distribute their authoritative DNS service. Deploying DNSSEC in such an environment may present some challenges, depending on the configuration and feature set in use. In particular, when each DNS provider independently signs zone data with their own keys, additional key-management mechanisms are necessary. This document presents deployment models that accommodate this scenario and describes these key-management requirements. These models do not require any changes to the behavior of validating resolvers, nor do they impose the new key-management requirements on authoritative servers not involved in multi-signer configurations.</t>
    </abstract>
  </front>
  <seriesInfo name='RFC' value='8901'/>
  <seriesInfo name='DOI' value='10.17487/RFC8901'/>
</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>




    </references>

    <references title='Informative References'>




<reference anchor='I-D.draft-ietf-dnsop-dnssec-automation' target='https://datatracker.ietf.org/doc/html/draft-ietf-dnsop-dnssec-automation-03'>
   <front>
      <title>DNSSEC automation</title>
      <author fullname='Ulrich Wisser' initials='U.' surname='Wisser'>
         </author>
      <author fullname='Shumon Huque' initials='S.' surname='Huque'>
         <organization>Salesforce</organization>
      </author>
      <author fullname='Johan Stenstam' initials='J.' surname='Stenstam'>
         <organization>The Swedish Internet Foundation</organization>
      </author>
      <date day='19' month='October' year='2024'/>
      <abstract>
	 <t>   This document describes an algorithm and protocol to automate the
   setup, operations, and decomissioning of Multi-Signer DNSSEC
   [RFC8901] configurations.  It employs Model 2 of the multi-signer
   specification, where each operator has their own distinct KSK and ZSK
   sets (or CSK sets), Managing DS Records from the Parent via CDS/
   CDNSKEY [RFC8078], and Child-to-Parent Synchronization in DNS
   [RFC7477] to accomplish this.

	 </t>
      </abstract>
   </front>
   <seriesInfo name='Internet-Draft' value='draft-ietf-dnsop-dnssec-automation-03'/>
   
</reference>


<reference anchor='I-D.draft-berra-dnsop-keystate' target='https://datatracker.ietf.org/doc/html/draft-berra-dnsop-keystate-01'>
   <front>
      <title>Signalling Key State Via DNS EDNS(0) OPT</title>
      <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>
      <author fullname='Johan Stenstam' initials='J.' surname='Stenstam'>
         <organization>The Swedish Internet Foundation</organization>
      </author>
      <date day='7' month='February' year='2025'/>
      <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.

   This document proposes such a mechanism.

   TO BE REMOVED: This document is being collaborated on in Github at:
   https://github.com/johanix/draft-berra-dnsop-opt-transaction-state
   (https://github.com/johanix/draft-berra-dnsop-transaction-state-00).
   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-berra-dnsop-keystate-01'/>
   
</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>This document is derived from the earlier document
draft-leon-dnsop-distributed-multi-signer-00</t>
</list></t>

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

</section>


  </back>

<!-- ##markdown-source:
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
oYNGocWQ+MQCheamWiM/ixf9EsSczXwLk6SVjQ94UJJ3lrYGZUWlvDEtOzTq
q4OVYZEoHrm4cl9tTH5gf63ZNhrLXGrZyZWJ2cVlveUI9TQpttRuW+gJ6Cpr
a4k+bP2RNB5UALTSaIjd+OK9rCheSQc3aioYHj9TDQ0t22h/s2Ayxe9L3o2+
Lzt/UmDu+9xXgMfriJJ4yf8XOi+H55zpPgxa6cveqxYuMCEUNJqCquw3tWxc
T/NHnxs3vZt4vlEuxkCexhsAmMca9wNfYwPkxuNSAa3nFwKPNjvpTz1yVZVJ
U2XsqoEr+vBBlEt2upHTidp3w9hwsOeJgYAmyYYWC+OrfEYOSAPqo8M+y+xw
Q5GdzWDdkxUXRPniPPFXcotB6X18O5WrhgBMUn5j4rpxs9kAnXzcGj2zlMyL
SX05GzhzTIKMan1hp+rGzcXMA4qbzRxyRskdodJYOd8t35T0u+pQv8auEqJ3
te/nPHLcMwF3uh9VhXi/RpbQJp5GvBiFszqAYqoJaeMru7/Hs2BWHDA4UnVq
4+PNjLFoVomZDrmJRWc3IS1RCxcLIIxaf68YJvzx8G1Nx2Adan551aAQuwGh
xbtH/WlwkDM3L7XOshbjIyu8teMTj30uSprs6Z16WrfF+bUGLNTZ6seocIHK
dUM1S069dzkaDtPFFSNoYJDmbkg1TKLNfjhlvzBrWbVKdkJK+1roYNM5RbEx
7SO/YX+jn4fsMoG0BSg+VLSMs2jdPrIfd3X0CmyXWaYtgfLKNGD6w6tkqyOZ
E/3EzhbCEh4YUT+SQWfYeGKisYgY5DSqsCz4PJKU9uXPtKyuI6TuKHgyms5v
RUShGGbt7I3FUgkWk7trEUrSSjdRkTVCYLDWP/G0RsnPv6rT3UDlt6Hep2LO
1WR6zmuHTHPYaqYvXJmbkoW5dykhhtwCpgcnqzeUD/I6tgyzmot7kYVj8Tuz
59jbpzYF25jk2c+zQl2WIVuMUp4xk0z0Gi2m4siEL48YaXtLPZtGFEZt+Ef+
fz3I3b21kw57m+wbkNTo+URwrh1FGT+L2UWmDANl/IVXY6RdQ/RYAs7Sty3i
u050VXEiCJ7XKImucQvJoHtVlm8xJyvcJqLcGqZ5c3YU5/XoFLC7TTkuZxoa
D+cgl5C20IPPByPTPwSbpVqVNxAGCIEpX6oddz6PMuhvAZf45O/2nyvEcnaj
NfC5J4hLeykM7+hUfaSscamLofNwOsE8jiG5GT63f8pZa605fWlSBBk9F/Tu
uBVkpHUJl2I0KTOkvzp6tNPwmpzCfa5RvEwwRnhf5GEl9D1wx9kCSQd3jhe1
unpLe2vOOaN+1L4pU0q/6NFtoRsOV0Uudw3CU49SXmog47XEs/RgrEXu7x+3
B2iG8lkyBPMXDi8w8FTvMgPEWu6c0j4z6wMDWH8CBXT4p2a8GHbNi3DSMHbn
Mf6vB0/vPnoEryTDfP70668f9e4zFhVj04h/++v/MoZPGyiCl5fcHGjGdIHg
tiYZMmElx+X6Gd07Ab98EZ0cjAUurp9d5YWKmMX1F/yXkKiEfHy1Co0MVk+1
AoyszcuQ0zN2xw/9zefDL4ZfDr/yo3/z5PHjnV3AxaYReO00Di2etGO0ezO/
a8raIvrvQIVo8wYNZ3oTryAged0JPs6NA+Kk3d8yZPoMh6+1nB1ZIe9K3XFc
o0NWgVZeFRIRNL7lwoT90C1aldYXXO4k/YbX2ZwJbC6Sdz4i7DyTDzDgxnK4
nTR10bSM1/vbqG3PUK8zC0q77JSNqJH/DNmIr32MbLyTXbYOuq7r5cXFaRCR
Ufu7uyUkKgww7CubXG+w5D69XIUZBTmxaTy8i129EpMotFEQ+4VuXJE+ycl8
IoEp45E7SH6EeNVZAhoQSJISKh2SyY5OB3fLWWODpA3y1Xwq6foJhGuHbL0b
bxevzvfaePM+8YhUfHmjzhyWKvRCRCEOxw6hi/2cgxEeDuj/C2lrN2XKYfLm
/QVum4n9PIFLl23dX+T+7a//Q6/nyhZ5OtqzZ0/xw0fXTx797a//835Df4QE
bs9HEteqxDWJxPXyFa8SRSI9O4PFtkdIhGkkS3eGT4ZPh8/asnSUTXbH2dTh
QjeO1Rarx5he5jjNLD3t/owywdfkqtJofuB41BppaF/koTFK+9T8CQASPLdx
BMYsohAOznLR17r2oHBwZ7oOuW1vGVS2jqB4CnjbwZUO7/MKI4de/GcV7V0c
LZXoER9iM/cz+wJwMMrGbyWYIQbyfhrlPJqquO4MEGKX4HDB58iNMxQkEstB
F7wmalCPibyu/a0HCcjUgQMT3WI2nSzAJIx0fYUcIF2RD6v4lfY5naxtjSGH
xZRu1ltbe/uWESn3OxKf68vDV69OuK+oOA/RoSEIDk3qvf9+7dIB3RoOqmNQ
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
UybWxrb7yW1BmAxTk5rpOwxUKL5qr96n8tysSfNYloeEmGhBClQdg1TLHaWJ
orhFQv4tX3tACS6F63xyW3vWb1hw5+hS7Ik9PSe+ZD+56ZGWy8sB0e1x1L6f
ZysLVQtgJiVlHrlrplLlAf8FcAagLpdslmKSMFWCcSsCufcVhzYbNqt1sw5n
gcIhYI+F6hce3xIGjzfUE4/dTDzD7luCotuB+u3ThhqPYCUcOLkmRHQr3ZJN
dwglS8NVnNjnh/bs8PXJ7w4P4NcXJ2eH9vTN81dH+5Kd/Jk9yzij14kUk/7r
kRh7XQBURT5Gz0ceEfVcPre916iG4N01KNMpMyftRSQdQfUeIIPNObD2Bqjh
Uhob55SchUIstJDHvCE8uuxcKTAzMxBhuO205dKMrlQY2nOWmb5tZhbdYWVC
lyZCXHrDauuiWGIuPkeVusfTllE9zyh0tQ4+mShl7MJX7NxgjuXlJVXbRig0
PUJUjwuuOGMnMv0I8HlSudVDe/FHTI+ftavu0G9T0wW1SgfPl+l02Ga/dgWP
i6nzwJEK7H9MXf2j9PhM+vYbAZoyLBETywXlN2jSAuxi5u8awaxZ1cxCoqFe
HdF1Uwpe7sSMOdypm9gzeGhgKXQDMPP9vlkfGvP8o3NpF7ljWq7LaUN5J3i3
G90kgt/UfZO435mHayIdVqThqzOgJTl2U1BC+bCAbrUd0XO9xJaeDGUNLABz
mpcAgMdPhi0aKrpXB0//u3XQhu3KvSyf12sZ8wEC4FkxnkkT9ApqhC545Erv
XeALaeyfl5NL3wPZo4Z5jIlvGBhiBhOyMb9XvpROkm3lLg58f+amWkEeVdxV
Q85tHS8rdALsSzYRe3MppTcRueQFZObuKxO82UHnM716JzOKUO4yrRk8oWQh
oGLIWWzsasHSwBl2r6VTxgX7KChx1/XqHt7VFoTA3aZLvBUFSCWDvRiTiMDb
q4NQim48Cx/qPZVLzEB3E7Rk6htuAcy1zdgdxdDEJLl4PVSWWpUjuosBSJ3+
vl7OCupt7Uhm5zM+N7deopLznesoxDgdUG//QtClQQMLGVhljczt4tW5Jkx5
ltl137luephIncRJy2LKydPrlT1fVOa2KBuWryZrGpSv14BvvIjVY5JCLAhC
YrnVG1i3N1Zl/KhteV7XS8l1nJXcmM+rsHWJN0lRoOECkNI3qZmol7hzGAuO
VIFFv8kzA7w4awC46xvXjIFJHAJ9lise3Dt4QRUMU3HJZQksa0Xa83yuN929
YJVY95svwEq7YZN8SN09YDEC+4FzadRrglWiEU8gLuk3UWUqtYgL93brlRJ0
2Vvsir+KrgFS33QUuUvnMvE1PdxkF5HHCq0fRq+1zibXIO4p53JKOX7sZOIU
vKJcco5dbX31j6yjXDYk8OA8zSZ0g1fe8HnW7GvTTjEMN6PHsiWlbKZ+MUX0
jg5aqsY1fFpj+1ziofaZ3yMquKIr1UhJ0TsSfaODAkt1QwIhqTvtN5ARTdCK
yKoVBorozLFHHghx0l/bh7KJOxNxqbD2cB859f/QLQJL35K+0V5NHnsoCiXy
JLcwBbMwazREGt+BgvpPiB5rOXZOdeh5Ma2k3gpok9oumqRzjSoemr+Lqd6F
qnbAead0JxUKthKdjv76TyP3K7E4zNTtw+B1xMH6cQ/7RJIkioe/e7XCcryr
bCHdAfwE7atR2OzYEHPjfFBu51U35UISZAkCjGDqbTSGFE3tVkVPouYisnyB
XbW2bTmGk1RHZoT28QQszVYmUhW2Mu7dp/2mtBskrGimjsBtSWFNvA6Zr1Gv
l3Pn0S5S4bZFot8qL5bOEHv2yyQlAawX0gqO9o73WhoBNmV4cIwRasHr2Yt9
ezjJQRQ8eLDrr52Uzk19CxuGUdLKLWZ43x+hpMKTRGy9t5WoVNs9VQ/ktjTS
9bi5Jmqu/qrWi9UCrCECL6+1xw1zsOjSs96Zq8tlBTg7Y9/x1tnZtr344fSw
7sFLl1hiuTLeUWd7cgn2MRo55yzet0BUbdtTX2YWXpS8jaw2oTCG4NoVy9DQ
lezwJ5bimtcuQyYOf0bXu3uzkQ9F2m7NaUrAfNlga1flNyu8FknwAsO1UEiI
OgZOcmvVli/Z6i5c7Wpb0LfkskQ/Qm/T2D20HJVvSSEyrAsQQN39acTH2g9j
n0obtzAIHW1HyyR+c3pynBrEf9B2nDc3N8MclM1hWV0+4mmpD8SjSVEPQmFg
68/hu6tmPvss/XCws/PHrWlZbvseCprf/HBzEtXDzl+TJwxlLREdwP8TXXUn
Np3THd30q9/btfSoTwkTbgn+/0YqIZiKCfA7+HWrVeC8/alh4pStz+weke6Z
HjGUixG53lIh42u0iaru6KghnTRYiivJF/arwQi1Ej8UOVHJcyltWjsZzhgt
a+bYyD24FRUeH88o9NyYjecmwF/3+uyfEefwHWsYaoNIIzdu+kvG7zNVABG1
Bu70SxWA/9XIFYjRsUIBJQ7lp4OdJ1+CsKPIWKX6Ct3v2MBUy8src56UqZ9p
mhaGZAA1P/30m+f7p0+++PBhvVbiNlK6nboienofdcJ47/1j98of7DiA738B
+B5HM8KmjfLJBLB/H/jWD+MvAd9ONCM3Lbjfz98LvicJfNJG4R8IPj4jPOOb
wkvFfxj4dp58NXjy+eeWhUB+jTzsTd0tn/7+8JE8gN/IlU+31LIy/xLYFV6T
ucUsh73x6MAj321kHG9j87AUTmq7VFGRp3eSuKya5ZT8xQ+BSOOQxsyVhYY0
QiuOQWx6DB4/NubXvkOvtMWk14fm/wKlmc7JfNIAAA==

-->

</rfc>

