<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE rfc SYSTEM 'rfc2629.dtd' []>
<rfc ipr="trust200902" category="info" docName="draft-pounsett-transferring-automated-dnssec-zones-01" updates="6781">
<?rfc toc="yes"?>
<?rfc symrefs="yes"?>
<?rfc sortrefs="yes"?>
<?rfc compact="yes"?>
<?rfc subcompact="no"?>
<?rfc private=""?>
<?rfc topblock="yes"?>
<?rfc comments="no"?>
<front>
<title abbrev="Change of Operator for Automated Zones">Change of Operator Procedures for Automatically Published DNSSEC Zones</title>

<author initials="M." surname="Pounsett" fullname="Matthew Pounsett">
<organization>Rightside Group, Ltd.</organization>
<address>
<postal>
<street></street>
<city></city>
<code></code>
<country></country>
<region></region>
</postal>
<phone></phone>
<email>matt@conundrum.com</email>
<uri></uri>
</address>
</author>
<date year="2016" month="August" day="2"/>

<area>OPS</area>
<workgroup></workgroup>
<keyword>dnssec</keyword>
<keyword>operator</keyword>
<keyword>procedures</keyword>


<abstract>
<t>Section 4.3.5.1 of <xref target="RFC6781"/> &quot;DNSSEC Operational Practices, version 2&quot;
describes a procedure for transitioning a DNSSEC signed zone from one
(cooperative) operator to another.  The procedure works well in many
situations, but makes the assumption that it is feasible for the two operators
to simultaneously publish slightly different versions of the zone being
transferred.  In some cases, such as with TLD registries, operational
considerations require both operators to publish identical versions of the
zone for the duration of the transition.  This document describes a modified
transition procedure which can be used in these cases.
</t>
</abstract>


</front>

<middle>

<section anchor="introduction" title="Introduction">
<t>The process described in &quot;DNSSEC Operational Practices, version 2&quot;
(<xref target="RFC6781"/>), section 4.3.5.1 for cooperating DNS operators to move a DNSSEC
signed zone cannot be followed in all cases.  When operators are moving a zone
that is automatically published and/or changes rapidly, such as with a TLD or
any other zone published from a registration database, it may not be feasible
for the operators to publish different versions of the same zone.
</t>
<t>In these cases, it would be necessary for one or both operators to have the
capability to add, remove, or alter arbitrary records inline along the zone
transfer path (such as modifying the NSSet, and stripping RRSIGs).  It cannot
be assumed that this capability exists, since few (if any) common DNS
implementations include these functions, and many custom implementations exist
whose feature sets cannot be predicted.
</t>
<t>As a result, it must be assumed that operators moving an automatically
generated or frequently updated zone must be able to publish an identical zone
while transitioning it from one operator to another.
</t>
</section>

<section anchor="changing-between-cooperating-dns-operators" title="Changing Between Cooperating DNS Operators">
<t>In this scenario, it is assumed that the operators will not exchange any
private key material, but are otherwise fully cooperative.  It is also assumed
that the zone publishing process will be transferred between operators
independently of the DNS operations.  The simplest case is to transition the
publishing process after the DNS operations move has been completed, and is
the order that is assumed in this document, although the reverse order is
possible.  During the transition, the losing operator will provide the zone
contents to the gaining operator by some automatic means (typically zone
transfer).  The transition of the publishing process is out of scope of this
document.
</t>
<t>The DNS operations transition uses a modified pre-publish KSK and ZSK
rollover, whereby the losing operator pre-publishes the public KSK and ZSK of
the gaining operator.  Partway through the transition, the losing operator
stops signing the zone and begins providing an unsecure zone to the gaining
operator, who begins signing.  Once that is done, the gaining operator
continues to post-publish the public keys of the losing operator until the
TTLs of the original RRSIGs expire.
</t>
<t>In the timeline below, the losing operator is operator A, and the gaining
operator is operator B.  Records representig data generated by each operator
are appended with the operator letter.  DNSKEY_Z is a ZSK, and DNSKEY_K is a
KSK.  RRSIG_K is the RRSIG generated with DNSKEY_K.
</t>

