DNS Operations
Intended Status: Informational                                 M. Larson
DNS Operations                                                  VeriSign
Expires: January 15, 2009
Internet-Draft                                            O. Gudmundsson
Expires: September 10, 2009                          OGUD Consulting LLC
                                                           July 14, 2008
                                                           March 9, 2009

           DNSSEC Trust Anchor Configuration and Maintenance

Status of this Memo

   By submitting this Internet-Draft, each author represents that any
   applicable patent or other IPR claims

   This Internet-Draft is submitted to IETF in full conformance with the
   provisions of which he BCP 78 and BCP 79.  This document may contain material
   from IETF Documents or she is aware
   have been IETF Contributions published or will made publicly
   available before November 10, 2008.  The person(s) controlling the
   copyright in some of this material may not have granted the IETF
   Trust the right to allow modifications of such material outside the
   IETF Standards Process.  Without obtaining an adequate license from
   the person(s) controlling the copyright in such materials, this
   document may not be disclosed, modified outside the IETF Standards Process, and any
   derivative works of which he or she becomes
   aware will it may not be disclosed, in accordance with Section 6 of BCP 79. created outside the IETF Standards
   Process, except to format it for publication as an RFC or to
   translate it into languages other than English.

   Internet-Drafts are working documents of the Internet Engineering
   Task Force (IETF), its areas, and its working groups.  Note that
   other groups may also distribute working documents as Internet-

   Internet-Drafts are draft documents valid for a maximum of six months
   and may be updated, replaced, or obsoleted by other documents at any
   time.  It is inappropriate to use Internet-Drafts as reference
   material or to cite them other than as "work in progress."

   The list of current Internet-Drafts can be accessed at

   The list of Internet-Draft Shadow Directories can be accessed at

   This Internet-Draft will expire on January 15, September 10, 2009.

