<?xml version="1.0" encoding="us-ascii"?>

<!DOCTYPE rfc SYSTEM "rfc2629.dtd" [
]>

<rfc category="info" docName="draft-yoneya-dnssec-kskro-failure-recovery-01" ipr="trust200902">
  <front>
    <title abbrev="DNSSEC practices">DNSSEC KSK rollover failure recovery practices</title>

    <author fullname="Yoshiro Yoneya" initials="Y" surname="Yoneya">
      <organization>JPRS</organization>
      <address>
        <postal>
          <street>Chiyoda First Bldg. East 13F</street>
          <street>3-8-1 Nishi-Kanda</street>
          <city>Chiyoda-ku</city>
          <region>Tokyo</region>
          <code>101-0065</code>
          <country>Japan</country>
        </postal>
        <phone>+81 3 5215 8451</phone>
        <email>yoshiro.yoneya@jprs.co.jp</email>
      </address>
    </author>

    <author fullname="Patrik Wallstrom" initials="P" surname="Wallstrom">
      <organization>.SE</organization>
      <address>
        <postal>
          <street>Box 7399</street>
          <city>Stockholm</city>
          <region>Stockholm</region>
          <code>103 91</code>
          <country>Sweden</country>
        </postal>
        <phone>+46 733 173956</phone>
        <email>pawal@iis.se</email>
      </address>
    </author>

    <date day="5" month="September" year="2012"/>

    <abstract>
      <t>
	This document describes a set of common problems and possible
	recovery methods for DNSSEC when there is a DS published in
	the parent zone which does no longer match any DNSKEY in the
	child zone. As DNSSEC validators are becoming widely deployed,
	this will have serious effect on the availability of the zone,
	and the need for a quick recovery is needed.
      </t>
    </abstract>

  </front>

  <middle>
    <section title="Introduction">
      <t>
        When a zone is signed and a DS has been published in the
	parent zone DNS name resolution will fail when DS in the
	parent zone and the DNSKEY in child zone become inconsistent.
	The impact of a DS mismatch will be much more severe when it
	occurs high up in the DNS hierarchy, such as for a TLD where
	it could make millions of child zones unresolvable.  IANA have
	a defined process for registering DS records for a TLD to the
	root zone <xref target="IANAPROC"/> and a validation procedure
	of registered DS <xref target="ROOTDNSSEC"/>, but there will
	still be a non-zero risk of human error.  Having a set of best
	practices for emergency countermeasures in the case of a KSK
	rollover failure will be helpful for a stable DNSSEC
	operation.
      </t>
    </section>

    <section title="Examples of KSK rollover failures">
      <t>
	A DNS operator can cause the chain of trust between the parent
	and child to break in some different ways.  These are just
	some examples:

	The key storage for the main DNSSEC signer is broken (or even
	the whole machine).  The DNS operator in this case will have
	to restore the keys and the DNSSEC signer process to a normal
	state, and this can take some time - and in some cases it can
	be impossible to restore the system and the keys.
	
	The KSK rollover process misbehaves causing the zone to be
	signed with keys not matched by any DS record published in the
	parent zone.

	TODO: more examples?
      </t>
    </section>

    <section title="Countermeasures for KSK rollover failures">
      <t>
        This section lists several countermeasures for KSK rollover
	failures.
      </t>

      <section title="Case 1 - remove failing DS">
        <t><list style="hanging">
	  <t hangText="Countermeasure:"/>
            <t>
              Ask the parent zone administrator to delete the DS
	      records from the parent zone or to replace the wrong DS
	      records with the correct set of DS.  For a quick
	      recovery there is also a need to ask every major DNSSEC
	      validating resolver operator to flush the cache for the
	      failing zone.
	    </t>
          <t hangText="Pros:"/>
            <t>
              No need to consider TTL of DNS records.
            </t>
          <t hangText="Cons:"/>
            <t>
              It is an impossible task to communicate with all the
              resolver operators.
            </t>
        </list></t>
      </section>

      <section title="Case 2">
        <t><list style="hanging">
          <t hangText="Countermeasure:"/>
            <t>
              Specify short time for TTLs of DS and NS records in parent
	      zone to make reflection duration shorter for modification
	      (deletion of wrong DS or replace wrong DS with correct DS)
	      to correspond registration of wrong DS.
            </t>
          <t hangText="Pros:"/>
            <t>
              Modification to correct NS and/or DS will be reflected
              to full resolvers in short duration.
            </t>
          <t hangText="Cons:"/>
            <t>
              Increases queries to parent zone and therefore consumes 
              network bandwidth and disk space of servers when logging.
            </t>
        </list></t>
      </section>

      <section title="Case 3">
        <t><list style="hanging">
          <t hangText="Countermeasure:"/>
            <t>
              Specify short time for TTL of DS record in parent zone to
	      make reflection duration shorter for modification
	      (deletion of wrong DS or replace wrong DS with correct DS)
	      to correspond registration of wrong DS.
            </t>
          <t hangText="Pros:"/>
            <t>
              Modification to correct DS will be reflected to full
	      resolvers in short duration.
            </t>
          <t hangText="Cons:"/>
            <t>
              Increases queries to parent zone and therefore consumes 
              network bandwidth and disk space of servers when logging.
            </t>
        </list></t>
      </section>

      <section title="Case 4">
        <t><list style="hanging">
          <t hangText="Countermeasure:"/>
            <t>
              Specify short time for TTL of newly registered/modified NS
	      and/or DS in parent zone to make reflection duration
	      shorter for modification (deletion of wrong DS or replace
	      wrong DS with correct DS) to correspond registration of
	      wrong DS. After a certain duration passed, TTL of NS
	      and/or DS be made longer time.
            </t>
          <t hangText="Pros:"/>
            <t>
              Modification to correct NS and/or DS will be reflected in
	      short duration.
            </t>
          <t hangText="Cons:"/>
            <t>
              Registration system (or zone generation system) of
	      parent zone will be complicated.
            </t>
        </list></t>
      </section>

      <section title="Case 5">
        <t><list style="hanging">
          <t hangText="Countermeasure:"/>
            <t>
              Do nothing because registration of wrong DS is
	      responsibility of registrant.
            </t>
          <t hangText="Pros:"/>
            <t>
              No changes to current system/procedure.
            </t>
          <t hangText="Cons:"/>
            <t>
	      If TTLs of NS and DS in parent zone are long time, it
	      will take a time until extinguish of influence since
	      correction of error.
            </t>
        </list></t>
      </section>
    </section>

    <section title="Considerations">
      <t>
        Followings are (not comprehensive) list of points to consider
	which case is the best practice for quick recovery from DS
	registration failure.

        <list style="symbols">
          <t>
            TTLs of NS and DS in parent zone should be the same or not.
          </t>
          <t>
            What are the impacts of combination of long NS TTL (~1day)
	    and short DS TTL (~a few hours).
          </t>
          <t>
	    What is the appropriate DS TTL.
          </t>
          <t>
	    How wide range of ISPs should TLDs know point of contacts 
	    (PoC) for emergency call.
	    For example, ccTLDs should know PoC of domestic major ISPs.
          </t>
        </list>
      </t>
    </section>

    <section title="IANA Considerations">
      <t>
        This document does not specify any IANA actions.
      </t>
    </section>

    <section title="Security Considerations">
      <t>
        TBD.
      </t>
    </section>

  </middle>

  <back>
    <references title="References">
      <reference anchor="IANAPROC">
        <front>
	  <title>Placing TLD delegation signer information in the root zone</title>
	  <author initials="" surname="IANA" fullname="">
	    <organization/>
	  </author>
	  <date year="2010"/>
	</front>
	<seriesInfo name="" value="http://www.iana.org/procedures/root-dnssec-records.html"/>
      </reference>
      <reference anchor="ROOTDNSSEC">
        <front>
          <title>Enhancements to DNSSEC validation for the DNS Root Zone change requests</title>
          <author initials="" surname="Root DNSSEC" fullname="">
            <organization/>
          </author>
          <date year="2011"/>
        </front>
        <seriesInfo name="" value="http://www.root-dnssec.org/2011/01/27/rrsig-checking/"/>
      </reference>
    </references>

    <section title="Change Log" anchor="changes">
      <section title="Changes since -00">
        <t>
	  <list style="symbols">
	    <t>
	      New co-author joined.
	    </t>
	    <t>
	      Some editorial collections and cleanup texts.
	    </t>
	    <t>
	      Add section 2 to show examples of KSK rollover failures.
	    </t>
	  </list>
	</t>
      </section>
    </section>

  </back>
</rfc>
