INTERNET-DRAFT
DNS Protocol Security Extensions
                                                        20 November 1994 Working Group                       Donald E. Eastlake, 3rd
INTERNET-DRAFT                                                       DEC
                                                      Charles W. Kaufman
                                                                    Iris
            Domain Name System Protocol Security Extensions
            ------ ---- ------ -------- -------- ----------

              Donald E. Eastlake 3rd & Charles W. Kaufman

Status of This Document

   This draft, file name draft-ietf-dnssec-secext-02.txt, draft-ietf-dnssec-secext-03.txt, is intended to
   be become a standards track proposed standard RFC.  Distribution of this document is
   unlimited. Comments should be sent to the DNS Security Working Group
   mailing list <dns-security@tis.com> or to the authors.

   This document is an Internet-Draft.  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-Drafts.

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

   To learn the current status of any Internet-Draft, please check the
   1id-abstracts.txt listing contained in the Internet-Drafts Shadow
   Directories on ds.internic.net, nic.nordu.net, ftp.isi.edu,
   munnari.oz.au, or
   munnari.oz.au.

INTERNET-DRAFT                          DNS Protocol Security Extensions ftp.is.co.za.

Abstract

   The Domain Name System (DNS) has become a critical operational part
   of the Internet infrastructure yet it has no strong security
   mechanisms to assure data integrity or authentication.  Extensions to
   the DNS are described in detail that provide these services to security aware
   resolvers or applications through the use of cryptographic digital
   signatures.  These digital signatures are included in secured zones
   as resource records.  Security can still be provided even through
   non-security aware DNS servers.

   A explanatory overview of the proposed extensions appears in draft-
   ietf-dnssec-over-*.txt.

   The extensions also provide for the storage of authenticated public
   keys in the DNS for DNS use and to DNS.  This storage of keys can support a general public
   key distribution
   service. service as well as DNS security.  The stored keys
   enable security aware resolvers to learn the authenticating key of
   zones in addition to keys for which they are initially configured.
   Keys associated with DNS names can be retrieved to support other
   protocols.  Provision is made for a variety of key types and
   algorithms.

   In addition, the security extensions provide for the optional
   authentication of DNS protocol transactions.

Acknowledgements

   The significant contributions of the following persons (in alphabetic
   order) to this draft are gratefully acknowledged: Madelyn Badger,
   Matt Crawford, James M. Galvin, Olafur Gudmundsson, Sandy Murphy,
   Masataka Ohta, Michael A. Patton, Jeffrey I. Schiller.

INTERNET-DRAFT                          DNS Protocol Security Extensions

Table of Contents

      Status of This Document....................................1

      Abstract...................................................2
      Acknowledgements...........................................2

      Table of Contents..........................................3

      1. Introduction............................................5

      2.  Brief Overview of the Extensions.......................6
      2.1 Services Not Provided..................................6
      2.2 Key Distribution.......................................6
      2.2
      2.3 Data Origin Authentication.............................6
      2.2.1  Security Provided...................................6
      2.2.2 Authentication and Integrity...............7
      2.3.2 The SIG Resource Record..............................7
      2.2.3 The NXD Resource Record..............................7
      2.2.4 Signers Other Than The Zone..........................8
      2.2.5
      2.3.3 Authenticating Name Non-existence....................8
      2.3.5 Special Problems With Time-to-Live...................8
      2.3
      2.3.5 Signers Other Than The Zone..........................9
      2.4 DNS Transaction Authentication.........................8 Authentication.........................9

      3. The KEY Resource Record................................10
      3.1 KEY RDATA format......................................10
      3.2 Object Types and DNS Names and Keys...................11 Keys...................10
      3.3 The KEY RR Flag Octet.................................11
      3.4 The KEY Algorithm Version.............................12 Version and MD5/RSA Algorithm.......12
      3.5 KEY RRs in the Construction of Responses..............13
      3.6 File Representation of KEY RRs........................13 RRs........................14

      4. The SIG Resource Record................................15
      4.1 SIG RDATA Format......................................15
      4.1.1 Signature Format....................................17
      4.1.2 SIG RRs Covering Type ANY...........................18
      4.1.3 Zone Transfer (AXFR) SIG............................18
      4.1.4 Transaction SIGs....................................18 SIGs....................................19
      4.2 SIG RRs in the Construction of Responses..............19
      4.3 Processing Responses with SIG RRs.....................19 RRs.....................20
      4.4 File Representation of SIG RRs........................20 RRs........................21

      5. Non-existent Names.....................................22
      5.1 The NXD Resource Record...............................22
      5.2 NXD RDATA Format......................................23
      5.3 Example...............................................23
      5.4 Interaction of NXD RRs and Wildcard RRs...............23
      5.5 Blocking NXD Pseudo-Zone Transfers....................24

      6. How to Resolve Securely................................25
      6.1 Boot File Format......................................25
      6.2 Chaining Through Zones................................26 Zones................................25
      6.3 Secure Time...........................................27

INTERNET-DRAFT                          DNS Protocol Security Extensions
      7. Operational Considerations.............................28
      7.1 Key Size Considerations...............................28
      7.2 Key Storage...........................................28
      7.3 Key Generation........................................29
      7.4 Key Lifetimes.........................................29
      7.5 Revocation............................................29 Signature Lifetime....................................30
      7.6 Root..................................................30

      8. Conformance............................................31
      8.1 Server Conformance....................................31
      8.2 Resolver Conformance..................................31

      9. Security Considerations................................32
      References................................................32

      Authors Addresses.........................................33
      Expiration and File Name..................................33

INTERNET-DRAFT                          DNS Protocol Security Extensions

      Appendix: Base 64 Encoding................................34

1. Introduction

   This draft provides detailed descriptions describes extensions of the DNS protocol
   extensions to support DNS
   security and public key distribution.

   A broad overview of these extensions is provided in draft-ietf-
   dnssec-over-*.txt.

   This draft assumes that the reader is familiar with that overview and with the Domain Name System
   System, particularly as described in RFCs 1034 and 1035.  The requirements and goals of DNS
   security are described in the overview document.

INTERNET-DRAFT                          DNS Protocol Security Extensions

2.  Brief Overview of the Extensions

   The DNS protocol extensions provide three distinct services: key
   distribution as described in section 2.1 2.2 below, data origin
   authentication as described in section 2.2 2.3 below, and transaction
   authentication, described in section 2.3 2.4 below.

2.1 Services Not Provided

   It is part of the design philosophy of the DNS that the data in it is
   public and that the DNS gives the same answers to all inquirers.

   Following this philosophy, no attempt has been made to include any
   sort of access control lists or other means to differentiate
   inquirers.

   In addition, no effort has been made to provide for any
   confidentiality for queries or responses.  (This service may be
   available via an IP network level security protocol for which there
   is current an IETF working group.)

2.2 Key Distribution

   The resource records are defined to associate keys with DNS names.
   This permits the DNS to be used as a general public key distribution
   mechanism in support of the data origin authentication and
   transaction authentication DNS services as well as other security
   services such as IP level security.

   The syntax of a KEY resource record is described in Section 3.  It
   includes the name of the entity the key is associated with
   (frequently but not always the KEY RR resource record owner name), an
   algorithm identifier, flags indicating the type of entity the key is
   associated with or and/or asserting that there is no key associated with
   that entity, and the actual public key parameters.

2.2

   Under conditions described in Section 3, security aware DNS servers
   will automatically attempt to return KEY resources as additional
   information, along with those actually requested, to minimize query
   traffic.

2.3 Data Origin Authentication

   Adding security requires no change to and Integrity

   Security is provided by associating with resource records in the "on-the-wire" DNS protocol
   beyond the addition of the signature resource types (and, as a
   practical matter, the key resource type needed for key distribution).
   An additional domain name non-existence resource is added to extend
   authentication to negative responses.  This service can be supported
   by existing resolver and server implementations so long as they could
   support the additional resource types.

   If signatures are always separately retrieved and verified when
   retrieving the information they authenticate, there will be more
   trips to the server and performance will suffer.  To avoid this,
   security aware servers mitigate that degradation by automatically
   send exactly the signature(s) needed.