Copyright Notice

   Copyright (c) 2009 IETF Trust and the persons identified as the
   document authors.  All rights reserved.

   This document is subject to BCP 78 and the IETF Trust's Legal
   Provisions Relating to IETF Documents in effect on the date of
   publication of this document (http://trustee.ietf.org/license-info).
   Please review these documents carefully, as they describe your rights
   and restrictions with respect to this document.


   This document recommends a preferred format for specifying trust
   anchors in DNSSEC validating security-aware resolvers and describes
   how such a resolver should initialize trust anchors for use.  This
   document also describes different mechanisms for keeping trust
   anchors up to date over time.

Table of Contents

   1.  Introduction . . . . . . . . . . . . . . . . . . . . . . . . .  3  4
   2.  Trust Anchor Format  . . . . . . . . . . . . . . . . . . . . .  4  5
   3.  Trust Anchor Priming . . . . . . . . . . . . . . . . . . . . .  5  6
   4.  Trust Anchor Maintenance . . . . . . . . . . . . . . . . . . .  7  8
   5.  Security considerations  . . . . . . . . . . . . . . . . . . .  9 10
   6.  IANA considerations  . . . . . . . . . . . . . . . . . . . . . 10 11
   7.  Acknowledgments  . . . . . . . . . . . . . . . . . . . . . . . 11
   8.  References . . . . . . . . . . . . . . . . . . . . . . . . . . 12
   8.  Normative References . . . . . . . . . . . . . . . . . . . 12
     8.2.  Informative References . . . . . . . . . . . . . . . . . . 12 13
   Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . . . 13
   Intellectual Property and Copyright Statements . . . . . . . . . . 14

1.  Introduction

   The DNSSEC standards documents ([RFC4033], [RFC4034] and [RFC4035])
   describe the need for trust anchors and how they are used.  A
   validating security-aware resolver (subsequently referred to as a
   "validating resolver") needs to be configured with one or more trust
   anchors, which specify the public keys of signed zones.  To
   authenticate DNS data, a validating resolver builds a chain of trust
   from a configured trust anchor to that data.

   In a widespread public DNSSEC deployment, the DNS root zone would be
   signed and a validating resolver would need to be configured with at
   least the root zone's trust anchor.  A validating resolver might need
   additional trust anchors configured to accommodate islands of
   security.  (An island of security is a signed, delegated zone that
   does not have an authentication chain from its delegating parent.)
   For example, consider the situation where the root zone is signed but
   a given top-level domain (TLD) zone is not.  Various second-level
   zones under this unsigned TLD might be signed and resolver operators
   might want to validate responses from those zones, requiring a
   validating resolver to be configured with those zones' trust anchors.

   Because many validating resolvers would be configured with trust
   anchors in a widespread DNSSEC deployment, there is a benefit to
   creating a common trust anchor format.  A similar situation has
   occurred with the "root hints", the list of root name server names
   and IP addresses: this information is distributed in standard master
   file format and many resolver implementations support this common

   To simplify this trust anchor configuration process that will occur
   on a large number of resolvers, this document offers guidance to
   validating resolver implementers by specifying a standardized format
   for describing trust anchors.  The document also describes how a
   validating resolver should initialize or "prime" trust anchors before
   first use.  Finally, the document lists options for keeping trust
   anchor information current over time.

   The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT",
   document are to be interpreted as described in RFC 2119 [RFC2119].

2.  Trust Anchor Format

   A trust anchor is a DNSSEC public key configured in a validating
   resolver.  A validating resolver's configuration MUST allow one or
   more trust anchors to be specified.  According to the definition in
   Section 2 of RFC 4033 [RFC4033], a trust anchor can be specified as
   either a public key from a DNSKEY resource record (RR) or the hash of
   a public key as found in a DS RR.  (DS records are defined in Section
   5 of RFC 4034 [RFC4034].)

   This document RECOMMENDS that a trust anchor be specified using the
   hash of a public key rather than the key itself, i.e., the fields
   from a DS record rather than from a DNSKEY record.  A trust anchor
   specified in this manner will use all the fields from the
   corresponding key's DS record, including the owner name to indicate
   which zone the trust anchor corresponds to as well as the various
   fields from the DS RDATA.  The digest algorithm SHOULD be SHA-256
   [RFC4509], which is DS digest type 2.  DS records using SHA-1 (DS
   digest type 1) to specify trust anchors are NOT RECOMMENDED: RFC 4509
   encourages the use of DS RRs using SHA-256 over those using SHA-1.

   Specifying a trust anchor using a DS format instead of a DNSKEY
   format offers a slight advantage because it forces the resolver to
   make a DNS query to obtain the trust anchor's complete DNSKEY RRSet
   during a priming operation (described below).  If only a DNSKEY
   record were specified, resolver implementers could conceivably avoid
   priming the trust anchor.  But priming is desirable because it causes
   the resolver to retrieve an up-to-date version of a zone's DNSKEY
   RRSet from one of the zone's authoritative servers.  It should be
   noted that in practice, priming is almost always required because
   data in the trust anchor zone will usually be signed with a different
   key than the one configured as the trust anchor, thus requiring the
   validating resolver to obtain all keys in the DNSKEY RRSet.

   Using a DS format is also recommended because it is smaller than the
   DNSKEY format and is easier to enter manually, either by typing or
   cutting and pasting.

   Another advantage of configuring a trust anchor using a DS record is
   that the entire hash of the public key in the DS RDATA need not
   necessarily be specified.  A validating resolver MAY support
   configuration using a truncated DS hash value as a human-factors
   convenience: shorter strings are easier to type and less prone to
   error when entered manually.  Even with a truncated hash configured,
   a validating resolver can still verify that in the corresponding DNSKEY RRSet.

   Using a DS format is present in also recommended because it is smaller than the trust anchor zone's apex
   DNSKEY RRSet.  RFC 2104
   [RFC2104] offers guidance on acceptable truncation lengths. format and is easier to enter manually, either by typing or
   cutting and pasting.

3.  Trust Anchor Priming

   A validating resolver needs to obtain and validate the DNSKEY RRSet
   corresponding to a configured DS for that trust anchor to be usable
   in DNSSEC validation.  This process is called "priming" the trust
   anchor.  Priming can occur when the validating resolver starts, but a
   validating resolver SHOULD defer priming of individual trust anchors
   until each is first needed for verification.  This priming on demand
   is especially important when a validating resolver is configured with
   a large number of trust anchors to avoid sending a large number of
   DNS queries on start-up.  This section adds additional details to the
   discussion of trust anchors in Section 5 of RFC 4035 [RFC4035].

   Following are the steps a validating resolver SHOULD take to prime a
   configured trust anchor:

   1.  Read the trust anchor's information (corresponding to the fields
       in a DS record) from the validating resolver's configuration
       (e.g., a text file).

   2.  Look up the DNSKEY RRSet corresponding to the owner name of the
       trust anchor.  (The validating resolver can either perform
       iterative resolution or request recursive service from a
       recursive name server, depending on its capabilities.)

   3.  Verify that the DNSKEY RR corresponding to the configured trust
       anchor (i.e., the DNSKEY whose hash is configured) appears in the
       DNSKEY RRSet and that this DNSKEY RR has the Zone Key Flag
       (DNSKEY RDATA bit 7) set.  (This bit only indicates that the
       DNSKEY is allowed to sign the zone.  This DNSKEY may or not be a
       zone signing key.)

   4.  Verify that the DNSKEY RRSet is signed by one of the DNSKEYs
       found in the previous step, i.e., that there exists a valid RRSIG
       (cryptographically and temporally) for the DNSKEY RRSet generated
       with the private key corresponding to the DNSKEY found in the
       previous step.

   If the validating resolver can successfully complete the steps above,
   all DNSKEY RRs in the RRSet ought to be considered authenticated and
   can be used to authenticate RRSets at or below the trust anchor.

   If any of the steps above result in an error, the validating resolver
   SHOULD log them. them and abort the verification as specified in section 5
   of RFC 4035 [RFC4035].

   If there are multiple trust anchors configured for a zone, any one of
   them is sufficient to validate data in the zone.  For this reason,
   old trust anchors SHOULD be removed from a validating resolver's
   trust anchor list soon after the corresponding keys are no longer
   used by the zone.  If there are multiple trust anchors configured for
   a zone, any one of them is sufficient to validate data in the zone.
   For this reason, old trust anchors SHOULD be removed from a
   validating resolver's trust anchor list soon after the corresponding
   keys are no longer used by the zone, as described in RFC 5011

   If a validating resolver is unable to retrieve a signed DNSKEY RRSet
   corresponding to a trust anchor (i.e., prime the trust anchor), it
   SHOULD log this condition as an error.  Inability to prime a zone's
   trust anchor results in the validating resolver's inability to
   validate data from the corresponding zone.  The validating resolver
   MUST treat this zone as bogus. bogus, until such time it is able to get a
   DNSKEY set validated by a Trust anchor.  The processing of trust
   anchor and DS from parent errors MUST follow the same rules.