<figure align="center" title="Rollover for Cooperating Operators, Steps 1-3
"><artwork align="center" type="ascii-art">
----------------------------------------------------------------
| initial            | pre-publish        | re-delegation I    |
----------------------------------------------------------------
| Parent:            | Parent:            | Parent:            |
|  NS_A              |  NS_A              |                    |
|                    |                    |  NS_B              |
|  DS_A              |  DS_A              |  DS_A              |
|                    |                    |  DS_B              |
----------------------------------------------------------------
| Child:             | Child:             | Child:             |
| Published by A     | Published by A     | Published by A     |
| Signed by A        | Signed by A        | Signed by A        |
|  SOA_A0            |  SOA_A1            |  SOA_A1            |
|  RRSIG_Z_A(SOA)    |  RRSIG_Z_A(SOA)    |  RRSIG_Z_A(SOA)    |
|                    |                    |                    |
|  NS_A              |                    |                    |
|                    |  NS_B              |  NS_B              |
|  RRSIG_Z_A(NS)     |  RRSIG_Z_A(NS)     |  RRSIG_Z_A(NS)     |
|                    |                    |                    |
|  DNSKEY_Z_A        |  DNSKEY_Z_A        |  DNSKEY_Z_A        |
|                    |  DNSKEY_Z_B        |  DNSKEY_Z_B        |
|  DNSKEY_K_A        |  DNSKEY_K_A        |  DNSKEY_K_A        |
|                    |  DNSKEY_K_B        |  DNSKEY_K_B        |
|  RRSIG_K_A(DNSKEY) |  RRSIG_K_A(DNSKEY) |  RRSIG_K_A(DNSKEY) |
----------------------------------------------------------------
</artwork></figure>

<figure align="center" title="Rollover for Cooperating Operators, Steps 4-6"><artwork align="center" type="ascii-art">
----------------------------------------------------------------
| signing-migration  | re-delegation II   | post-migration     |
----------------------------------------------------------------
|  Parent:           | Parent:            | Parent:            |
|                    |                    |                    |
|   NS_B             |  NS_B              |  NS_B              |
|   DS_A             |                    |                    |
|   DS_B             |  DS_B              |  DS_B              |
----------------------------------------------------------------
| Child:             | Child:             | Child:             |
| Published by A     | Published by A     | Published by B     |
| Signed by B        | Signed by B        | Signed by B        |
|  SOA_A2            |  SOA_A2            |  SOA_B0            |
|  RRSIG_Z_B(SOA)    |  RRSIG_Z_B(SOA)    |  RRSIG_Z_B(SOA)    |
|                    |                    |                    |
|                    |                    |                    |
|  NS_B              |  NS_B              |  NS_B              |
|  RRSIG_Z_B(NS)     |  RRSIG_Z_B(NS)     |  RRSIG_Z_B(NS)     |
|                    |                    |                    |
|  DNSKEY_Z_A        |  DNSKEY_Z_A        |                    |
|  DNSKEY_Z_B        |  DNSKEY_Z_B        |  DNSKEY_Z_B        |
|  DNSKEY_K_A        |  DNSKEY_K_A        |                    |
|  DNSKEY_K_B        |  DNSKEY_K_B        |  DNSKEY_K_B        |
|  RRSIG_K_B(DNSKEY) |  RRSIG_K_B(DNSKEY) |  RRSIG_K_B(DNSKEY) |
----------------------------------------------------------------
</artwork></figure>
</section>

<section anchor="security-considerations" title="Security Considerations">
<t>This document raises no new security considerations.  Please see
Section 6 of <xref target="RFC6781"/>.
</t>
</section>

<section anchor="iana-considerations" title="IANA Considerations">
<t>This document has no actions for IANA.
</t>
</section>

</middle>
<back>
<references title="Normative References">
<?rfc include="http://xml2rfc.ietf.org/public/rfc/bibxml/reference.RFC.6781.xml"?>
</references>

<section anchor="document-source" title="Document Source">
<t><list style="empty">
<t>[RFC Editor: Please remove this section before publication.]
</t>
</list></t>
<t>This document is maintained at Github at
<eref target="https://github.com/mpounsett/operator-transfer"/>.  Issue reports and pull
requests are gratefully accepted here.
</t>
<t>The XML and TXT versions of this document are generated from Markdown
using mmark by Miek Gieben.  mmark is available at
<eref target="https://github.com/miekg/mmark"/>.
</t>
</section>

<section anchor="changelist" title="Changelist">
<t><list style="empty">
<t>[RFC Editor: Please remove this section before publication.]
</t>
</list></t>

<section anchor="version-pounsett01" title="Version pounsett-01">
<t>
<list style="symbols">
<t>grammar and spelling nits</t>
<t>added Security Considerations section</t>
<t>added IANA Considerations section</t>
<t>added Document Source and Changelist</t>
<t>call out publishing migration as out of scope</t>
</list>
</t>
</section>

<section anchor="version-pounsett00" title="Version pounsett-00">
<t>Initial Submission
</t>
</section>
</section>

</back>
</rfc>