2.2.1  Security Provided

   Security is provided by associating with resource records in the DNS
   a
   cryptographically generated digital signature. signatures.  Commonly, there will
   be a single private key that signs for an entire zone.  If a security
   aware resolver reliably learns the public key of the zone,

INTERNET-DRAFT                          DNS Protocol Security Extensions it can
   verify that all the data read was properly authorized and is
   reasonably current.  The expected implementation is for the zone
   private key to be kept off-line and used to re-sign all of the
   records in the zone periodically.

   The data origin authentication key belongs to the zone and not to the
   servers that store copies of the data.  That means compromise of a
   server or even all servers for a zone will not affect the degree of
   assurance that a resolver has that the data is genuine.

   A resolver can learn the public key of a zone either by reading it
   from DNS or by having it staticly configured.  To reliably learn the
   public key by reading it from DNS, the key itself must be signed.
   Thus, to provide a reasonable degree of security, the resolver must
   be configured with at least the public key of one zone.  From that,
   it can securely read the public keys of other zones if the
   intervening zones in the DNS tree are secure.  It is in principle
   more secure to have the resolver manually configured with the public
   keys of multiple zones, since then the compromise of a single zone
   would not permit the faking of information from other zones.  It is
   also more administratively cumbersome, however, particularly when
   public keys change.

2.2.2

   Adding origin authentication and integrity requires no change to the
   "on-the-wire" DNS protocol beyond the addition of the signature
   resource types (and, as a practical matter, the key resource type
   needed for key distribution).  This service can be supported by
   existing resolver and server implementations so long as they could
   support the additional resource types.

   If signatures are always separately retrieved and verified when
   retrieving the information they authenticate, there will be more
   trips to the server and performance will suffer.  To avoid this,
   security aware servers mitigate that degradation by automatically
   sending exactly the signature(s) needed.

2.3.2 The SIG Resource Record

   The syntax of a SIG resource record (signature) is described in
   Section 4.  It includes the type of the RR(s) being signed, the name
   of the signer, the time at which the signature was created, the time
   it expires (when it is no longer to be believed), its original time
   to live (which may be longer than its current time to live but cannot
   be shorter), the cryptographic algorithm in use, and the actual
   signature.

   Every name in a zone supporting signed data will have associated with
   it a at least one SIG resource records record for each resource type under that
   name.  A security aware server supporting the performance enhanced
   version of the DNS protocol security extensions will return attempt to
   return, with all records
   retrieved retrieved, the corresponding SIGs.  If a
   server does not support the protocol, the resolver must retrieve all
   the SIG records for a name and select the one or ones that sign the
   resource record(s) that resolver is interested in.

2.2.3 The NXD Resource Record

2.3.3 Authenticating Name Non-existence

   The above security mechanism provides only a way to sign existing RRs
   in a zone.  Data origin authentication is not obviously provided for

INTERNET-DRAFT                          DNS Protocol Security Extensions
   the non-existence of a domain name in a zone.  This gap is filled by
   the NXD RR which authenticatably asserts a range of non-existent
   names in a zone.  The owner of the NXD RR is the start of such a
   ranger and its RDATA is the end of the range; however, there are
   additional complexities due to wildcards.

   Section 6 below covers the NXD RR.

2.2.4 Signers Other Than The Zone

   There are two general cases where a signature is generated by other
   than the zone private key.  One is for future support of dynamic
   update where an entity is permitted to authenticate/update its own
   record.  The public key of the entity must be present in the DNS and
   be appropriately signed but the other RR(s) may be signed with the
   entity's key.  The other is for support of transaction authentication
   as described in 2.3 below.

2.2.5 Special Problems With Time-to-Live

   A digital

2.3.5 Special Problems With Time-to-Live

   A digital signature will fail to verify if any change has occurred to
   the data between the time it was originally signed and the time the
   signature is verified.  This conflicts with our desire to have the
   time-to-live field tick down when resource records are cached.

   This could be avoided by leaving the time-to-live out of the digital
   signature, but that would allow unscrupulous secondaries to set
   arbitrarily long time to live values undetected.  Instead, we include
   the "original" time-to-live in the signature and communicate that
   data in addition to the current time-to-live.  Unscrupulous servers
   under this scheme can manipulate the time to live but a security
   aware resolver will bound the TTL value it uses at the original
   signed value.  Separately, signatures include a time signed and an
   expiration time.  A resolver that knows an absolute time can
   determine securely whether a signature has expired.  It is not
   possible to rely solely on the signature expiration as a substitute
   for the TTL, however, singe non-security aware servers must still be
   supported.

2.3.5 Signers Other Than The Zone

   There are two general cases where a SIG resource record is signed by
   other than the zone private key.  One is for future support of
   dynamic update where an entity is permitted to authenticate/update
   its own records.  The public key of the entity must be present in the
   DNS and be appropriately signed but the other RR(s) may be signed
   with the entity's key.  The other is for support of transaction
   authentication as described in Section 2.3 below.

2.4 DNS Transaction Authentication

   The data origin authentication service described above protects
   resource records but provides no protection for DNS message headers.
   If header bits are falsely set by a server, there is little that can
   be done.  However, it is possible to add transaction authentication.
   Such authentication means that a resolver can be sure it is getting
   messages from the server it thinks it queried and that the response
   is from the query it sent and that these messages have not been

INTERNET-DRAFT                          DNS Protocol Security Extensions
   diddled in transit.

   This is accomplished by optionally adding a special SIG resource
   record to the end of the reply which digitally signs the
   concatenation of the server's response and the resolver's query.  The
   private key used belongs to the host composing the reply, not to the
   zone being queried.  The corresponding public key is stored in and
   retrieved from the DNS.  Because replies are highly variable, message
   authentication SIGs can not be precalculated. pre-calculated.  Thus it will be
   necessary to keep the private key on-line, for example in software or
   in a directly connected piece of hardware.

   The best way to get the security provided by the

   DNS level transaction authentication service would be to use unnecessary if a good IP lower
   level security
   protocol.  The authors of this draft decry the every growing number
   of (i.e., IP application level level) end-to-end security protocols protocol were available.
   However, such as Telnet, NTP, FTP,
   etc., etc. when a single IP-security protocol could secure most of
   these applications.

   Unfortunately, an IP-security standard has is not yet been adopted.  And
   even if standardized and when it had, is,
   there will be a considerable time during which there will be many systems for many years where
   on which it will be hard to add IP security IPSEC but relatively easy to replace
   the DNS components.  Furthermore, the data origin authentication service
   requires the implementation of essentially all the mechanisms needed
   for a rudimentary message authentication service.  Thus a simple
   transaction authentication service based on mechanisms already
   required by DNS security is included as a strictly optional part of
   these extensions.

INTERNET-DRAFT                          DNS Protocol Security Extensions

3. The KEY Resource Record

   The KEY RR is used to document a key that is associated with a DNS
   name.  It will be a public key as only public keys are stored in the
   DNS.  This can be the public key of a zone owner, of a host or other
   end entity, or a user.  A KEY RR is, like any other RR, authenticated
   by a SIG RR.  Security aware DNS implementations should be designed
   to handle at least two simultaneously valid keys of the same type
   associated with a name.

   The type number for the KEY RR is 25.