4.  Trust Anchor Maintenance

   Trust anchors correspond to zones' key signing keys and these keys do
   change in the course of normal operation.  It is up to validating
   resolver operators to ensure that configured trust anchor information
   remains current and does not go stale: each configured trust anchor
   SHOULD correspond to a DNSKEY RR in the trust anchor zone's apex
   DNSKEY RRSet.  This process is called trust anchor maintenance.
   (Initial trust anchor configuration requires human intervention to
   verify the trust anchor's authenticity using out-of-band means and is
   outside the scope of this document.)

   This section provides a brief overview of some possible mechanisms to
   keep trust anchor information current:

   Manual configuration:  The validating resolver operator MAY choose to
      maintain trust anchor information completely manually.  In this
      case, the operator assumes responsibility for noticing stale trust
      anchor information (i.e., DS records that no longer point to a
      corresponding DNSKEY RR in the trust anchor zone's apex DNSKEY
      RRSet) and updating that information.  This process MAY require
      the operator to use the same out-of-band verification mechanism as
      used for initial configuration to ensure that the new trust anchor
      DS record is trustworthy.  Because manual maintenance is
      burdensome and prone to error, and because other automated trust
      anchor maintenance processes either exist or are in development,
      manual trust anchor maintenance is NOT RECOMMENDED.

   DNSSEC In-band Update:  The IETF DNS Extensions Working Group has
      developed a protocol to automatically update DNSSEC trust anchors,
      which is described in RFC 5011 [RFC5011].  This protocol relies on
      a small DNSSEC protocol change (an additional flag in the DNSKEY
      record) and can be implemented either in a validating resolver
      itself or in an external program with access to the validating
      resolver's trust anchor configuration data.

   Trusted update mechanism:  Updated trust anchor information MAY be
      obtained via a trusted non-DNS update mechanism.  One possibility
      is the operating system update mechanism provided by most software
      vendors.  Operators already place considerable trust in this
      mechanism, so it is reasonable to extend this trust to allow
      distribution and update of DNSSEC public key material.  Another
      possibility is to obtain trust anchor configuration directly from
      the validating resolver software vendor.  This mechanism is
      realistically only feasible for updating a small number of trust
      anchors, such as for the top-level domains.  In a public DNSSEC
      deployment, the root zone would be signed and only the root's
      trust anchor would need updating.

   Combination of update mechanisms:  It is possible that for a given
      validating resolver, different trust anchors will be maintained by
      different mechanisms.  For example, some trust anchors might be
      kept up to date by a trusted update mechanism and others
      maintained by some site-specific mechanism.  In this case, it is
      important that the mechanisms maintain a mutually exclusive set of
      trust anchors.