3.1 KEY RDATA format

   The RDATA for a KEY RR consists of an object name, flags, the
   algorithm version, and the public key itself.  For the MD5/RSA
   algorithm, that is the public exponent and the public modulus.  The format is as
   follows:

                        1 1 1 1 1 1 1 1 1 1 2 2 2 2 2 2 2 2 2 2 3 3
    0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   |                                                               /
   +-              object name                 +---------------+     +---------------+---------------+
   /                               |    flags      |
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   |   algorithm   |              public key exponent              |
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   | modulus length|                                               |
   +---------------+                                                               /
   + -                        public key modulus               -+                           /
   /
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+                                                               /
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-/

   The object name, and the flags octets are described in Sections 3.2
   and 3.3 below. below respectively.  The flags must be examined before any
   following data as they control its the format and even whether there is
   any following data.  The public key exponent and modulus length fields show apply only if
   the MD5/RSA algorithm is in use and a key is present.  The public key
   exponent is an unsigned 24 bit integer. fields are
   described in Section 3.4.  The format of the public key modulus field
   is a multiprecision unsigned integer.  The "modulus length" is an
   unsigned octet which is the actual modulus length minus 64.  This
   limits keys to a maximum of 255+64 or 319 octets and a minimum of 64
   octets.  Although moduluses of less than 512 significant bits are not
   recommended, due to the weak security they provide, they can be
   represented by using leading zeros.

INTERNET-DRAFT                          DNS Protocol Security Extensions algorithm
   dependent.

3.2 Object Types and DNS Names and Keys

   The public key in a KEY RR belongs to the object named in the object
   name field.  Frequently this will also be the owner name of the KEY
   RR.  But they will be different in the case of the key or keys stored
   under a zone's name for the zone's superzone or keys that are stored
   for cross certification. certification of other zones.

   The DNS object name may refer to up to three different things.  For
   example, dee.lkg.dec.com could be (1) a zone, (2) a host, host or other end
   entity , and (3) the mapping into a DNS name of the user or account
   dee@lkg.dec.com .  Thus, there are flags in the KEY RR to indicate
   with which of these roles the object name and public key are
   associated as described below.

   Although the same name can be used for up to all three of these
   contexts, such overloading of a name is discouraged.  It is also
   possible to use the same key for these different things with the same name
   or even different names, but this is strongly discouraged.  In addition, there are three control bits,
   particular, the "no key" bit, use of a zone key as a non-zone key will usually
   require that the
   "experimental" bit, private key be kept on line and the "signatory" bit, as described in 3.3
   below. thereby become much
   more vulnerable.

   It would be desirable for the growth of DNS to be managed so that
   additional possible simultaneous uses for names are NOT added.  New
   uses should be distinguished by exclusive domains.  For example, all
   IP autonomous system numbers have been mapped into the in-as.arpa
   domain [draft-ietf-dnssec-as-map-*.txt] and all telephone numbers in
   the world have been mapped into the tpc.int domain [...]. [RFC 1530].  This
   is much preferable to having the same name possibly be an autonomous
   system number, telephone number, and/or host as well as a zone and a
   user.

3.3 The KEY RR Flag Octet

   In addition to the name type bits, there are three control bits, the
   "no key" bit, the "experimental" bit, and the "signatory" bit, as
   described below.

3.3 The KEY RR Flag Octet

   In the "flags" field:

        Bit 0 is the "no key" bit.  If this bit is on, there is no key
   information and the RR stopw stops with the flags octet.  By the use of
   this bit, a signed KEY RR can authenticatably assert that, for
   example, a zone is not secured.

        Bits 1 is the "experimental" bit.  Keys may be associated with
   zones
   zones, entities, or entities users for experimental, trial, or optional use,
   in which case this bit will be one.  If this bit is a zero, it means
   that the use or availability of security based on the key is
   "mandatory".  Thus, if this bit is off for a zone, the zone should be
   assumed secured by SIG RRs and any responses indicating the zone is
   not secured should be considered bogus.  Similarly, if this bit were
   off for a host key and attempts to negotiate IP-security with the
   host produced indications that IP-security was not supported, it
   should be assumed that the host has been compromised or
   communications with it are being spoofed.  On the other hand, if this
   bit were a one, the host might very well sometimes operate in a
   secure mode and at other

INTERNET-DRAFT                          DNS Protocol Security Extensions times operate without the availability of
   IP-security.  The experimental bit, like all other aspects of the KEY
   RR, is only effective if the KEY RR is appropriately signed by a SIG
   RR.  The experimental bit must be zero for safe secure operation and
   should only be a one for a minimal transition period.

        Bit 2 is the "signatory" bit.  It indicates that the key can
   validly sign RRs of the same name.  If the owner name is a wildcard,
   then RRs with any name which is in the wildcard's scope can be signed
   including NS and corresponding zone KEY RRs to carve out a subzone.
   This bit is meaningless for zone keys which always have authority to
   sign any RRs in the zone.  The signatory bit, like all other aspects
   of the KEY RR, is only effective if the KEY RR is appropriately
   signed by a SIG RR.

        Bits 3-4 are reserved and must be zero.  If they are found non-
   zero, they should be ignored and the KEY RR used as indicated by the
   other flags.

        Bit 5 on indicates that this is a key associated with a "user"
   or "account" at an end entity, usually a host.  The coding of the
   owner name is that used for the responsible individual mailbox in the
   SOA record: The owner name is the user name as the name of a node
   under the entity name.  For example, "j.random_user" on
   host.subdomain.domain could have a public key associated through an a
   KEY RR with name j\.random_user.host.subdomain.domain.  It could be
   used in an IP-security protocol where authentication of a user was
   desired.  This key would be useful in IP or other security for a user
   level service such a telnet, ftp, rlogin, etc.

        Bit 6 on indicates that this is a key associated with the non-
   zone entity whose name is the RR owner name.  This will commonly be a
   host but could, in some parts of the DNS tree, be some other type of
   entity such as an Autonomous System [draft-ietf-dnssec-as-map-*.txt].
   This is the public key used in connection with the optional DNS
   transaction authentication service that can be used if the owner name
   is a DNS server host.  It could also be used in an IP-security
   protocol where authentication of a host was desired.

        Bit 7 on indicates that this is a zone key for the zone whose
   name is the RSA KEY RR owner name.  This is the fundamental type of DNS
   data origin authentication public key.

3.4 The KEY Algorithm Version and MD5/RSA Algorithm

   This octet is the key algorithm version parallel to the same field
   for the SIG resource.  The MD5/RSA algorithm described in this draft
   is number 1.  Version numbers 2 through 253 are available for
   assignment should sufficient reason arise.  However, the designation
   of a new version could have a major impact on interoperability

INTERNET-DRAFT                          DNS Protocol Security Extensions and
   requires an IETF standards action.  Version 254 is reserved for
   private use and will never be assigned a specific algorithm.  For
   version 254, the combined "public exponent", "modulus length" and
   "modulus" public key area shown in the packet diagram above
   will actually begin with an Object Identifier (OID) indicating the
   private algorithm in use and the remainder of the combined area is
   whatever is required by that algorithm. Algorithm versions 0 and 255
   are illegal.

3.5 KEY RRs in the Construction of Responses

   A request for KEY RRs does not cause any special additional
   information processing except, of course, for the corresponding SIG
   RR from a security aware server.

   Security aware DNS servers will include KEY RRs as additional
   information in responses where  appropriate as follows:

        On the retrieval of NS RRs, the zone key KEY RR(s) for the zone
   served by these name servers will be included. reserved.

   If not all additional
   info will fit, the KEY RR(s) have lower priority than type A glue
   RRs.

        On retrieval of type A RRs, no key bit is zero and the end entity KEY RR(s) for algorithm field is 1, indicating
   the
   host named will be included.  On inclusion of A RRs as additional
   information, their KEY RRs will also be included but with lower
   priority than MD5/RSA algorithm, the relevant A RRs.

3.6 File Representation of KEY RRs

   KEY RRs may appear public key filed is structured as lines in a follows:

                        1 1 1 1 1 1 1 1 1 1 2 2 2 2 2 2 2 2 2 2 3 3
    0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   |             public key exponent               |modulus length |
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   |                                                               /
   +-                           modulus                            /
   |                                                               /
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+

   The public key modulus field is a multiprecision unsigned integer.
   The "modulus length" is an unsigned octet which is the actual modulus
   length minus 64.  This limits keys to a maximum of 255+64 or 319
   octets and a minimum of 64 octets.  Although moduluses of less than
   512 significant bits are not permitted, due to the weak security they
   provide, they can be represented by using leading zeros.

3.5 KEY RRs in the Construction of Responses

   An explicit request for KEY RRs does not cause any special additional
   information processing except, of course, for the corresponding SIG
   RR from a security aware server.

   Security aware DNS servers will include KEY RRs as additional
   information in responses where  appropriate including the following:

        On the retrieval of NS RRs, the zone key KEY RR(s) for the zone
   served by these name servers will be included.  If not all additional
   info will fit, the KEY RR(s) have lower priority than type A or AAAA
   glue RRs.

        On retrieval of type A or AAAA RRs, the end entity KEY RR(s)
   will be included.  On inclusion of A or AAAA RRs as additional
   information, their KEY RRs will also be included but with lower
   priority than the relevant A or AAAA RRs.

3.6 File Representation of KEY RRs

   KEY RRs may appear as lines in a zone data file.

   The

   In the RDATA portion, the object name appears first.

   The flag octet and algorithm version octets are then represented as
   unsigned integers; however, if the "no key" flag is on in the flags,
   nothing appears after the flag octet.

   If the algorithm specified is the MD5/RSA algorithm, then the
   exponent and modulus appear.  The public key exponent is an unsigned
   integer from 3 to 16777215.  The public key modulus can be quite
   large, up to 319 octets.  It is the last data field and is
   represented in hex base 64 (see Appendix) and may be divided up into any
   number of white space separated substrings, down to single hex base 64
   digits, which are concatenated to obtain the full signature.  These hex
   substrings can span lines using the standard parenthesis.

INTERNET-DRAFT                          DNS Protocol Security Extensions

   If an algorithm from 2 through 253 is specified, the public key
   parameters required by that algorithm are given.  If the algorithm
   specified is number 254, then an OID appears followed by whatever is
   required for the private algorithm.  An implementation that does not
   understand a particular standard or private algorithm should attempt
   to parse the rest of the line as one or more base 64 substrings to be
   concatenated to yield the key parameters.  Algorithm versions 0 and 255 are
   illegal.

INTERNET-DRAFT                          DNS Protocol Security Extensions 0 and
   255 are reserved.

4. The SIG Resource Record

   The SIG or "signature" resource record (RR) is the fundamental way
   that data is authenticated in the secure DNS.  As such it is the
   heart of the security provided.

   The SIG RR unforgably authenticates other RRs of a particular type type,
   class, and name and binds them to a time interval and the signer's
   fully qualified domain name.  This is done using cryptographic
   techniques and the signer's private key.  The signer is usually frequently
   the owner of the zone from which the RR originated.

4.1 SIG RDATA Format

   The RDATA portion of a SIG RR is as shown below.  The integrity of
   the RDATA information and that of the SIG RRs owner, type, and class
   are is protected by the signature field.

                        1 1 1 1 1 1 1 1 1 1 2 2 2 2 2 2 2 2 2 2 3 3
    0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   |        type covered           |  algorithm    |     labels    |
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   |                         original TTL                          |
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   |                      signature expiration                     |
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   |                         time signed                           |
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   |         key footprint         |                               /
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+         signer's name         /
   /                                                               /
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   |                                                               /
   +-                          signature                           /
   /                                                               /
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+

   The value of the SIG RR type is 24.

   The "type covered" is the type of the other RRs covered by this SIG.

   The algorithm version number is an octet specifying the digital
   signature algorithm used.  The MD5/RSA algorithm described in this
   draft is version one. 1.  Version numbers 2 through 253 are available for
   assignment should sufficient reason arise to allocate them.  However,
   the designation of a new version could have a major impact on the
   interoperability of the global DNS systems and requires an IETF
   standards action.  Version 254 is reserved for private use and

INTERNET-DRAFT                          DNS Protocol Security Extensions will
   never be assigned a specific algorithm.  For version 254, the
   "signature" area shown above will actually begin with an Object
   Identified (OID) indicating the private algorithm in use and the
   remainder of the signature area is whatever is required by that
   algorithm.  Version numbers 0 and 2555 255 are illegal. reserved.

   The "labels" octet is an unsigned count of how many labels there are
   in the original SIG RR owner name not counting the null label for
   root and not counting any initial "*" for a wildcard.  If, on
   retrieval, the RR appears to have a longer name, the resolver can
   tell it is the result of wildcard substitution.  If the RR owner name
   appears to be shorter than the labels count, the SIG RR should be
   considered corrupt and ignored.  The maximum number of labels
   possible in the current DNS is 127 but the entire octet is reserved
   and would be required should DNS names ever be expanded to 255
   labels.  If a secured retrieval is the result of wild card
   substitution, it is necessary for the resolver to use the original
   form of the name in verifying the digital signature.  The field helps
   optimize the determination of the original form. form reducing the effort
   in authentication signed data.  The following table give some
   examples.  The value of "labels" is at the top, the retrieved owner
   name on the left, and the table entry is the name to use in signature
   verification except that "bad" means the RR is corrupt.

      labels= |  0  |   1  |    2   |      3   |      4   |
      --------+-----+------+--------+----------+----------+
             .|   . | bad  |  bad   |    bad   |    bad   |
            d.|  *. |   d. |  bad   |    bad   |    bad   |
          c.d.|  *. | *.d. |   c.d. |    bad   |    bad   |
        b.c.d.|  *. | *.d. | *.c.d. |   b.c.d. |    bad   |
      a.b.c.d.|  *. | *.d. | *.c.d. | *.b.c.d. | a.b.c.d. |

   The "original TTL" field is included in the RDATA portion to avoid
   authentication problems that caching servers would otherwise cause by
   decrementing the real TTL field and security problems that
   unscrupulous servers could otherwise cause by manipulating the real
   TTL field.  This original TTL is protected by the signature while the
   real
   current TTL field is not.

   NOTE:  The "original TTL" must be restored into the covered RRs when
   the signature is verified.  This implies that the RRs need to all
   have the same TTL to start with.

   The SIG is valid until the "signature expiration" time which is an
   unsigned number of seconds since the start of 1 January 1970. 1970, GMT.

   The "time signed" field is an unsigned number of seconds since the
   start of 1 January 1970. 1970, GMT.

   The "key footprint" is a 16 bit quantity that is used to help
   efficiently select between multiple keys which may be applicable and
   as a quick check that a public key about to be used for the
   computationally expensive effort to decode check the signature is possibly
   valid.  Its exact meaning is algorithm dependent.  For the MD5/RSA
   algorithm, it is the next to the bottom two octets of the public key
   modulus needed to decode the signature field.  That is to say, the
   most significant 16 of the lest significant 24 bits of this quantity. quantity
   in network order.

   The "signer's name" field is the fully qualified domain name of the
   signer generating the SIG RR.  This is usually frequently the zone which
   contained the RR(s) being authenticated.

   The structured of the "signature" field depends on the algorithm
   chosen and is described below.

INTERNET-DRAFT                          DNS Protocol Security Extensions below for the MD5/RSA algorithm.