5.  Security considerations

   This document proposes a standard format for documenting DNSSEC trust
   anchors.  Configuration of trust anchors, especially those obtained
   from third parties as part of an automated process, is a critical
   security operation.  The procedures listed above describe the minimal
   checks that should be performed and reporting that should be done
   when configuring trust anchors.

   In a widespread DNSSEC deployment, the root zone and many TLD zones
   would be signed, thus greatly reducing the number trust anchors that
   validating resolvers would need to store and keep track of.

   If multiple mechanisms are updating the trust anchor list then there
   is the possibility of conflict, such as one mechanism reinserting an
   expired trust anchor.

   Trust anchors are configuration information.  A validating resolver
   ought to treat this information differently than DNS data obtained
   over the network and never use the configured trust anchors as part
   of an answer.

   A signed zone that plans to transition to an unsigned state must
   first give a warning that it is going insecure, such as using the
   technique described in RFC 5011 [RFC5011].  Failure to do so will
   cause all validating resolvers that keep a trust anchor for the zone
   configured to treat responses from the zone as bogus, causing
   resolution failures.

6.  IANA considerations

   This document does not have any IANA actions.

7.  Acknowledgments

   This work was undertaken at the suggestion of the DNSSEC Deployment
   working group (www.dnssec-deployment.org).  Following people are
   acknowledged for contributing to this document, Alfred Hoenes, Edward
   Lewis, Geoff Huston, Paul Hoffman, Matthijs Mekking, Scott Rose Paul

8.  References

8.1.  Normative References

   [RFC2119]  Bradner, S., "Key words for use in RFCs to Indicate
              Requirement Levels", BCP 14, RFC 2119, March 1997.

   [RFC4033]  Arends, R., Austein, R., Larson, M., Massey, D., and S.
              Rose, "DNS Security Introduction and Requirements",
              RFC 4033, March 2005.

   [RFC4034]  Arends, R., Austein, R., Larson, M., Massey, D., and S.
              Rose, "Resource Records for the DNS Security Extensions",
              RFC 4034, March 2005.

   [RFC4035]  Arends, R., Austein, R., Larson, M., Massey, D., and S.
              Rose, "Protocol Modifications for the DNS Security
              Extensions", RFC 4035, March 2005.

   [RFC4509]  Hardaker, W., "Use of SHA-256 in DNSSEC Delegation Signer
              (DS) Resource Records (RRs)", RFC 4509, May 2006.

   [RFC2104]  Krawczyk, H., Bellare, M., and R. Canetti, "HMAC: Keyed-
              Hashing for Message Authentication", RFC 2104,
              February 1997.

   [RFC5011]  StJohns, M., "Automated Updates of DNS Security (DNSSEC)
              Trust Anchors", RFC 5011, September 2007.

8.2.  Informative References

Authors' Addresses

   Matt Larson
   VeriSign, Inc.
   21345 Ridgetop Circle
   Dulles, VA  20166-6503

   Email: mlarson@verisign.com

   Olafur Gudmundsson
   OGUD Consulting LLC
   3821 Village Park Drive
   Chevy Chase, MD  20815

   Email: ogud@ogud.com

Full Copyright Statement

   Copyright (C) The IETF Trust (2008).

   This document is subject to the rights, licenses and restrictions
   contained in BCP 78, and except as set forth therein, the authors
   retain all their rights.

   This document and the information contained herein are provided on an

Intellectual Property

   The IETF takes no position regarding the validity or scope of any
   Intellectual Property Rights or other rights that might be claimed to
   pertain to the implementation or use of the technology described in
   this document or the extent to which any license under such rights
   might or might not be available; nor does it represent that it has
   made any independent effort to identify any such rights.  Information
   on the procedures with respect to rights in RFC documents can be
   found in BCP 78 and BCP 79.

   Copies of IPR disclosures made to the IETF Secretariat and any
   assurances of licenses to be made available, or the result of an
   attempt made to obtain a general license or permission for the use of
   such proprietary rights by implementers or users of this
   specification can be obtained from the IETF on-line IPR repository at

   The IETF invites any interested party to bring to its attention any
   copyrights, patents or patent applications, or other proprietary
   rights that may cover technology that may be required to implement
   this standard.  Please address the information to the IETF at