4.1.1 Signature Format

   The actual signature portion of the SIG RR binds the owner, signer,
   class, original TTL, time signed, flags, and expiration time of the
   SIG RR RDATA to all of the
   "type covered" RRs with that owner name.  These covered RRs are
   thereby authenticated.  To accomplish this, a data sequence is
   constructed as follows:

        data = algorithm | original TTL | Expiration Time | Time signed |
                Signer's Name RDATA | RR(s)...

   where | is concatenation and RR(s) are all the expanded (no name
   abbreviation) RR(s) of the type covered with the same owner name and
   class as the SIG RR in canonical order.  The canonical order for RRs
   is to sort them in ascending order as left justified unsigned octet
   sequences where a missing octet sorts before a zero octet.

   How this data sequence is processed into the signature is algorithm
   dependent.

   For the MD5/RSA algorithm, the signature is as follows

        hash = MD5 ( data )

        signature = ( 01 | FF* | 00 | hash ) ** e (mod n)

   where "|" is concatenation, "e" is the secret key exponent of the
   signer, and "n" is the public modulus that is the signer's public
   key.  01, FF, and 00 are fixed octets of the corresponding
   hexadecimal value.  The FF octet is repeated the maximum number of
   times such that the value of the quantity being exponentiated is one
   octet shorter than the value of n.

   The size of n, including most and least significant bits (which will
   be 1) SHALL be not less than 512 bits and not more than 2552 bits.  n
   and e MUST be chosen such that the public exponent is less than or
   equal to 2**24 - 1 and SHOULD be chosen such that the public exponent
   is small.

   The above specifications are similar to Public Key Cryptographic
   Standard #1 [PKCS1].

   (A public exponent of 3 minimizes the effort needed to decode a
   signature.  Use of 3 as the public exponent may be weak for
   confidentiality uses since, if the same data can be collected
   encrypted under three different keys with an exponent of 3 then,
   using the Chinese Remainder Theorem [ref], Theorem, the original plain text can be
   easily recovered.  This weakness is not significant for DNS because
   we seek only authentication, not confidentiality.)

INTERNET-DRAFT                          DNS Protocol Security Extensions

4.1.2 SIG RRs Covering Type ANY

   The SIG RR described above protects all the RRs with a particular
   owner name name, class, and type.  Thus a server must supply them all to
   convince a security aware resolver.  However, an unscrupulous server
   could claim there were no RRs of a particular type and class under an
   owner name while presenting signed RRs of other types.  To provide a
   means of protection against this, one or more SIG RR is added for
   each owner name that covers the type ANY.  It is calculated as
   indicated above except that all RRs for that owner name, name and SIG key,
   except the SIG RR covering type ANY
   itself, are included in the data string which is processed into type ANY itself, are included in the data
   string which is processed into the signature.

   To allow for dynamic update, the zone key signed ANY SIG RR covers
   only zone signed RRs.  If RRs are added to a zone authenticated by an
   entity or user key, then an ANY SIG RR signed by that key covering
   the
   signature. RRs signed by that key should be added.

4.1.3 Zone Transfer (AXFR) SIG

   The above SIG mechanisms assure the authentication of all the RRs of
   a particular name name, class and type and all the RRs of a particular name
   name, class and any type.  However, to secure complete zone
   transfers, a SIG RR owned by the zone name must be created with a
   type covered of AXFR that covers all other zone signed RRs.  It will
   be calculated by hashing together all other static zone RRs,
   including SIGs.  The RRs are ordered and concatenated for hashing as
   described in Section 4.1.1.  This SIG, other than having to be
   calculated last of all zone key signed SIGs in the zone, is the same
   as any other SIG.

   Dynamic zone RRs which might be added by some future dynamic zone
   update protocol and signed by an end entity or user key rather than a
   zone key (see Section 3.2) are not included.  They originate in the
   network and will not, in general, be migrated to the recommended off
   line zone signing procedure (see Section 8.2).  Thus such dynamic RRs
   are not directly signed by the zone and are not generally protected
   against omission during zone transfers.

4.1.4 Transaction SIGs

   A response message from a security aware server may optionally
   contain a special SIG as the last item in the additional information
   section to authenticate the transaction.

   This SIG has a "type covered" field of zero, which is not a valid RR
   type.  It is calculated by using a "data" (see section 4.1.1) of the
   entire preceding DNS reply message, including DNS header,
   concatenated with the entire DNS query message that produced this
   response, including the query's DNS header.  That is

        data = full response (less trailing message SIG) | full query

INTERNET-DRAFT                          DNS Protocol Security Extensions

   Verification of the message SIG (which is signed by the server host
   key, not the zone key) by the requesting resolver shows that the
   query and response were not tampered with in transit and that the
   response corresponds to the intended query.

4.2 SIG RRs in the Construction of Responses

   Security aware servers MUST, for every authoritative RR the query
   will return, attempt to send the available SIG RRs which authenticate
   the requested RR.  If multiple such SIGs are available, there may be
   insufficient space in the response to include them all.  In this
   case, SIGs whose signer is the zone containing the RR MUST be given
   highest priority and retained even if SIGs with other signers must be
   dropped.

   To minimize possible truncation problems,

   Sending SIGs to authenticate non-authoritative data (glue records and
   NS RRs for subzones) is optional and should be avoided if it will
   lead to UDP DNS response truncation.

   If a SIG covers any RR that would be in the answer section of the
   response, its automatic inclusion MUST be the answer section.  If it
   covers an RR that would appear in the authority section, its
   automatic inclusion MUST be in the authority section.  If it covers
   an RR that would appear in the additional information section it MUST
   appear in the additional information section.

   Optionally, DNS transactions may be authenticated by a SIG RR at the
   end of the response in the additional information section (section
   4.1.4).  Such SIG RRs are signed by the DNS server originating the
   response.  Although the signer field must be the name of the
   originating server host, the owner name, class, TTL, and original
   TTL, are meaningless.  The class and TTL fields can be zero.  To save
   space, the name should be root (a single zero octet).

   [There may be a problem with SIG and NXD RR's associated with domain
   names that are CNAMEs.  The DNS RFCs prohibit other types of RRs
   appearing with a CNAME RR.  This problem is being ignored until it is
   clear if DNS servers will really have a problem with this.]

4.3 Processing Responses with SIG RRs

   If SIG RRs are received in response to a query explicitly specifying
   the SIG type, no special processing is required but a security aware
   client
   may MAY wish to authenticate them by decoding checking the signature and
   applying consistency checks.

   If SIG RRs are received in any other response, a security aware
   client should decoded check them using the public key of the signer.  The
   result of such decoding should thenbe then be verified against the

INTERNET-DRAFT                          DNS Protocol Security Extensions appropriate other RRs
   retrieved.

   If the message does not pass reasonable checks or the SIG does not
   check against the signed RRs, the SIG RR is invalid and should be
   ignored.  The time of receipt of the SIG RR must be in the inclusive
   range of the time signed and the signature expiration but the SIG can
   be retained and remains locally valid until the expiration time plus
   the authenticated TTL.

   If the SIG RR is the last RR in a response in the additional
   information section and has a type covered of zero, it is a
   transaction signature of the the response and the query that produced
   the response.  It may be optionally checked and the message rejected
   if the checks fail.  But even it the checks succeed, such a
   transaction authentication SIG does NOT authenticate any RRs in the
   message.  Only a proper direct or hashed SIG RR signets signed by the zone can
   authenticate RRs.  If a resolver does not implement transaction SIGs,
   it MUST at least ignore them without error.

   If all reasonable checks indicate that the SIG RR is valid then RRs
   verified by it should be considered authenticated and all other RRs
   in the response should be considered with suspicion.

4.4 File Representation of SIG RRs

   A SIG RR covering RRs can be represented as a single logical line in a zone data
   file [RFC1033] but there are some special problems as described
   below.  (It does not make sense to include a transaction
   authenticating SIG RR in a file as it is a transient authentication
   that must be calculated in real time by the DNS server.)

   There is no particular problem with the signer, covered type, and
   times.  The time fields appears in the form YYYYMMDDHHMMSS where YYYY
   is the year, the first MM is the month number (01-12), DD is the day
   of the month (01-31), HH is the hour in 24 hours notation (00-23),
   the second MM is the minute (00-59), and SS is the second (00-59).

   The original TTL and algorithm fields appears as unsigned integers.

   The "labels" field does not appear in the file representation as it
   can be calculated from the owner name.

   The key footprint appears as an eight digit unsigned hexadecimal
   number.

   However, the signature itself can be very long.  It is the last data
   field and is represented in hex base 64 (see Appendix) and may be divided
   up into any number of white space separated substrings, down to
   single hex base 64 digits, which

INTERNET-DRAFT                          DNS Protocol Security Extensions are concatenated to obtain the full
   signature.  These hex substrings can be split between lines using the
   standard parenthesis.

INTERNET-DRAFT                          DNS Protocol Security Extensions

5. Non-existent Names

   The SIG RR mechanism described in section 4 above provides strong
   authentication of RRs that exist in a zone.  But is it not
   immediately clear how to authenticatably deny the existence of a name
   in a zone.

   The nonexistence of a name in a zone is indicates indicated by the NXD RR for a
   name interval containing the nonexistent name.  An NXD RR and its SIG
   are returned in the additional information section, along with the
   error, if the resolver is security aware.  NXD RRs can also be
   returned if an explicit query is made for the NXD type.

   The existence of a complete set of NXD records in a zone means that
   any query for any name to a security aware server serving the zone
   should result in an reply containing at least one signed RR.

5.1 The NXD Resource Record

   The NXD resource record is used to securely indicate that no RRs with
   an owner name in a certain name interval exist in a zone.

   The owner name of the NXD RR is an existing name in the zone.  It's
   RDATA is another existing name in the zone.  The presence of the NXD
   RR means that no name between its owner name and the name in its
   RDATA area exists.  This implies a canonical ordering of all domain
   names in a zone.

   The ordering is to sort labels as unsigned left justified octet
   strings where the absence of a byte sorts before a zero byte.  Names
   are then sorted by sorting on the highest level label and then,
   within those names with the same highest level label by the next
   lower label, etc.  Since we are talking about a zone, the zone name
   itself always exists and all other names are the zone name with some
   prefix of lower level labels.  Thus the zone name itself always sorts
   first.

   There is a slight problem with the last NXD in a zone as it wants to
   have an owner name which is the last existing name in sort order,
   which is easy, but it is not obvious what name to put in its RDATA to
   indicate the entire remainder of the name space.  This is handled by
   treating the name space as circular and putting the zone name in the
   RDATA of the last NXD.

   There are additional complexities due to interaction with wildcards
   as explained below.

   The NXD RRs for a zone can be automatically calculated and added to

INTERNET-DRAFT                          DNS Protocol Security Extensions
   the zone by the same recommended off-line process that signs the
   zone.  The NXD RRs RR's TTL should not exceed the zone minimum TTL.

   The type number for the NXD RR is xxx.

5.2 NXD RDATA Format

   The RDATA for an NXD RR consists simply of a domain name.

                        1 1 1 1 1 1 1 1 1 1 2 2 2 2 2 2 2 2 2 2 3 3
    0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   |     next domain name                                          /
   /                                                               /
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+

5.3 Example

   Assume a zone has entries for

               big.foo.bar
               medium.foo.bar
               small.foo.bar
               tiny.foo.bar

               big.foo.bar,
               medium.foo.bar.
               small.foo.bar.
               tiny.foo.bar.

   Then a query to a security aware server for huge.foo.bar would
   produce an error reply with the additional information section
   containing

        big.foo.bar

        big.foo.bar. NXD medium.foo.bar medium.foo.bar.

   and the corresponding SIG RR.

5.4 Interaction of NXD RRs and Wildcard RRs

   As a wildcard RR causes all possible names in an interval to exist,
   there should not be an NXD record that would cover any part of this
   interval.  Thus if *.X.ZONE exists you would expect an NXD RR that
   ends at X.ZONE and one that starts with the last name covered by
   *.X.ZONE.  However, this "last name covered" is something very ugly
   and long like \255\255\255....X.zone.  So the NXD for the interval
   following is simply given the owner name *.X.zone.  This "*" type
   name is not expanded when the NXD is returned as additional
   information in connection with a query for a non-existent name.

INTERNET-DRAFT                          DNS Protocol Security Extensions name and
   type.

   If there could be any wildcard RRs in a zone and thus wildcard NXDs,
   care must be taken in interpreting the results of explicit NXD
   retrievals as the owner name may be a wildcard expansion.

   The existence of one or more wildcard RRs covering a name interval
   makes it possible for a malicious server to hide any more specificly
   named RRs in the internal.  The server can just falsely return the
   wildcard match NXD instead of the more specificly named RRs.  If
   there is a zone wide wildcard, there will be only one NXD RR whose
   owner name and RDATA are both the zone name.  In this case a server
   could conceal the existence of any more specific RRs in the zone.  It
   (It would be possible to make a more complex NXD feature, taking into
   account the types of RRs that did not exist in a name interval, and
   the like, which would eliminate this possibility.  But it would be
   more complex and would be so constraining as to make any future
   dynamic update feature that could create new names very difficult
   (see Section 3.2). 3.2).)

5.5 Blocking NXD Pseudo-Zone Transfers

   In a secure zone, a resolver can query for the initial NXD associated
   with the zone name.  Using the RDATA field from that RR, it can query
   for the next NXD RR.  By repeating this, it can walk through all the
   NXDs in the zone.  If there are no wildcards, it can use this
   technique to find all names in a zone. If it does type ANY queries,
   it can incrementally get all information in the zone and perhaps
   defeat attempts to administratively block zone transfers.

   If there are any wildcards, this NXD walking technique will not find
   any more specific RR names in the part of the name space the wildcard
   covers.  By doing explicit retrievals for wildcard names, a resolver
   could determine what intervals are covered by wildcards but still
   could not, with these techniques, find any names inside such
   intervals except by trying every name.

   If it is desired to block NXD walking, the recommended method is to
   add a zone wide wildcard of the KEY type which asserts with the
   nonexistence of any keys. no key bit on and
   with no type (zone, entity, or user) bit on.  This will cause there
   to be only one NXD RR in the zone for the zone name and leak no
   information about what real names exist in the zone.  This protection
   from pseudo-zone transfers is bought at the expense of eliminating
   the data origin authentication of the non-existence of names that NXD
   RRs can provide.  If an entire zone is covered by a wildcard, a
   malicious server can return an RR produced by matching that the resulting
   wildcard NXD and can thus hide all the real data and delegations with
   more specific names in the zone.

INTERNET-DRAFT                          DNS Protocol Security Extensions

6. How to Resolve Securely

   Retrieving or resolving authentic data from the DNS involves starting
   with one or more trusted public keys and, in general, progressing
   securely from them through the DNS zone structure to the zone of
   interest.  Such trusted public keys would normally be configured in a
   manner similar to that described in section 6.1.  However, as a
   practical matter, a security aware resolver would still gain some
   confidence in the results it returns even if it was not configured
   with any keys but trusted what it got from a local well known server
   as a starting point.

6.1 Boot File Format

   The recommended format for a boot file line to configure starting
   keys is as follows:

        zonekey f.q.d.n algorithm [exponent modulus]

   for a zone public key or

        hostkey f.q.d.n

        pubkey name object flags algorithm [exponent modulus]

   for a host public key.  f.q.d.n  "object" is the domain name of the zone or
   host. thing the key
   is associated with and "name" is the owner name if the line is
   translated into a KEY RR).  Flags indicates the type of key and is
   the same as the flag byte in the KEY RR.  In particular, if the "no
   key" bit is on in flags, then all fields after flags may be omitted.
   Algorithm is the algorithm in use where one is the MD5/RSA algorithm
   and 254 indicates a private algorithm.  The material after the
   algorithm is algorithm dependent and, for private algorithms, starts
   with the algorithm's identifying OID.  For the RSA algorithm, it is
   the public key exponent as a decimal number between 3 and 16777215,
   and the modulus in hex. base 64 (see Appendix).

   While it might seem logical for everyone to start with the key for
   the root zone, this has problems.  The logistics of updating every
   DNS resolver in the world when the root key changes would be
   excessive.  It may be some time before there even is a root key.
   Furthermore, many organizations will explicitly wish their "interior"
   DNS implementations to completely trust only their own zone.  These
   interior resolvers can then go through the organization's zone server
   to access data outsize the organization's domain.

   If desired, the IP address for the f.q.d.n's with configured keys can
   generally also be configured via an /etc/hosts or similar local file.

INTERNET-DRAFT                          DNS Protocol Security Extensions

6.2 Chaining Through Zones

   Starting with one trusted zone key, it is possible to retrieve signed
   keys for subzones which have a key.  Every secure zone (except root)
   should also include the RSA record KEY RR for its super-zone signed by the
   secure zone. zone and with the owner name of the secure zone and object
   name of the super-zone.  This makes it possible to climb the tree of
   zones if one starts below root.  A secure sub-zone is generally indicated by a
   KEY RR appearing with the NS RRs for the sub-zone. sub-zone and with the same
   owner and object names.  These make it possible to descend within the
   tree of zones.

   A resolver should keep track of the number of successive secure zones
   traversed from a starting point to any secure zone it can reach.  In
   general, the lower such a distance number is, the greater the
   confidence in the data.  Data configured via a boot file should be
   given a distance number of zero.  Should a query encounter different
   data with different distance values, that with a larger value should
   be ignored.

   A security conscious resolver should completely refuse to step from a
   secure zone into a non-secure zone unless the non-secure zone is
   certified to be non-secure or only experimentally secure by the
   presence of an authenticated KEY RR for the non-secure zone with a no
   key flag or the presence of a KEY RR with the experimental bit set.
   Otherwise the resolver is probably getting completely bogus or
   spoofed data.

   If legitimate non-secure zones are encountered in traversing the DNS
   tree, then no zone can be trusted as secure that can be reached only
   via information from such non-secure zones. Since the non-secure zone
   data could have been spoofed, the "secure" zone reach via it could be
   counterfeit.  The "distance" to data in such zones or zones reached
   via such zones could be set to 512 or more as this exceeds the
   largest possible distance through secure zones in the DNS.
   Nevertheless, continuing to apply secure checks within "secure" zones
   reached via non-secure zones will, as a practical matter, provide
   some increase in security.

   The syntax of KEY RRs, with an arbitrary object name, provides for
   cross-certification.  Although the syntax permits the owner name of a
   cross-certification KEY RR to be any name, by convention and to avoid
   an undue concentration of such KEY RRs under any particular name,
   their owner name should be the zone name prefixed with the
   destination object name (truncated an integral number of labels from
   the front if necessary due to DNS name restrictions).  Thus a key for
   isoc.org would appear in the mit.edu zone with the owner name
   isoc.org.mit.edu and object name isoc.org.

   The existence of cross certifications adds further policy questions.
   Assume we have a zone B.A and a zone Y.X.  Many possibilities exist
   for a secure resolver configured with the B.A key to get to Y.X.  If
   all the zones along the way are secure, it could climb to root and
   then descend the other side, a total of four hops (B.A -> A -> . -> X
   -> Y.X).  If the B.A administrator had installed a cross certified
   key for Y.X in the B.A zone, using that would be a shorter and
   presumably more secure way to find Y.X's key which would be immune to
   the non-security or even compromise of the servers for A or root or
   X.  But what if some less trusted subzone of B.A, say C.B.A flakey.B.A
   installed a cross certified key for Y.X?  If there is a conflict,
   should this be preferred to a hierarhically derived key obtained by
   climbing to root and descending?  Such questions are entirely a
   matter of local resolver

INTERNET-DRAFT                          DNS Protocol Security Extensions policy.

6.3 Secure Time

   Coordinated interpretation of the time fields in SIG RRs requires
   that reasonably consistent time be available to the hosts
   implementing the DNS security extensions.

   A variety of time synchronization protocols exist including the
   Network Time Protocol (NTP, RFC1305).  If such protocols are used,
   they should be used securely so that time can not be spoofed.
   Otherwise, for example, a host could get its clock turned back and
   might then believe old SIG and KEY RRs which were valid but no longer
   are.

INTERNET-DRAFT                          DNS Protocol Security Extensions

7. Operational Considerations

   This section discusses a variety of considerations in secure
   operation of DNS using these proposed protocol extensions.

7.1 Key Size Considerations

   There are a number of factors that effect public key size choice for
   use in the DNS security extension.  Unfortunately, these factors
   usually do not all point in the same direction.  Choice of a key size
   should generally be made by the zone administrator depending on their
   local conditions.

   For most schemes, larger keys are more secure but slower.
   Verification (the most common operation) for the MD5/RSA algorithm
   will vary roughly with the square of the modulus length, signing will
   vary with the cube of the modulus length, and key generation (the
   least common operation) will vary with the fourth power of the
   modulus length.  The current best algorithms for factoring a modulus
   and breaking RSA security vary roughly with the square of the modulus
   itself.  Thus going from a 640 bit modulus to a 1280 bit modulus only
   increases the verification time by a factor of 4 but vastly increases
   the work factor of breaking the key.  [RSA FAQ]

   However, larger keys increase size of the KEY RR and usually the SIG
   RR. RRs.  This
   increases the change chance of UDP packet flow overflow and the possible
   necessity for using higher overhead TCP.

   The recommended minimum RSA algorithm modulus size, 640 bits, is
   believed by the authors to be secure at this time and for some years
   but high level nodes zones in the DNS tree may wish to set a higher
   minimum, perhaps 1000 bits, for security reasons.  (Since the United
   States National Security Agency generally permits export of
   encryption systems using an RSA modulus of up to 512 bits, use of
   that small a modulus, i.e. n, must be considered weak.)

   For a key used only to secure data and not to secure other keys, 640
   bits should be entirely adequate.

7.2 Key Storage

   It is strongly recommended that zone private keys and the zone file
   master copy be kept and used in off-line non-network connected
   physically secure machines only.  Periodically an application can be
   run to re-sign the RRs in a zone by adding NXD and SIG RRs.  Then the
   augmented file can be transferred, perhaps by sneaker-net, to the
   networked zone primary server machine.

   The idea is to have a one way information flow to the network to

INTERNET-DRAFT                          DNS Protocol Security Extensions
   avoid the possibility of tampering from the network.  Keeping the
   zone master file on-line on the network and simply cycling it through
   an off-line signer does not do this.  The on-line version could still
   be tampered with if the host it resides on is compromised.  The
   master copy of the zone file should be off net and should not be
   updated based on an unsecured network mediated communication.

   Non-zone private keys, such as host or user keys, may have to be kept
   on line to be used for real-time purposes such a IP secure session set-up.
   set-up or secure mail.

7.3 Key Generation

   Careful key generation is a sometimes over looked but absolutely
   essential element in any cryptographically secure system.  The
   strongest algorithms used with the longest keys are still of no use
   if an adversary can guess enough to lower the size of the likely key
   space so that it can be exhaustively searched.  Suggestions will be
   found in draft-ietf-security-randomness-*.txt.

   It is strongly recommended that key generation also occur off-line,
   perhaps on the machine used to sign zones (see Section 7.2).

7.4 Key Lifetimes

   No key should be used forever.  The longer a key is in use, the
   greater the probability that it will have been compromised through
   carelessness, accident, espionage, or cryptanalysis.

   No zone key should have a lifetime significantly over five years.
   The recommended maximum lifetime for zone keys that are kept off-line
   and carefully guarded is 13 months with the intent that they be
   replaced every year.  The recommended maximum lifetime for end entity
   keys that are used for IP-security or the like and are kept on line
   is 36 days with the intent that they be replaced monthly or more
   often.  In some cases, an entity key lifetime of a little over a day
   may be reasonable.

7.5 Revocation

   [This is new and should probably be moved to someplace above...]
   Data in the DNS is authenticated via keyed digital signatures.  Thus
   to revoke data, we need to alter the time period of the key's
   effectiveness to not include the date signed of the data to be
   remoked.  Note that the case of a compromised key, where we wish to

INTERNET-DRAFT                          DNS Protocol Security Extensions

   make its period of effectiveness null, we generally need only think
   of the KEY RR as data and make used for IP-security or the period of effectiveness of like and are kept on line
   is 36 days with the
   superzone's intent that they be replaced monthly or more
   often.  In some cases, an entity key not include the time of the previous superzone
   signing lifetime of the key.

   Normally, a KEY retrieved from the DNS appears to little over a day
   may be effective from reasonable.

   Key lifetimes significantly over a year increase the risk that, when
   the beginning of time until comes up change the expiration of key, no one at the SIG that
   authenticated it.  (If this were not so, a secure zone would have site will remember
   how to do it.

7.5 Signature Lifetime

   Signature expiration times must be resigned every time its superzone is resigned.)  When data set far enought in the future that
   it is
   being revoked, a zone quite certain that new signatures can be resigned with a later date signed but a
   mechanism is need to make generated before the earlier SIG of
   old ones expire.  However, setting expiration too far into the now revoked future
   could, if bad data not
   longer valid.

   A dawn for the effectiveness of or signatures were ever generated, mean a node's KEY RR is provided, when
   desired, by having the key appear self-signed.  This declares the
   time signed of the self signature as the long
   time of effectiveness of the
   key(s).  Note this is entirely under the control of a zone and
   asynchronous with its superzone's signings.

   This technique covers non-zone entities as well.  For an owner to
   have flush such badness.

   It is recommended that signature lifetime be a dawn to the effectiveness small multiple of its delegated key (which is
   signed by the zone key), it need only self-sign its key and the date
   signed is the dawn.
   TTL but not less than a reasonable re-signing interval.

7.6 Root

   The root zone includes its own key self-signed.

   It should also be noted that in DNS the root is a zone unto itself.  Thus
   the root zone key should only be see signing itself or signing RRs
   with names one level below root, such as .aq, .edu, or .arpa.
   Implementations MAY reject as bogus any purported root signature of
   records with a name more than one level below root.

INTERNET-DRAFT                          DNS Protocol Security Extensions

8. Conformance

   Several levels of server and resolver conformance are defined.

8.1 Server Conformance

   Three levels of server conformance are defined as follows:

        Zilch

        Basic server compliance is the ability to store and retrieve
   (including zone transfer) SIG, KEY, and NXD RRs.  It is believed that
   most current servers meet this level of compliance.

        Minimal  Secondaries for a
   secure zone must be at least basicly compliant.

        Medium server compliance adds the following to zilch basic compliance:
   (1) ability to read SIG, KEY, and NXD RRs in zone files and (2)
   ability, given a zone file and private key, to add appropriate SIG
   and NXD RRs, possibly via a separate application.  Primary servers
   for secure zones must be at least minimally compliant.

        Full server compliance is ability to automatically include SIG,
   KEY, and NXD RRs in responses as appropriate, as well as meeting
   minimal
   medium compliance.

8.2 Resolver Conformance

   Two levels of resolver compliance are defined:

        A Zilch basic compliance resolver can handle SIG, KEY, and NXD RRs
   when they are explicitly requested.  It is believed that current
   resolvers are Zilch compliant.

        A fully compliant resolver understands KEY, SIG, and NXD RRs,
   maintains appropriate information in its local caches and database to
   indicate which RRs have been authenticated and to what extent they
   have been authenticated, and performs additional queries as necessary
   to obtain KEY, SIG, or NXD RRs from non-security aware servers.

INTERNET-DRAFT                          DNS Protocol Security Extensions

9. Security Considerations

   This document concerns technical details of extensions to the Domain
   Name System (DNS) protocol to provide data integrity and data origin
   authentication, public key distribution, and optional transaction
   security.

   If should be noted that, at most, these extensions guarantee the
   validity of resource records, including KEY resource records,
   retrieved from the DNS.  They do not magically solve other security
   problems.  For example, using secure DNS you can have high confidence
   in the IP address you retrieve for a host; however, this does not
   stop someone for substituting an unauthorized host at that address or
   capturing packets sent to that address and responding with packets
   apparently from that address.  Any reasonably complete security
   system will require the protection of many other facets of the
   Internet.

References

   [PKCS1] - PKCS #1: RSA Encryption Standard, RSA Data Security, Inc.,
   3 June 1991, Version 1.4.

   [RFC1032] - Domain Administrators Guide, M. Stahl, November 1987

   [RFC1033] - Domain Administrators Operations Guide, M. Lottor,
   November 1987

   [RFC1034] - Domain Names - Concepts and Facilities, P. Mockapetris,
   November 1987

   [RFC1035] - Domain Names - Implementation and Specifications

   [RFC1321] - The MD5 Message-Digest Algorithm, R. Rivest, April 16
   1992.

   [RSA FAQ] - RSADSI Frequently Asked Questions periodic posting.

INTERNET-DRAFT                          DNS Protocol Security Extensions

Authors Addresses

   Donald E. Eastlake Eastlake, 3rd
   Digital Equipment Corporation
   550 King Street, LKG2-1/BB3
   Littleton, MA 01460

   Telephone:   +1 508 486 6577(w)  +1 508 287 4877(h)
   EMail:       dee@lkg.dec.com

   Charles W. Kaufman
   Iris Associates
   1 Technology Park Drive
   Westford, MA 01886

   Telephone:   +1 508-392-5276
   EMail:       charlie_kaufman@iris.com

Expiration and File Name

   This draft expires 19 May 1 July 1995.

   Its file name is draft-ietf-dnssec-secext-02.txt. draft-ietf-dnssec-secext-03.txt.

Appendix: Base 64 Encoding

   The following encoding technique is taken from RFC 1521 by Borenstein
   and Freed.  It is reproduced here in a slightly edited form for
   convenience.

   A 65-character subset of US-ASCII is used, enabling 6 bits to be
   represented per printable character. (The extra 65th character, "=",
   is used to signify a special processing function.)

   The encoding process represents 24-bit groups of input bits as output
   strings of 4 encoded characters. Proceeding from left to right, a
   24-bit input group is formed by concatenating 3 8-bit input groups.
   These 24 bits are then treated as 4 concatenated 6-bit groups, each
   of which is translated into a single digit in the base64 alphabet.

   Each 6-bit group is used as an index into an array of 64 printable
   characters. The character referenced by the index is placed in the
   output string.

                         Table 1: The Base64 Alphabet

      Value Encoding  Value Encoding  Value Encoding  Value Encoding
          0 A            17 R            34 i            51 z
          1 B            18 S            35 j            52 0
          2 C            19 T            36 k            53 1
          3 D            20 U            37 l            54 2
          4 E            21 V            38 m            55 3
          5 F            22 W            39 n            56 4
          6 G            23 X            40 o            57 5
          7 H            24 Y            41 p            58 6
          8 I            25 Z            42 q            59 7
          9 J            26 a            43 r            60 8
         10 K            27 b            44 s            61 9
         11 L            28 c            45 t            62 +
         12 M            29 d            46 u            63 /
         13 N            30 e            47 v
         14 O            31 f            48 w         (pad) =
         15 P            32 g            49 x
         16 Q            33 h            50 y

   Special processing is performed if fewer than 24 bits are available
   at the end of the data being encoded.  A full encoding quantum is
   always completed at the end of a quantity.  When fewer than 24 input
   bits are available in an input group, zero bits are added (on the
   right) to form an integral number of 6-bit groups.  Padding at the
   end of the data is performed using the '=' character.  Since all
   base64 input is an integral number of octets, only the following
   cases can arise: (1) the final quantum of encoding input is an
   integral multiple of 24 bits; here, the final unit of encoded output
   will be an integral multiple of 4 characters with no "=" padding, (2)
   the final quantum of encoding input is exactly 8 bits; here, the
   final unit of encoded output will be two characters followed by two
   "=" padding characters, or (3) the final quantum of encoding input is
   exactly 16 bits; here, the final unit of encoded output will be three
   characters followed by one "=" padding character.