draft-ietf-dnssec-secext-09.txt   rfc2065.txt 
DNS Security Working Group Donald E. Eastlake, 3rd
INTERNET-DRAFT CyberCash
UPDATES RFC 1034, 1035 Charles W. Kaufman
Iris
Expires: 29 July 1996 30 January 1996
Domain Name System Security Extensions
------ ---- ------ -------- ----------
Status of This Document
This draft, file name draft-ietf-dnssec-secext-09.txt, is intended to Network Working Group D. Eastlake, 3rd
be become a Proposed Standard RFC. Distribution of this document is Request for Comments: 2065 CyberCash
unlimited. Comments should be sent to the DNS Security Working Group Updates: 1034, 1035 C. Kaufman
mailing list <dns-security@tis.com> or to the authors. Category: Standards Track Iris
January 1997
This document is an Internet-Draft. Internet-Drafts are working Domain Name System Security Extensions
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 Status of this Memo
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 This document specifies an Internet standards track protocol for the
1id-abstracts.txt listing contained in the Internet-Drafts Shadow Internet community, and requests discussion and suggestions for
Directories on ds.internic.net (East USA), ftp.isi.edu (West USA), improvements. Please refer to the current edition of the "Internet
nic.nordu.net (North Europe), ftp.nis.garr.it (South Europe), Official Protocol Standards" (STD 1) for the standardization state
munnari.oz.au (Pacific Rim), or ftp.is.co.za (Africa). and status of this protocol. Distribution of this memo is unlimited.
Abstract Abstract
The Domain Name System (DNS) has become a critical operational part The Domain Name System (DNS) has become a critical operational part
of the Internet infrastructure yet it has no strong security of the Internet infrastructure yet it has no strong security
mechanisms to assure data integrity or authentication. Extensions to mechanisms to assure data integrity or authentication. Extensions to
the DNS are described that provide these services to security aware the DNS are described that provide these services to security aware
resolvers or applications through the use of cryptographic digital resolvers or applications through the use of cryptographic digital
signatures. These digital signatures are included in secured zones signatures. These digital signatures are included in secured zones
as resource records. Security can still be provided even through as resource records. Security can still be provided even through
skipping to change at page 2, line 31 skipping to change at page 2, line 8
associated with DNS names can be retrieved to support other associated with DNS names can be retrieved to support other
protocols. Provision is made for a variety of key types and protocols. Provision is made for a variety of key types and
algorithms. algorithms.
In addition, the security extensions provide for the optional In addition, the security extensions provide for the optional
authentication of DNS protocol transactions. authentication of DNS protocol transactions.
Acknowledgments Acknowledgments
The significant contributions of the following persons (in alphabetic The significant contributions of the following persons (in alphabetic
order) to this draft are gratefully acknowledged: order) to this document are gratefully acknowledged:
Madelyn Badger Harald T. Alvestrand
Matt Crawford Madelyn Badger
James M. Galvin Scott Bradner
Olafur Gudmundsson Matt Crawford
Edie Gunter James M. Galvin
Sandy Murphy Olafur Gudmundsson
Masataka Ohta Edie Gunter
Michael A. Patton Sandy Murphy
Jeffrey I. Schiller Masataka Ohta
Michael A. Patton
Jeffrey I. Schiller
Table of Contents Table of Contents
Status of This Document....................................1 1. Overview of Contents....................................3
2. Overview of the DNS Extensions.........................4
Abstract...................................................2 2.1 Services Not Provided..................................4
Acknowledgments............................................2 2.2 Key Distribution.......................................5
2.3 Data Origin Authentication and Integrity...............5
Table of Contents..........................................3 2.3.1 The SIG Resource Record..............................6
2.3.2 Authenticating Name and Type Non-existence...........7
1. Overview of Contents....................................5 2.3.3 Special Considerations With Time-to-Live.............7
2.3.4 Special Considerations at Delegation Points..........7
2. Overview of the Extensions.............................6 2.3.5 Special Considerations with CNAME RRs................8
2.1 Services Not Provided..................................6 2.3.6 Signers Other Than The Zone..........................8
2.2 Key Distribution.......................................6 2.4 DNS Transaction and Request Authentication.............8
2.3 Data Origin Authentication and Integrity...............7 3. The KEY Resource Record.................................9
2.3.1 The SIG Resource Record..............................8 3.1 KEY RDATA format......................................10
2.3.2 Authenticating Name and Type Non-existence...........8 3.2 Object Types, DNS Names, and Keys.....................10
2.3.3 Special Considerations With Time-to-Live.............8 3.3 The KEY RR Flag Field.................................11
2.3.4 Special Considerations at Delegation Points..........9 3.4 The Protocol Octet....................................13
2.3.5 Special Considerations with CNAME RRs................9 3.5 The KEY Algorithm Number and the MD5/RSA Algorithm....13
2.3.6 Signers Other Than The Zone.........................10 3.6 Interaction of Flags, Algorithm, and Protocol Bytes...14
2.4 DNS Transaction and Request Authentication............10 3.7 KEY RRs in the Construction of Responses..............15
3.8 File Representation of KEY RRs........................16
3. The KEY Resource Record................................12 4. The SIG Resource Record................................16
3.1 KEY RDATA format......................................12 4.1 SIG RDATA Format......................................17
3.2 Object Types, DNS Names, and Keys.....................12 4.1.1 Signature Data......................................19
3.3 The KEY RR Flag Field.................................13 4.1.2 MD5/RSA Algorithm Signature Calculation.............20
3.4 The Protocol Octet....................................15 4.1.3 Zone Transfer (AXFR) SIG............................21
3.5 The KEY Algorithm Number and the MD5/RSA Algorithm....16 4.1.4 Transaction and Request SIGs........................22
3.6 Interaction of Flags, Algorithm, and Protocol Bytes...17 4.2 SIG RRs in the Construction of Responses..............23
3.7 KEY RRs in the Construction of Responses..............17 4.3 Processing Responses and SIG RRs......................24
3.8 File Representation of KEY RRs........................18 4.4 Signature Expiration, TTLs, and Validity..............24
4.5 File Representation of SIG RRs........................25
4. The SIG Resource Record................................19 5. Non-existent Names and Types...........................26
4.1 SIG RDATA Format......................................19 5.1 The NXT Resource Record...............................26
4.1.1 Signature Data......................................21 5.2 NXT RDATA Format......................................27
4.1.2 MD5/RSA Algorithm Signature Calculation.............22 5.3 Example...............................................28
4.1.3 Zone Transfer (AXFR) SIG............................23 5.4 Interaction of NXT RRs and Wildcard RRs...............28
4.1.4 Transaction and Request SIGs........................24 5.5 Blocking NXT Pseudo-Zone Transfers....................29
4.2 SIG RRs in the Construction of Responses..............24 5.6 Special Considerations at Delegation Points...........29
4.3 Processing Responses and SIG RRs......................25 6. The AD and CD Bits and How to Resolve Securely.........30
4.4 Signature Expiration, TTLs, and Validity..............26 6.1 The AD and CD Header Bits.............................30
4.5 File Representation of SIG RRs........................27 6.2 Boot File Format......................................32
6.3 Chaining Through Zones................................32
5. Non-existent Names and Types...........................28 6.4 Secure Time...........................................33
5.1 The NXT Resource Record...............................28 7. Operational Considerations.............................33
5.2 NXT RDATA Format......................................29 7.1 Key Size Considerations...............................34
5.3 Example...............................................30 7.2 Key Storage...........................................34
5.4 Interaction of NXT RRs and Wildcard RRs...............30 7.3 Key Generation........................................35
5.5 Blocking NXT Pseudo-Zone Transfers....................31 7.4 Key Lifetimes.........................................35
5.6 Special Considerations at Delegation Points...........32 7.5 Signature Lifetime....................................36
6. The AD and CD Bits and How to Resolve Securely.........33 7.6 Root..................................................36
6.1 The AD and CD Header Bits.............................33 8. Conformance............................................36
6.2 Boot File Format......................................34 8.1 Server Conformance....................................36
6.3 Chaining Through Zones................................35 8.2 Resolver Conformance..................................37
6.4 Secure Time...........................................36 9. Security Considerations................................37
References................................................38
7. Operational Considerations.............................37 Authors' Addresses........................................39
7.1 Key Size Considerations...............................37 Appendix: Base 64 Encoding................................40
7.2 Key Storage...........................................37
7.3 Key Generation........................................38
7.4 Key Lifetimes.........................................38
7.5 Signature Lifetime....................................39
7.6 Root..................................................39
8. Conformance............................................40
8.1 Server Conformance....................................40
8.2 Resolver Conformance..................................40
9. Security Considerations................................41
References................................................42
Authors Addresses.........................................43
Expiration and File Name..................................43
Appendix: Base 64 Encoding................................44
1. Overview of Contents 1. Overview of Contents
This draft describes extensions of the Domain Name System (DNS) This document describes extensions of the Domain Name System (DNS)
protocol to support DNS security and public key distribution. It protocol to support DNS security and public key distribution. It
assumes that the reader is familiar with the Domain Name System, assumes that the reader is familiar with the Domain Name System,
particularly as described in RFCs 1033, 1034, and 1035. particularly as described in RFCs 1033, 1034, and 1035.
Section 2 provides a detailed overview of the extensions and the key Section 2 provides an overview of the extensions and the key
distribution, data origin authentication, and transaction and request distribution, data origin authentication, and transaction and request
security they provide. security they provide.
Section 3 discusses the KEY resource record, its structure, use in Section 3 discusses the KEY resource record, its structure, use in
DNS responses, and file representation. These resource records DNS responses, and file representation. These resource records
represent the public keys of entities named in the DNS and are used represent the public keys of entities named in the DNS and are used
for key distribution. for key distribution.
Section 4 discusses the SIG digital signature resource record, its Section 4 discusses the SIG digital signature resource record, its
structure, use in DNS responses, and file representation. These structure, use in DNS responses, and file representation. These
skipping to change at page 5, line 45 skipping to change at page 4, line 29
resolvers and servers. resolvers and servers.
Section 7 reviews a variety of operational considerations including Section 7 reviews a variety of operational considerations including
key generation, lifetime, and storage. key generation, lifetime, and storage.
Section 8 defines levels of conformance for resolvers and servers. Section 8 defines levels of conformance for resolvers and servers.
Section 9 provides a few paragraphs on overall security Section 9 provides a few paragraphs on overall security
considerations. considerations.
An Appendix is provided that gives some details of base 64 encoding An Appendix is provided that gives details of base 64 encoding which
which is used in the file representation of some RR's defined in this is used in the file representation of some RR's defined in this
draft. document.
2. Overview of the Extensions 2. Overview of the DNS Extensions
The Domain Name System (DNS) protocol security extensions provide The Domain Name System (DNS) protocol security extensions provide
three distinct services: key distribution as described in Section 2.2 three distinct services: key distribution as described in Section 2.2
below, data origin authentication as described in Section 2.3 below, below, data origin authentication as described in Section 2.3 below,
and transaction and request authentication, described in Section 2.4 and transaction and request authentication, described in Section 2.4
below. below.
Special considerations related to "time to live", CNAMEs, and Special considerations related to "time to live", CNAMEs, and
delegation points are also discussed in Section 2.3. delegation points are also discussed in Section 2.3.
skipping to change at page 6, line 32 skipping to change at page 5, line 12
sort of access control lists or other means to differentiate sort of access control lists or other means to differentiate
inquirers. inquirers.
In addition, no effort has been made to provide for any In addition, no effort has been made to provide for any
confidentiality for queries or responses. (This service may be confidentiality for queries or responses. (This service may be
available via IPSEC [RFC 1825].) available via IPSEC [RFC 1825].)
2.2 Key Distribution 2.2 Key Distribution
Resource records (RRs) are defined to associate keys with DNS names. Resource records (RRs) are defined to associate keys with DNS names.
This permits the DNS to be used as a general public key distribution This permits the DNS to be used as a public key distribution
mechanism in support of the data origin authentication and mechanism in support of the DNS data origin authentication and other
transaction authentication DNS services as well as other security security services.
services.
The syntax of a KEY resource record (RR) is described in Section 3. The syntax of a KEY resource record (RR) is described in Section 3.
It includes an algorithm identifier, the actual public key It includes an algorithm identifier, the actual public key
parameters, and a variety of flags including those indicating the parameters, and a variety of flags including those indicating the
type of entity the key is associated with and/or asserting that there type of entity the key is associated with and/or asserting that there
is no key associated with that entity. is no key associated with that entity.
Under conditions described in Section 3, security aware DNS servers Under conditions described in Section 3.7, security aware DNS servers
will automatically attempt to return KEY resources as additional will automatically attempt to return KEY resources as additional
information, along with those resource records actually requested, to information, along with those resource records actually requested, to
minimize the number of queries needed. minimize the number of queries needed.
2.3 Data Origin Authentication and Integrity 2.3 Data Origin Authentication and Integrity
Authentication is provided by associating with resource records in Authentication is provided by associating with resource records in
the DNS cryptographically generated digital signatures. Commonly, the DNS cryptographically generated digital signatures. Commonly,
there will be a single private key that signs for an entire zone. If 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, a security aware resolver reliably learns the public key of the zone,
skipping to change at page 7, line 29 skipping to change at page 5, line 51
the degree of assurance that a resolver has that it can determine the degree of assurance that a resolver has that it can determine
whether data is genuine. whether data is genuine.
A resolver can learn the public key of a zone either by reading it 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 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. public key by reading it from DNS, the key itself must be signed.
Thus, to provide a reasonable degree of security, the resolver must Thus, to provide a reasonable degree of security, the resolver must
be configured with at least the public key of one zone that it can be configured with at least the public key of one zone that it can
use to authenticate signatures. From there, it can securely read the use to authenticate signatures. From there, it can securely read the
public keys of other zones, if the intervening zones in the DNS tree 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 are secure and their signed keys accessible. (It is in principle
manually configured with the public keys of multiple zones, since more secure to have the resolver manually configured with the public
then the compromise of a single zone would not permit the faking of keys of multiple zones, since then the compromise of a single zone
information from other zones. It is also more administratively would not permit the faking of information from other zones. It is
cumbersome, however, particularly when public keys change.) also more administratively cumbersome, however, particularly when
public keys change.)
Adding data origin authentication and integrity requires no change to Adding data origin authentication and integrity requires no change to
the "on-the-wire" DNS protocol beyond the addition of the signature the "on-the-wire" DNS protocol beyond the addition of the signature
resource type and, as a practical matter, the key resource type resource type and, as a practical matter, the key resource type
needed for key distribution. This service can be supported by needed for key distribution. This service can be supported by
existing resolver and server implementations so long as they can existing resolver and server implementations so long as they can
support the additional resource types (see Section 8). The one support the additional resource types (see Section 8). The one
exception is that CNAME referrals from a secure zone can not be exception is that CNAME referrals from a secure zone can not be
authenticated if they are from non-security aware servers (see authenticated if they are from non-security aware servers (see
Section 2.3.5). Section 2.3.5).
skipping to change at page 8, line 16 skipping to change at page 6, line 36
The syntax of a SIG resource record (signature) is described in 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 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 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 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 to live (which may be longer than its current time to live but cannot
be shorter), the cryptographic algorithm in use, and the actual be shorter), the cryptographic algorithm in use, and the actual
signature. signature.
Every name in a secured zone will have associated with it at least Every name in a secured zone will have associated with it at least
one SIG resource record for each resource type under that name. A one SIG resource record for each resource type under that name except
security aware server supporting the performance enhanced version of for glue RRs and delgation point NS RRs. A security aware server
the DNS protocol security extensions will attempt to return, with all supporting the performance enhanced version of the DNS protocol
records retrieved, the corresponding SIGs. If a server does not security extensions will attempt to return, with RRs retrieved, the
support the protocol, the resolver must retrieve all the SIG records corresponding SIGs. If a server does not support the protocol, the
for a name and select the one or ones that sign the resource resolver must retrieve all the SIG records for a name and select the
record(s) that resolver is interested in. one or ones that sign the resource record(s) that resolver is
interested in.
2.3.2 Authenticating Name and Type Non-existence 2.3.2 Authenticating Name and Type Non-existence
The above security mechanism provides only a way to sign existing RRs The above security mechanism provides only a way to sign existing RRs
in a zone. "Data origin" authentication is not obviously provided in a zone. "Data origin" authentication is not obviously provided
for the non-existence of a domain name in a zone or the non-existence for the non-existence of a domain name in a zone or the non-existence
of a type for an existing name. This gap is filled by the NXT RR of a type for an existing name. This gap is filled by the NXT RR
which authenticatably asserts a range of non-existent names in a zone which authenticatably asserts a range of non-existent names in a zone
and the non-existence of types for the name just before that range. and the non-existence of types for the name just before that range.
skipping to change at page 9, line 14 skipping to change at page 7, line 42
determine securely whether a signature has expired. It is not determine securely whether a signature has expired. It is not
possible to rely solely on the signature expiration as a substitute possible to rely solely on the signature expiration as a substitute
for the TTL, however, since the TTL is primarily a database for the TTL, however, since the TTL is primarily a database
consistency mechanism and, in any case, non-security aware servers consistency mechanism and, in any case, non-security aware servers
that depend on TTL must still be supported. that depend on TTL must still be supported.
2.3.4 Special Considerations at Delegation Points 2.3.4 Special Considerations at Delegation Points
DNS security would like to view each zone as a unit of data DNS security would like to view each zone as a unit of data
completely under the control of the zone owner and signed by the completely under the control of the zone owner and signed by the
zone's key. But the operational DNS views the leaf nodes in a zone zone's key. But the operational DNS views the leaf nodes in a zone,
which are also the apex nodes of a subzone (i.e., delegation points) which are also the apex nodes of a subzone (i.e., delegation points),
as "really" belonging to the subzone. These nodes occur in two as "really" belonging to the subzone. These nodes occur in two
master files and may have RRs signed by both the upper and lower master files and may have RRs signed by both the upper and lower
zone's keys. A retrieval could get a mixture of these RRs and SIGs, zone's keys. A retrieval could get a mixture of these RRs and SIGs,
especially since one server could be serving both the zone above and especially since one server could be serving both the zone above and
below a delegation point. below a delegation point.
In general, there must be a zone KEY RR for the subzone in the In general, there must be a zone KEY RR for the subzone in the
superzone and the copy signed in the superzone is controlling. For superzone and the copy signed in the superzone is controlling. For
all other RRs that should appearing in both the superzone and all but one other RR type that should appearing in both the superzone
subzone, the data from the subzone is more authoritative. To avoid and subzone, the data from the subzone is more authoritative. To
conflicts, only the KEY RR in the superzone should be signed and the avoid conflicts, only the KEY RR in the superzone should be signed
NS and any A (glue) RRs should only be signed in the subzone. The SOA and the NS and any A (glue) RRs should only be signed in the subzone.
and any other RRs that have the zone name as owner should appear only The SOA and any other RRs that have the zone name as owner should
in the subzone and thus are signed there. The NXT RR type is an appear only in the subzone and thus are signed there. The NXT RR type
exceptional case that will always appear differently and is an exceptional case that will always appear differently and
authoritatively in both the superzone and subzone, if both are authoritatively in both the superzone and subzone, if both are
secure, as described in Section 5. secure, as described in Section 5.
2.3.5 Special Considerations with CNAME RRs 2.3.5 Special Considerations with CNAME RRs
There is a significant problem when security related RRs with the There is a significant problem when security related RRs with the
same owner name as a CNAME RR are retrieved from a non-security-aware same owner name as a CNAME RR are retrieved from a non-security-aware
server. In particular, an initial retrieval for the CNAME or any server. In particular, an initial retrieval for the CNAME or any
other type will not retrieve any associated signature, key, or NXT other type will not retrieve any associated signature, key, or NXT
RR. For types other than CNAME, it will retrieve that type at the RR. For types other than CNAME, it will retrieve that type at the
target name of the CNAME (or chain of CNAMEs) and will return the target name of the CNAME (or chain of CNAMEs) and will return the
CNAME as additional information. In particular, a specific retrieval CNAME as additional information. In particular, a specific retrieval
for type SIG will not get the SIG, if any, at the original CNAME for type SIG will not get the SIG, if any, at the original CNAME
domain name but rather a SIG at the target name. domain name but rather a SIG at the target name.
In general, security aware servers must be used to securely CNAME in In general, security aware servers MUST be used to securely CNAME in
DNS. Security aware servers must (1) allow KEY, SIG, and NXT RRs DNS. Security aware servers must (1) allow KEY, SIG, and NXT RRs
along with CNAME RRs, (2) suppress CNAME processing on retrieval of along with CNAME RRs, (2) suppress CNAME processing on retrieval of
these types as well as on retrieval of the type CNAME, and (3) these types as well as on retrieval of the type CNAME, and (3)
automatically return SIG RRs authenticating the CNAME or CNAMEs automatically return SIG RRs authenticating the CNAME or CNAMEs
encountered in resolving a query. This is a change from the previous encountered in resolving a query. This is a change from the previous
DNS standard which prohibited any other RR type at a node where a DNS standard which prohibited any other RR type at a node where a
CNAME RR was present. CNAME RR was present.
2.3.6 Signers Other Than The Zone 2.3.6 Signers Other Than The Zone
skipping to change at page 10, line 43 skipping to change at page 9, line 23
query. query.
Requests can also be authenticated by including a special SIG RR at Requests can also be authenticated by including a special SIG RR at
the end of the request. Authenticating requests serves no function the end of the request. Authenticating requests serves no function
in the current DNS and requests with a non-empty additional in the current DNS and requests with a non-empty additional
information section are ignored by almost all current DNS servers. information section are ignored by almost all current DNS servers.
However, this syntax for signing requests is defined in connection However, this syntax for signing requests is defined in connection
with authenticating future secure dynamic update requests or the with authenticating future secure dynamic update requests or the
like. like.
The private key used in transaction security belongs to the host The private keys used in transaction and request security belongs to
composing the reply message, not to the zone involved. The the host composing the request or reply message, not to the zone
corresponding public key is normally stored in and retrieved from the involved. The corresponding public key is normally stored in and
DNS. retrieved from the DNS.
Because requests and replies are highly variable, message Because requests and replies are highly variable, message
authentication SIGs can not be pre-calculated. Thus it will be authentication SIGs can not be pre-calculated. Thus it will be
necessary to keep the private key on-line, for example in software or necessary to keep the private key on-line, for example in software or
in a directly connected piece of hardware. in a directly connected piece of hardware.
3. The KEY Resource Record 3. The KEY Resource Record
The KEY resource record (RR) is used to document a key that is The KEY resource record (RR) is used to document a key that is
associated with a Domain Name System (DNS) name. It will be a public associated with a Domain Name System (DNS) name. It will be a public
skipping to change at page 13, line 5 skipping to change at page 10, line 40
The public key in a KEY RR belongs to the object named in the owner The public key in a KEY RR belongs to the object named in the owner
name. name.
This DNS name may refer to up to three different categories of This DNS name may refer to up to three different categories of
things. For example, dee.cybercash.com could be (1) a zone, (2) a things. For example, dee.cybercash.com could be (1) a zone, (2) a
host or other end entity , and (3) the mapping into a DNS name of the host or other end entity , and (3) the mapping into a DNS name of the
user or account dee@cybercash.com. Thus, there are flags, as user or account dee@cybercash.com. Thus, there are flags, as
described below, in the KEY RR to indicate with which of these roles described below, in the KEY RR to indicate with which of these roles
the owner name and public key are associated. Note that an the owner name and public key are associated. Note that an
appropriate zone KEY RR must occur at the apex node of a secure zone appropriate zone KEY RR MUST occur at the apex node of a secure zone
and at every leaf node which is a delegation point (and thus the same and at every leaf node which is a delegation point (and thus the same
owner name as the apex of a subzone) within a secure zone. owner name as the apex of a subzone) within a secure zone.
Although the same name can be used for up to all three of these Although the same name can be used for up to all three of these
categories, such overloading of a name is discouraged. It is also categories, such overloading of a name is discouraged. It is also
possible to use the same key for different things with the same name possible to use the same key for different things with the same name
or even different names, but this is strongly discouraged. In or even different names, but this is strongly discouraged. In
particular, the use of a zone key as a non-zone key will usually particular, the use of a zone key as a non-zone key will usually
require that the corresponding private key be kept on line and require that the corresponding private key be kept on line and
thereby become more vulnerable. thereby become 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 (may have an RFC number if
issued simultaneously with this draft)], all telephone numbers in the
world have been mapped into the tpc.int domain [RFC 1530], and all
IPv4 addresses (i.e., all IPv4 globally addressable interfaces) have
been mapped into the in-addr.arpa domain. This is much preferable to
having the same fully qualified name simultaneously be a possible
autonomous system number, telephone number, IPv4 interface, and/or
host as well as a zone and a user.
In addition to the name type bits, there are additional flag bits In addition to the name type bits, there are additional flag bits
including the "type" field, "experimental" bit, "signatory" field, including the "type" field, "experimental" bit, "signatory" field,
etc., as described below. etc., as described below.
3.3 The KEY RR Flag Field 3.3 The KEY RR Flag Field
In the "flags" field: In the "flags" field:
Bit 0 and 1 are the "type" field. Bit 0 a one indicates that Bit 0 and 1 are the key "type" field. Bit 0 a one indicates
use of the key is prohibited for authentication. Bit 1 a one that use of the key is prohibited for authentication. Bit 1 a one
indicates that use of the key is prohibited for confidentiality. If indicates that use of the key is prohibited for confidentiality. If
this field is zero, then use of the key for authentication and/or this field is zero, then use of the key for authentication and/or
confidentiality is permitted. Note that DNS security makes use of confidentiality is permitted. Note that DNS security makes use of
keys for authentication only. Confidentiality use flagging is keys for authentication only. Confidentiality use flagging is
provided for use of keys in other protocols. If both bits of this provided for use of keys in other protocols. Implementations not
field are one, "no key" value, there is no key information and the RR intended to support key distribution for confidentiality MAY require
stops after the algorithm octet. By the use of this "no key" value, that the confidentiality use prohibited bit be on for keys they
a signed KEY RR can authenticatably assert that, for example, a zone serve. If both bits of this field are one, the "no key" value, there
is not secured. is no key information and the RR stops after the algorithm octet. By
the use of this "no key" value, a signed KEY RR can authenticatably
assert that, for example, a zone is not secured.
Bit 2 is the "experimental" bit. It is ignored if the type Bit 2 is the "experimental" bit. It is ignored if the type
field indicates "no key" and the following description assumes that field indicates "no key" and the following description assumes that
type field to be non-zero. Keys may be associated with zones, type field to be non-zero. Keys may be associated with zones,
entities, or users for experimental, trial, or optional use, in which entities, or 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 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". use or availability of security based on the key is "mandatory".
Thus, if this bit is off for a zone key, the zone should be assumed Thus, if this bit is off for a zone key, the zone should be assumed
secured by SIG RRs and any responses indicating the zone is not secured by SIG RRs and any responses indicating the zone is not
secured should be considered bogus. If this bit is a one for a host secured should be considered bogus. If this bit is a one for a host
skipping to change at page 14, line 35 skipping to change at page 12, line 11
host.subdomain.domain could have a public key associated through a host.subdomain.domain could have a public key associated through a
KEY RR with name j\.random_user.host.subdomain.domain and the user KEY RR with name j\.random_user.host.subdomain.domain and the user
bit a one. It could be used in an security protocol where bit a one. It could be used in an security protocol where
authentication of a user was desired. This key might be useful in IP authentication of a user was desired. This key might be useful in IP
or other security for a user level service such a telnet, ftp, or other security for a user level service such a telnet, ftp,
rlogin, etc. rlogin, etc.
Bit 6 on indicates that this is a key associated with the non- 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 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 a host but could, in some parts of the DNS tree, be some other type
of entity such as a telephone number [RFC 1530] or autonomous system of entity such as a telephone number [RFC 1530]. This is the public
number [draft-ietf-dnssec-as-map-*.txt (may have an RFC number if key used in connection with the optional DNS transaction
issued simultaneously with this draft)]. This is the public key used authentication service if the owner name is a DNS server host. It
in connection with the optional DNS transaction authentication could also be used in an IP-security protocol where authentication of
service if the owner name is a DNS server host. It could also be at the host, rather than user, level was desired, such as routing,
used in an IP-security protocol where authentication of at the host, NTP, etc.
rather than user, level was desired, such as routing, NTP, etc.
Bit 7 is the "zone" bit and indicates that this is a zone key Bit 7 is the "zone" bit and indicates that this is a zone key
for the zone whose name is the KEY RR owner name. This is the for the zone whose name is the KEY RR owner name. This is the public
primary type of DNS data origin authentication public key. key used for DNS data origin authentication.
Bit 8 is reserved to be the IPSEC [RFC 1825] bit and indicate Bit 8 is reserved to be the IPSEC [RFC 1825] bit and indicates
that this key is valid for use in conjunction with that security that this key is valid for use in conjunction with that security
standard. This key could be used in connection with secured standard. This key could be used in connection with secured
communication on behalf of an end entity or user whose name is the communication on behalf of an end entity or user whose name is the
owner name of the KEY RR if the entity or user bits are on. The owner name of the KEY RR if the entity or user bits are on. The
presence of a KEY resource with the IPSEC and entity bits on and presence of a KEY resource with the IPSEC and entity bits on and
experimental and no-key bits off is a guarantee that the host speaks experimental and no-key bits off is an assertion that the host speaks
IPSEC. IPSEC.
Bit 9 is reserved to be the "email" bit and indicate that this Bit 9 is reserved to be the "email" bit and indicate that this
key is valid for use in conjunction with MIME security multiparts. key is valid for use in conjunction with MIME security multiparts.
This key could be used in connection with secured communication on This key could be used in connection with secured communication on
behalf of an end entity or user whose name is the owner name of the behalf of an end entity or user whose name is the owner name of the
KEY RR if the entity or user bits are on. KEY RR if the entity or user bits are on.
Bits 10-11 are reserved and must be zero. Bits 10-11 are reserved and must be zero.
skipping to change at page 16, line 6 skipping to change at page 13, line 33
It is intended that new uses of DNS stored keys would initially be It is intended that new uses of DNS stored keys would initially be
implemented, and operational experience gained, using the implemented, and operational experience gained, using the
experimental range of the protocol octet. If demand for widespread experimental range of the protocol octet. If demand for widespread
deployment for the indefinite future warrants, a value in the deployment for the indefinite future warrants, a value in the
assigned range would then be designated for the protocol. Finally, assigned range would then be designated for the protocol. Finally,
(1) should the protocol become so widespread in conjunction with (1) should the protocol become so widespread in conjunction with
other protocols and with which it shares key values that duplicate other protocols and with which it shares key values that duplicate
RRs are a serious burden and (2) should the protocol provide RRs are a serious burden and (2) should the protocol provide
substantial facilities not available in any protocol for which a substantial facilities not available in any protocol for which a
flags field bit has been allocated, then one of the four remaining flags field bit has been allocated, then one of the remaining flag
flag field bits may be allocated to the protocol. When such a bit has field bits may be allocated to the protocol. When such a bit has been
been allocated, a key can be simultaneously indicated as valid for allocated, a key can be simultaneously indicated as valid for that
that protocol and the entity or host can be simultaneously flagged as protocol and the entity or host can be simultaneously flagged as
implementing the secure version of that protocol, along with other implementing the secure version of that protocol, along with other
protocols for which flag field bits have been assigned. protocols for which flag field bits have been assigned.
Note that the IPSEC protocol being developed may provide facilities
adequate for all point to point communication over IP meaning that
additional flag field bits would only be assigned, when appropriate
as indicated above, to protocols with a store-and-forward nature or
otherwise not subsumed into a point-to-point paradigm.
3.5 The KEY Algorithm Number and the MD5/RSA Algorithm 3.5 The KEY Algorithm Number and the MD5/RSA Algorithm
This octet is the key algorithm parallel to the same field for the This octet is the key algorithm parallel to the same field for the
SIG resource. The MD5/RSA algorithm described in this draft is SIG resource. The MD5/RSA algorithm described in this document is
number 1. Numbers 2 through 252 are available for assignment should number 1. Numbers 2 through 252 are available for assignment should
sufficient reason arise. However, the designation of a new algorithm sufficient reason arise. However, the designation of a new algorithm
could have a major impact on interoperability and requires an IETF could have a major impact on interoperability and requires an IETF
standards action. Number 254 is reserved for private use and will standards action. Number 254 is reserved for private use and will
never be assigned a specific algorithm. For number 254, the public never be assigned a specific algorithm. For number 254, the public
key area shown in the packet diagram above will actually begin with key area shown in the packet diagram above will actually begin with a
an Object Identifier (OID) indicating the private algorithm in use length byte followed by an Object Identifier (OID) of that length.
and the remainder of the area is whatever is required by that The OID indicates the private algorithm in use and the remainder of
algorithm. Number 253 is reserved as the "expiration date algorithm" the area is whatever is required by that algorithm. Number 253 is
for use where the expiration date or other labeling fields of SIGs reserved as the "expiration date algorithm" for use where the
are desired without any actual security. It is anticipated that this expiration date or other labeling fields of SIGs are desired without
algorithm will only be used in connection with some modes of DNS any actual security. It is anticipated that this algorithm will only
dynamic update. For number 253, the public key area is null. Values be used in connection with some modes of DNS dynamic update. For
0 and 255 are reserved. number 253, the public key area is null. Values 0 and 255 are
reserved.
If the type field does not have the "no key" value and the algorithm If the type field does not have the "no key" value and the algorithm
field is 1, indicating the MD5/RSA algorithm, the public key field is field is 1, indicating the MD5/RSA algorithm, the public key field is
structured as follows: structured as follows:
1 1 1 1 1 1 1 1 1 1 2 2 2 2 2 2 2 2 2 2 3 3 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 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
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| pub exp length| public key exponent / | pub exp length| public key exponent /
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
skipping to change at page 17, line 36 skipping to change at page 15, line 18
x represents any valid non-zero value(s). x represents any valid non-zero value(s).
AL PR NK Meaning AL PR NK Meaning
0 0 0 Illegal, claims key but has bad algorithm field. 0 0 0 Illegal, claims key but has bad algorithm field.
0 0 1 Specifies total lack of security for owner. 0 0 1 Specifies total lack of security for owner.
0 x 0 Illegal, claims key but has bad algorithm field. 0 x 0 Illegal, claims key but has bad algorithm field.
0 x 1 Specified protocols insecure, others may be secure. 0 x 1 Specified protocols insecure, others may be secure.
x 0 0 Useless. Gives key but no protocols to use it. x 0 0 Useless. Gives key but no protocols to use it.
x 0 1 Useless. Denies key but for no protocols. x 0 1 Useless. Denies key but for no protocols.
x x 0 Specifies key for protocols and certifies that x x 0 Specifies key for protocols and asserts that
those protocols are implemented with security. those protocols are implemented with security.
x x 1 Algorithm not understood for protocol. x x 1 Algorithm not understood for protocol.
(remember, in reference to the above table, that a protocol (remember, in reference to the above table, that a protocol
byte of 255 means all protocols with protocol byte values byte of 255 means all protocols with protocol byte values
assigned) assigned)
3.7 KEY RRs in the Construction of Responses 3.7 KEY RRs in the Construction of Responses
An explicit request for KEY RRs does not cause any special additional An explicit request for KEY RRs does not cause any special additional
information processing except, of course, for the corresponding SIG information processing except, of course, for the corresponding SIG
RR from a security aware server. RR from a security aware server.
Security aware DNS servers will include KEY RRs as additional Security aware DNS servers MUST include KEY RRs as additional
information in responses where appropriate including the following: information in responses where appropriate including the following:
(1) On the retrieval of NS RRs, the zone key KEY RR(s) for the zone (1) On the retrieval of NS RRs, the zone key KEY RR(s) for the zone
served by these name servers MUST be included as additional served by these name servers MUST be included as additional
information. There will always be at least one such KEY RR in a information if space is avilable. There will always be at least one
secure zone, even if it has the no-key type value to indicate that such KEY RR in a secure zone, even if it has the no-key type value to
the subzone is insecure. If not all additional information will fit, indicate that the subzone is insecure. If not all additional
the KEY RR(s) have higher priority than type A or AAAA glue RRs. If information will fit, the KEY RR(s) have higher priority than type A
such a KEY RR does not fit on a retrieval, the retrieval must be or AAAA glue RRs. If such a KEY RR does not fit on a retrieval, the
considered truncated. retrieval must be considered truncated.
(2) On retrieval of type A or AAAA RRs, the end entity KEY RR(s) will (2) On retrieval of type A or AAAA RRs, the end entity KEY RR(s) MUST
be included. On inclusion of A or AAAA RRs as additional be included if space is available. On inclusion of A or AAAA RRs as
information, their KEY RRs will also be included but with lower additional information, their KEY RRs will also be included but with
priority than the relevant A or AAAA RRs. lower priority than the relevant A or AAAA RRs.
3.8 File Representation of KEY RRs 3.8 File Representation of KEY RRs
KEY RRs may appear as lines in a zone data master file. KEY RRs may appear as lines in a zone data master file.
The flag field, protocol, and algorithm number octets are then The flag field, protocol, and algorithm number octets are then
represented as unsigned integers. Note that if the type field has represented as unsigned integers. Note that if the type field has
the "no key" value or the algorithm specified is 253, nothing appears the "no key" value or the algorithm specified is 253, nothing appears
after the algorithm octet. after the algorithm octet.
The remaining public key portion is represented in base 64 (see The remaining public key portion is represented in base 64 (see
Appendix) and may be divided up into any number of white space Appendix) and may be divided up into any number of white space
separated substrings, down to single base 64 digits, which are separated substrings, down to single base 64 digits, which are
concatenated to obtain the full signature. These substrings can span concatenated to obtain the full signature. These substrings can span
lines using the standard parenthesis. lines using the standard parenthesis.
Note that the public key may have internal sub-fields but these do Note that the public key may have internal sub-fields but these do
not appear in the master file representation. For example, with not appear in the master file representation. For example, with
algorithm 1 there is a public size, then a public exponent, and then algorithm 1 there is a public exponent size, then a public exponent,
a modulus. With algorithm 254, there will be an OID followed by and then a modulus. With algorithm 254, there will be an OID size,
algorithm dependent information. But in both cases only a single an OID, and algorithm dependent information. But in both cases only a
logical base 64 string will appear in the master file. single logical base 64 string will appear in the master file.
4. The SIG Resource Record 4. The SIG Resource Record
The SIG or "signature" resource record (RR) is the fundamental way The SIG or "signature" resource record (RR) is the fundamental way
that data is authenticated in the secure Domain Name System (DNS). As that data is authenticated in the secure Domain Name System (DNS). As
such it is the heart of the security provided. such it is the heart of the security provided.
The SIG RR unforgably authenticates other RRs of a particular type, The SIG RR unforgably authenticates other RRs of a particular type,
class, and name and binds them to a time interval and the signer's class, and name and binds them to a time interval and the signer's
domain name. This is done using cryptographic techniques and the domain name. This is done using cryptographic techniques and the
skipping to change at page 19, line 48 skipping to change at page 17, line 36
+- signature / +- signature /
/ / / /
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
The value of the SIG RR type is 24. The value of the SIG RR type is 24.
The "type covered" is the type of the other RRs covered by this SIG. The "type covered" is the type of the other RRs covered by this SIG.
The algorithm number is an octet specifying the digital signature The algorithm number is an octet specifying the digital signature
algorithm used parallel to the algorithm octet for the KEY RR. The algorithm used parallel to the algorithm octet for the KEY RR. The
MD5/RSA algorithm described in this draft is number 1. Numbers 2 MD5/RSA algorithm described in this document is number 1. Numbers 2
through 252 are available for assignment should sufficient reason through 252 are available for assignment should sufficient reason
arise to allocate them. However, the designation of a new algorithm arise to allocate them. However, the designation of a new algorithm
could have a major impact on the interoperability of the global DNS could have a major impact on the interoperability of the global DNS
system and requires an IETF standards action. Number 254 is reserved system and requires an IETF standards action. Number 254 is reserved
for private use and will not be assigned a specific algorithm. For for private use and will not be assigned a specific algorithm. For
number 254, the "signature" area shown above will actually begin with number 254, the "signature" area shown above will actually begin with
an Object Identifier (OID) indicating the private algorithm in use a length byte followed by an Object Identifier (OID) of that length.
and the remainder of the signature area is whatever is required by The OID indicates the private algorithm in use and the remainder of
that algorithm. Number 253, known as the "expiration date the area is whatever is required by that algorithm. Number 253,
algorithm", is used when the expiration date or other non-signature known as the "expiration date algorithm", is used when the expiration
fields of the SIG are desired without any actual security. It is date or other non-signature fields of the SIG are desired without any
anticipated that this algorithm will only be used in connection with actual security. It is anticipated that this algorithm will only be
some modes of DNS dynamic update. For number 253, the signature used in connection with some modes of DNS dynamic update. For number
field will be null. Values 0 and 255 are reserved. 253, the signature field will be null. Values 0 and 255 are
reserved.
The "labels" octet is an unsigned count of how many labels there are 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 in the original SIG RR owner name not counting the null label for
root and not counting any initial "*" for a wildcard. If a secured root and not counting any initial "*" for a wildcard. If a secured
retrieval is the result of wild card substitution, it is necessary retrieval is the result of wild card substitution, it is necessary
for the resolver to use the original form of the name in verifying for the resolver to use the original form of the name in verifying
the digital signature. This field helps optimize the determination the digital signature. This field helps optimize the determination
of the original form thus reducing the effort in authenticating of the original form thus reducing the effort in authenticating
signed data. signed data.
If, on retrieval, the RR appears to have a longer name than indicated If, on retrieval, the RR appears to have a longer name than indicated
by "labels", the resolver can tell it is the result of wildcard by "labels", the resolver can tell it is the result of wildcard
substitution. If the RR owner name appears to be shorter than the substitution. If the RR owner name appears to be shorter than the
labels count, the SIG RR should be considered corrupt and ignored. labels count, the SIG RR must be considered corrupt and ignored. The
The maximum number of labels possible in the current DNS is 127 but maximum number of labels allowed in the current DNS is 127 but the
the entire octet is reserved and would be required should DNS names entire octet is reserved and would be required should DNS names ever
ever be expanded to 255 labels. The following table gives some be expanded to 255 labels. The following table gives some examples.
examples. The value of "labels" is at the top, the retrieved owner The value of "labels" is at the top, the retrieved owner name on the
name on the left, and the table entry is the name to use in signature left, and the table entry is the name to use in signature
verification except that "bad" means the RR is corrupt. verification except that "bad" means the RR is corrupt.
labels= | 0 | 1 | 2 | 3 | 4 | labels= | 0 | 1 | 2 | 3 | 4 |
--------+-----+------+--------+----------+----------+ --------+-----+------+--------+----------+----------+
.| . | bad | bad | bad | bad | .| . | bad | bad | bad | bad |
d.| *. | d. | bad | bad | bad | d.| *. | d. | bad | bad | bad |
c.d.| *. | *.d. | c.d. | bad | bad | c.d.| *. | *.d. | c.d. | bad | bad |
b.c.d.| *. | *.d. | *.c.d. | b.c.d. | 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. | 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 The "original TTL" field is included in the RDATA portion to avoid
(1) authentication problems that caching servers would otherwise (1) authentication problems that caching servers would otherwise
cause by decrementing the real TTL field and (2) security problems cause by decrementing the real TTL field and (2) security problems
that unscrupulous servers could otherwise cause by manipulating the that unscrupulous servers could otherwise cause by manipulating the
real TTL field. This original TTL is protected by the signature real TTL field. This original TTL is protected by the signature
while the current TTL field is not. while the current TTL field is not.
NOTE: The "original TTL" must be restored into the covered RRs when NOTE: The "original TTL" must be restored into the covered RRs when
the signature is verified. This implies that all RRs for a the signature is verified. This implies that all RRs for a
particular type, name, and class need to have the same TTL to start particular type, name, and class must have the same TTL to start
with. with.
The SIG is valid until the "signature expiration" time which is an The SIG is valid until the "signature expiration" time which is an
unsigned number of seconds since the start of 1 January 1970, GMT, unsigned number of seconds since the start of 1 January 1970, GMT,
ignoring leap seconds. (See also Section 4.4.) SIG RRs should not ignoring leap seconds. (See also Section 4.4.) SIG RRs should not
have a date signed significantly in the future. To prevent have a date signed significantly in the future. To prevent
misordering of network request to update a zone dynamically, misordering of network requests to update a zone dynamically,
monotonically increasing "time signed" dates may be necessary. monotonically increasing "time signed" dates may be necessary.
The "time signed" field is an unsigned number of seconds since the The "time signed" field is an unsigned number of seconds since the
start of 1 January 1970, GMT, ignoring leap seconds. start of 1 January 1970, GMT, ignoring leap seconds.
A SIG RR with an expiration date before the time signed should be A SIG RR with an expiration date before the time signed must be
considered corrupt and ignored. considered corrupt and ignored.
The "key footprint" is a 16 bit quantity that is used to help The "key footprint" is a 16 bit quantity that is used to help
efficiently select between multiple keys which may be applicable and efficiently select between multiple keys which may be applicable and
as a quick check that a public key about to be used for the as a quick check that a public key about to be used for the
computationally expensive effort to check the signature is possibly computationally expensive effort to check the signature is possibly
valid. Its exact meaning is algorithm dependent. For the MD5/RSA 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 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 modulus needed to decode the signature field. That is to say, the
most significant 16 of the lest significant 24 bits of the modulus in most significant 16 of the lest significant 24 bits of the modulus in
skipping to change at page 21, line 45 skipping to change at page 19, line 38
The structure of the "signature" field is described below. The structure of the "signature" field is described below.
4.1.1 Signature Data 4.1.1 Signature Data
Except for algorithm number 253 where it is null, the actual Except for algorithm number 253 where it is null, the actual
signature portion of the SIG RR binds the other RDATA fields to all signature portion of the SIG RR binds the other RDATA fields to all
of the "type covered" RRs with that owner name and class. These of the "type covered" RRs with that owner name and class. These
covered RRs are thereby authenticated. To accomplish this, a data covered RRs are thereby authenticated. To accomplish this, a data
sequence is constructed as follows: sequence is constructed as follows:
data = RDATA | RR(s)... data = RDATA | RR(s)...
where "|" is concatenation, RDATA is all the RDATA fields in the SIG where "|" is concatenation, RDATA is all the RDATA fields in the SIG
RR itself before the signature, and RR(s) are all the RR(s) of the RR itself before and not including the signature, and RR(s) are all
type covered with the same owner name and class as the SIG RR in the RR(s) of the type covered with the same owner name and class as
canonical form and order. How this data sequence is processed into the SIG RR in canonical form and order. How this data sequence is
the signature is algorithm dependent. processed into the signature is algorithm dependent.
For purposes of DNS security, the canonical form for an RR is the RR For purposes of DNS security, the canonical form for an RR is the RR
with domain names (1) fully expanded (no name compression via with domain names (1) fully expanded (no name compression via
pointers), (2) all domain name letters set to lower case, and (3) the pointers), (2) all domain name letters set to lower case, and (3) the
original TTL substituted for the current TTL. original TTL substituted for the current TTL.
For purposes of DNS security, the canonical order for RRs is to sort For purposes of DNS security, the canonical order for RRs is to sort
them in ascending order by name, as left justified unsigned octet them in ascending order by name, considering labels as a left
sequences in network (transmission) order where a missing octet sorts justified unsigned octet sequence in network (transmission) order
before a zero octet. (See also ordering discussion in Section 5.1.) where a missing octet sorts before a zero octet. (See also ordering
Within any particular name they are similarly sorted by type and then discussion in Section 5.1.) Within any particular name they are
RDATA as a left justified unsigned octet sequence. EXCEPT that the similarly sorted by type and then RDATA as a left justified unsigned
type SIG RR(s) covering any particular type appear immediately after octet sequence. EXCEPT that the type SIG RR(s) covering any
the other RRs of that type. (This special consideration for SIG particular type appear immediately after the other RRs of that type.
RR(s) in ordering really only applies to calculating the AXFR SIG RR (This special consideration for SIG RR(s) in ordering really only
as explained in section 4.1.3 below.) Thus if at name a.b there are applies to calculating the AXFR SIG RR as explained in section 4.1.3
two A RRs and one KEY RR, their order with SIGs for concatenating the below.) Thus if at name a.b there are two A RRs and one KEY RR,
"data" to be signed would be as follows: their order with SIGs for concatenating the "data" to be signed would
be as follows:
a.b. A .... a.b. A ....
a.b. A .... a.b. A ....
a.b. SIG A ... a.b. SIG A ...
a.b. KEY ... a.b. KEY ...
a.b. SIG KEY ... a.b. SIG KEY ...
SIGs covering type ANY should not be included in a zone. SIGs covering type ANY should not be included in a zone.
4.1.2 MD5/RSA Algorithm Signature Calculation 4.1.2 MD5/RSA Algorithm Signature Calculation
For the MD5/RSA algorithm, the signature is as follows For the MD5/RSA algorithm, the signature is as follows
hash = MD5 ( data ) hash = MD5 ( data )
signature = ( 01 | FF* | 00 | prefix | hash ) ** e (mod n) signature = ( 01 | FF* | 00 | prefix | hash ) ** e (mod n)
where MD5 is the message digest algorithm documented in RFC 1321, "|" where MD5 is the message digest algorithm documented in RFC 1321, "|"
is concatenation, "e" is the private key exponent of the signer, and is concatenation, "e" is the private key exponent of the signer, and
"n" is the public modulus of the signer's public key. 01, FF, and 00 "n" is the modulus of the signer's public key. 01, FF, and 00 are
are fixed octets of the corresponding hexadecimal value. "prefix" is fixed octets of the corresponding hexadecimal value. "prefix" is the
the ASN.1 BER MD5 algorithm designator prefix specified in PKCS1, ASN.1 BER MD5 algorithm designator prefix specified in PKCS1, that
that is, is,
hex 3020300c06082a864886f70d020505000410 [NETSEC]. hex 3020300c06082a864886f70d020505000410 [NETSEC].
This prefix is included to make it easier to use RSAREF or similar This prefix is included to make it easier to use RSAREF or similar
packages. The FF octet is repeated the maximum number of times such packages. The FF octet is repeated the maximum number of times such
that the value of the quantity being exponentiated is one octet that the value of the quantity being exponentiated is one octet
shorter than the value of n. shorter than the value of n.
(The above specifications are Public Key Cryptographic Standard #1 (The above specifications are identical to the corresponding part of
[PKCS1].) Public Key Cryptographic Standard #1 [PKCS1].)
The size of n, including most and least significant bits (which will 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 be 1) SHALL be not less than 512 bits and not more than 2552 bits. n
and e SHOULD be chosen such that the public exponent is small. and e SHOULD be chosen such that the public exponent is small.
Leading zeros bytes are not permitted in the MD5/RSA algorithm Leading zeros bytes are not permitted in the MD5/RSA algorithm
signature. signature.
A public exponent of 3 minimizes the effort needed to decode a A public exponent of 3 minimizes the effort needed to decode a
signature. Use of 3 as the public exponent may be weak for signature. Use of 3 as the public exponent may be weak for
confidentiality uses since, if the same data can be collected confidentiality uses since, if the same data can be collected
encrypted under three different keys with an exponent of 3 then, encrypted under three different keys with an exponent of 3 then,
using the Chinese Remainder Theorem, the original plain text can be using the Chinese Remainder Theorem, the original plain text can be
easily recovered. This weakness is not significant for DNS because easily recovered. This weakness is not significant for DNS because
we seek only authentication, not confidentiality. we seek only authentication, not confidentiality.
4.1.3 Zone Transfer (AXFR) SIG 4.1.3 Zone Transfer (AXFR) SIG
The above SIG mechanisms assure the authentication of all zone signed The above SIG mechanisms assure the authentication of all zone signed
RRs of a particular name, class and type. However, to efficiently RRs of a particular name, class and type. However, to efficiently
assure the completeness of and secure zone transfers, a SIG RR owned assure the completeness and security of zone transfers, a SIG RR
by the zone name must be created with a type covered of AXFR that owned by the zone name must be created with a type covered of AXFR
covers all RRs in the zone other than those signed by dynamic update that covers all zone signed RRs in the zone and their zone SIGs but
keys and the SIG AXFR itself. The RRs are ordered and concatenated not the SIG AXFR itself. The RRs are ordered and concatenated for
for hashing as described in Section 4.1.1. (See also ordering hashing as described in Section 4.1.1. (See also ordering discussion
discussion in Section 5.1.) in Section 5.1.)
The AXFR SIG must be calculated last of all zone key signed SIGs in The AXFR SIG must be calculated last of all zone key signed SIGs in
the zone. In effect, when signing the zone, you order, as described the zone. In effect, when signing the zone, you order, as described
above, all RRs to be signed by the zone. You can then make one pass above, all RRs to be signed by the zone, and all associated glue RRs
inserting all the zone SIGs. As you proceed you hash RRs into both and delegation point NS RRs. You can then make one pass inserting
an RRset hash and the zone hash. When the name or type changes you all the zone SIGs. As you proceed you hash RRs to be signed into
calculate and insert the RRset SIG, clear the RRset hash, and hash both an RRset hash and the zone hash. When the name or type changes
that SIG into the zone hash. When you have finished processing all you calculate and insert the RRset zone SIG, clear the RRset hash,
the starting RRs as described above, you can then use the cumulative and hash that SIG into the zone hash (note that glue RRs and
zone hash RR to calculate and insert an AXFR SIG covering the zone. delegation point NSs are not zone signed but zone apex NSs are).
Of course any computational technique producing the same results as When you have finished processing all the starting RRs as described
above is permitted. above, you can then use the cumulative zone hash RR to calculate and
insert an AXFR SIG covering the zone. Of course any computational
technique producing the same results as above is permitted.
The AXFR SIG really belongs to the zone as a whole, not to the zone The AXFR SIG really belongs to the zone as a whole, not to the zone
name. Although it should be correct for the zone name, the labels name. Although it should be correct for the zone name, the labels
field of an AXFR SIG is otherwise meaningless. The AXFR SIG is only field of an AXFR SIG is otherwise meaningless. The AXFR SIG is only
retrieved as part of a zone transfer. After validation of the AXFR retrieved as part of a zone transfer. After validation of the AXFR
SIG, the zone MAY be considered valid without verification of the SIG, the zone MAY be considered valid without verification of the
internal zone signed SIGs in the zone; however, any SIGs signed by internal zone signed SIGs in the zone; however, any RRs authenticated
entity keys or the like must still be validated. The AXFR SIG SHOULD by SIGs signed by entity keys or the like MUST still be validated.
be transmitted first in a zone transfer so the receiver can tell The AXFR SIG SHOULD be transmitted first in a zone transfer so the
immediately that they may be able to avoid verifying other zone receiver can tell immediately that they may be able to avoid
signed SIGs. verifying other zone signed SIGs.
RRs which are authenticated by a dynamic update key and not by the RRs which are authenticated by a dynamic update key and not by the
zone key (see Section 3.2) are not included in the AXFR SIG. They may zone key (see Section 3.2) are not included in the AXFR SIG. They may
originate in the network and might not, in general, be migrated to originate in the network and might not, in general, be migrated to
the recommended off line zone signing procedure (see Section 7.2). the recommended off line zone signing procedure (see Section 7.2).
Thus, such RRs are not directly signed by the zone, are not included Thus, such RRs are not directly signed by the zone, are not included
in the AXFR SIG, and are protected against omission from zone in the AXFR SIG, and are protected against omission from zone
transfers only to the extent that the server and communication can be transfers only to the extent that the server and communication can be
trusted. trusted.
4.1.4 Transaction and Request SIGs 4.1.4 Transaction and Request SIGs
A response message from a security aware server may optionally A response message from a security aware server may optionally
contain a special SIG as the last item in the additional information contain a special SIG as the last item in the additional information
section to authenticate the transaction. section to authenticate the transaction.
This SIG has a "type covered" field of zero, which is not a valid RR 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.2) of the type. It is calculated by using a "data" (see Section 4.1.2) of the
entire preceding DNS reply message, including DNS header, entire preceding DNS reply message, including DNS header but not the
concatenated with the entire DNS query message that produced this IP header, concatenated with the entire DNS query message that
response, including the query's DNS header. That is produced this response, including the query's DNS header but not its
IP header. That is
data = full response (less final transaction SIG) | full query data = full response (less final transaction SIG) | full query
Verification of the transaction SIG (which is signed by the server Verification of the transaction SIG (which is signed by the server
host key, not the zone key) by the requesting resolver shows that the host key, not the zone key) by the requesting resolver shows that the
query and response were not tampered with in transit, that the query and response were not tampered with in transit, that the
response corresponds to the intended query, and that the response response corresponds to the intended query, and that the response
comes from the queried server. comes from the queried server.
A DNS request may be optionally signed by including one or more SIGs A DNS request may be optionally signed by including one or more SIGs
at the end of the query. Such SIGs are identified by having a "type at the end of the query. Such SIGs are identified by having a "type
covered" field of zero. They sign the preceding DNS request message covered" field of zero. They sign the preceding DNS request message
including DNS header but not including any preceding request SIGs. including DNS header but not including the IP header or at the
Such request SIGs are included in the "data" used to form any begining or any preceding request SIGs at the end. Such request SIGs
optional response transaction SIG. are included in the "data" used to form any optional response
transaction SIG.
WARNING: Request SIGs are unnecessary for currently defined queries WARNING: Request SIGs are unnecessary for currently defined queries
and will cause almost all existing DNS servers to completely ignore a and will cause almost all existing DNS servers to completely ignore a
query. However, such SIGs may be need to authenticate future DNS query. However, such SIGs may be needed to authenticate future DNS
secure dynamic update or other requests. secure dynamic update or other requests.
4.2 SIG RRs in the Construction of Responses 4.2 SIG RRs in the Construction of Responses
Security aware DNS servers MUST, for every authoritative RR the query Security aware DNS servers MUST, for every authoritative RR the query
will return, attempt to send the available SIG RRs which authenticate will return, attempt to send the available SIG RRs which authenticate
the requested RR. The following rules apply to the inclusion of SIG the requested RR. The following rules apply to the inclusion of SIG
RRs in responses: RRs in responses:
1. when an RR is placed in a response, its SIG RR has a higher 1. when an RR set is placed in a response, its SIG RR has a higher
priority for inclusion than other RRs that may need to be priority for inclusion than other additional RRs that may need to
included. If space does not permit its inclusion, the response be included. If space does not permit its inclusion, the response
MUST be considered truncated except as provided in 2 below. MUST be considered truncated except as provided in 2 below.
2. when a SIG RR is present in the zone for an additional information 2. when a SIG RR is present in the zone for an additional information
section RR, the response MUST NOT be considered truncated merely section RR, the response MUST NOT be considered truncated merely
because space does not permit the inclusion of its SIG RR. because space does not permit the inclusion of its SIG RR.
3. SIGs to authenticate non-authoritative data (glue records and NS 3. SIGs to authenticate non-authoritative data (glue records and NS
RRs for subzones) are unnecessary and MUST NOT be sent. (Note RRs for subzones) are unnecessary and MUST NOT be sent. (Note
that KEYs for subzones are controlling in a superzone so the that KEYs for subzones are controlling in a superzone so the
superzone's signature on the KEY MUST be included (unless the KEY superzone's signature on the KEY MUST be included (unless the KEY
was additional information).) was additional information and the SIG did not fit).)
4. If a SIG covers any RR that would be in the answer section of the 4. 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 response, its automatic inclusion MUST be the answer section. If
it covers an RR that would appear in the authority section, its it covers an RR that would appear in the authority section, its
automatic inclusion MUST be in the authority section. If it automatic inclusion MUST be in the authority section. If it
covers an RR that would appear in the additional information covers an RR that would appear in the additional information
section it MUST appear in the additional information section. section it MUST appear in the additional information section.
This is a change in the existing standard which contemplates only This is a change in the existing standard which contemplates only
NS and SOA RRs in the authority section. NS and SOA RRs in the authority section.
skipping to change at page 25, line 49 skipping to change at page 24, line 13
any other RR in the response. any other RR in the response.
4.3 Processing Responses and SIG RRs 4.3 Processing Responses and SIG RRs
The following rules apply to the processing of SIG RRs included in a The following rules apply to the processing of SIG RRs included in a
response: response:
1. a security aware resolver that receives a response from what it 1. a security aware resolver that receives a response from what it
believes to be a security aware server via a secure communication believes to be a security aware server via a secure communication
with the AD bit (see Section 6.1) set, MAY choose to accept the with the AD bit (see Section 6.1) set, MAY choose to accept the
RRs as received without verifying the SIG RRs. RRs as received without verifying the zone SIG RRs.
2. in other cases, a security aware resolver SHOULD verify the SIG 2. in other cases, a security aware resolver SHOULD verify the SIG
RRs for the RRs of interest. This may involve initiating RRs for the RRs of interest. This may involve initiating
additional queries for SIG or KEY RRs, especially in the case of additional queries for SIG or KEY RRs, especially in the case of
getting a response from an insecure server. (As explained in 4.2 getting a response from an insecure server. (As explained in 4.2
above, it will not be possible to secure CNAMEs being served up by above, it will not be possible to secure CNAMEs being served up by
non-secure resolvers.) non-secure resolvers.)
NOTE: Implementers might expect the above SHOULD to be a MUST. NOTE: Implementers might expect the above SHOULD to be a MUST.
However, local policy or the calling application may not require However, local policy or the calling application may not require
skipping to change at page 26, line 29 skipping to change at page 24, line 41
ignored. If all of the SIG RR(s) purporting to authenticate a set of ignored. If all of the SIG RR(s) purporting to authenticate a set of
RRs are invalid, then the set of RR(s) is not authenticated. RRs are invalid, then the set of RR(s) is not authenticated.
If the SIG RR is the last RR in a response in the additional 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 information section and has a type covered of zero, it is a
transaction signature of the response and the query that produced the transaction signature of the response and the query that produced the
response. It MAY be optionally checked and the message rejected if response. It MAY be optionally checked and the message rejected if
the checks fail. But even if the checks succeed, such a transaction the checks fail. But even if the checks succeed, such a transaction
authentication SIG does NOT authenticate any RRs in the message. authentication SIG does NOT authenticate any RRs in the message.
Only a proper SIG RR signed by the zone or a key tracing its Only a proper SIG RR signed by the zone or a key tracing its
authority to the zone can authenticate RRs. If a resolver does not authority to the zone or to static resolver configuration can
implement transaction and/or request SIGs, it MUST ignore them authenticate RRs. If a resolver does not implement transaction
without error. and/or request SIGs, it MUST ignore them without error.
If all reasonable checks indicate that the SIG RR is valid then RRs If all reasonable checks indicate that the SIG RR is valid then RRs
verified by it should be considered authenticated. verified by it should be considered authenticated.
4.4 Signature Expiration, TTLs, and Validity 4.4 Signature Expiration, TTLs, and Validity
Security aware servers must not consider SIG RRs to authenticate Security aware servers must not consider SIG RRs to authenticate
anything after their expiration time and not consider any RR to be anything after their expiration time and not consider any RR to be
authenticated after its signatures have expired. Within that authenticated after its signatures have expired. Within that
constraint, servers should continue to follow DNS TTL aging. Thus constraint, servers should continue to follow DNS TTL aging. Thus
authoritative servers should continue to follow the zone refresh and authoritative servers should continue to follow the zone refresh and
expire parameters and a non-authoritative server should count down expire parameters and a non-authoritative server should count down
the TTL and discard RRs when the TTL is zero. In addition, when RRs the TTL and discard RRs when the TTL is zero. In addition, when RRs
are transmitted in a query response, the TTL should be trimmed so are transmitted in a query response, the TTL should be trimmed so
that current time plus the TTL does not extend beyond the signature that current time plus the TTL does not extend beyond the signature
expiration time. Thus, in general, the TTL on an transmitted RR expiration time. Thus, in general, the TTL on an transmitted RR
would be would be
min(sigExpTim,max(zoneMinTTL,min(originalTTL,currentTTL))) min(sigExpTim,max(zoneMinTTL,min(originalTTL,currentTTL)))
4.5 File Representation of SIG RRs 4.5 File Representation of SIG RRs
A SIG RR can be represented as a single logical line in a zone data A SIG RR can be represented as a single logical line in a zone data
file [RFC1033] but there are some special considerations as described file [RFC1033] but there are some special considerations as described
below. (It does not make sense to include a transaction or request below. (It does not make sense to include a transaction or request
authenticating SIG RR in a file as they are a transient authenticating SIG RR in a file as they are a transient
authentication that covers data including an ephemeral transaction authentication that covers data including an ephemeral transaction
number and so must be calculated in real time.) number and so must be calculated in real time.)
skipping to change at page 28, line 8 skipping to change at page 26, line 8
However, the signature itself can be very long. It is the last data However, the signature itself can be very long. It is the last data
field and is represented in base 64 (see Appendix) and may be divided field and is represented in base 64 (see Appendix) and may be divided
up into any number of white space separated substrings, down to up into any number of white space separated substrings, down to
single base 64 digits, which are concatenated to obtain the full single base 64 digits, which are concatenated to obtain the full
signature. These substrings can be split between lines using the signature. These substrings can be split between lines using the
standard parenthesis. standard parenthesis.
5. Non-existent Names and Types 5. Non-existent Names and Types
The SIG RR mechanism described in Section 4 above provides strong The SIG RR mechanism described in Section 4 above provides strong
authentication of RRs that exist in a zone. But is it not authentication of RRs that exist in a zone. But is it not clear
immediately clear how to authenticatably deny the existence of a name above how to authenticatably deny the existence of a name in a zone
in a zone or a type for an existent name. or a type for an existent name.
The nonexistence of a name in a zone is indicated by the NXT ("next") The nonexistence of a name in a zone is indicated by the NXT ("next")
RR for a name interval containing the nonexistent name. A NXT RR and RR for a name interval containing the nonexistent name. A NXT RR and
its SIG are returned in the authority section, along with the error, its SIG are returned in the authority section, along with the error,
if the server is security aware. The same is true for a non-existent if the server is security aware. The same is true for a non-existent
type under an existing name. This is a change in the existing type under an existing name. This is a change in the existing
standard which contemplates only NS and SOA RRs in the authority standard which contemplates only NS and SOA RRs in the authority
section. NXT RRs will also be returned if an explicit query is made section. NXT RRs will also be returned if an explicit query is made
for the NXT type. for the NXT type.
skipping to change at page 28, line 43 skipping to change at page 26, line 43
indicate what zone signed RR types are present for an existing name. indicate what zone signed RR types are present for an existing name.
The owner name of the NXT RR is an existing name in the zone. It's The owner name of the NXT RR is an existing name in the zone. It's
RDATA is a "next" name and a type bit map. The presence of the NXT RR RDATA is a "next" name and a type bit map. The presence of the NXT RR
means that generally no name between its owner name and the name in means that generally no name between its owner name and the name in
its RDATA area exists and that no other zone signed types exist under its RDATA area exists and that no other zone signed types exist under
its owner name. This implies a canonical ordering of all domain its owner name. This implies a canonical ordering of all domain
names in a zone. names in a zone.
The ordering is to sort labels as unsigned left justified octet The ordering is to sort labels as unsigned left justified octet
strings where the absence of a octet sorts before a zero octet and strings where the absence of a octet sorts before a zero value octet
upper case letters are treated as lower case letters. Names are then and upper case letters are treated as lower case letters. Names are
sorted by sorting on the highest level label and then, within those then sorted by sorting on the highest level label and then, within
names with the same highest level label by the next lower label, etc. those names with the same highest level label by the next lower
down to leaf node labels. Since we are talking about a zone, the label, etc. down to leaf node labels. Since we are talking about a
zone name itself always exists and all other names are the zone name zone, the zone name itself always exists and all other names are the
with some prefix of lower level labels. Thus the zone name itself zone name with some prefix of lower level labels. Thus the zone name
always sorts first. itself always sorts first.
There is a problem with the last NXT in a zone as it wants to have an There is a potential problem with the last NXT in a zone as it wants
owner name which is the last existing name in sort order, which is to have an owner name which is the last existing name in canonical
easy, but it is not obvious what name to put in its RDATA to indicate order, which is easy, but it is not obvious what name to put in its
the entire remainder of the name space. This is handled by treating RDATA to indicate the entire remainder of the name space. This is
the name space as circular and putting the zone name in the RDATA of handled by treating the name space as circular and putting the zone
the last NXT in a zone. name in the RDATA of the last NXT in a zone.
There are special considerations due to interaction with wildcards as There are special considerations due to interaction with wildcards as
explained below. explained below.
The NXT RRs for a zone should be automatically calculated and added The NXT RRs for a zone SHOULD be automatically calculated and added
to the zone by the same recommended off-line process that signs the to the zone by the same recommended off-line process that signs the
zone (see Section 7.2). The NXT RR's TTL should not exceed the zone zone (see Section 7.2). The NXT RR's TTL SHOULD not exceed the zone
minimum TTL. minimum TTL.
5.2 NXT RDATA Format 5.2 NXT RDATA Format
The RDATA for an NXT RR consists simply of a domain name followed by The RDATA for an NXT RR consists simply of a domain name followed by
a bit map. a bit map.
The type number for the NXT RR is 30. The type number for the NXT RR is 30.
1 1 1 1 1 1 1 1 1 1 2 2 2 2 2 2 2 2 2 2 3 3 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 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 / | next domain name /
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| type bit map / | type bit map /
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
The NXT RR type bit map is one bit per RR type present for the owner The NXT RR type bit map is one bit per RR type present for the owner
name similar to the WKS socket bit map. The first bit represents RR name similar to the WKS socket bit map. The first bit represents RR
type zero (an illegal type which should not be present.) A one bit type zero (an illegal type which should not be present.) A one bit
indicates that at least one RR of that type is present for the owner indicates that at least one RR of that type is present for the owner
name. A zero indicates that no such RR is present. All bits not name. A zero indicates that no such RR is present. All bits not
specified because they are beyond the end of the bit map are assumed specified because they are beyond the end of the bit map are assumed
to be zero. Note that bit 30, for NXT, will always be on so the to be zero. Note that bit 30, for NXT, will always be on so the
minimum bit map length is actually four octets. The NXT bit map minimum bit map length is actually four octets. The NXT bit map
should be printed as a list of RR type mnemonics or decimal numbers should be printed as a list of RR type mnemonics or decimal numbers
skipping to change at page 30, line 18 skipping to change at page 28, line 18
big.foo.tld, big.foo.tld,
medium.foo.tld. medium.foo.tld.
small.foo.tld. small.foo.tld.
tiny.foo.tld. tiny.foo.tld.
Then a query to a security aware server for huge.foo.tld would Then a query to a security aware server for huge.foo.tld would
produce an error reply with the authority section data including produce an error reply with the authority section data including
something like the following: something like the following:
big.foo.tld. NXT medium.foo.tld. A MX SIG NXT big.foo.tld. NXT medium.foo.tld. A MX SIG NXT
big.foo.tld. SIG NXT 1 3 ( ;type-cov=NXT, alg=1, labels=3 big.foo.tld. SIG NXT 1 3 ( ;type-cov=NXT, alg=1, labels=3
19960102030405 ;signature expiration 19960102030405 ;signature expiration
19951211100908 ;time signed 19951211100908 ;time signed
2143658709 ;key footprint 21435 ;key footprint
foo.tld. ;signer foo.tld. ;signer
MxFcby9k/yvedMfQgKzhH5er0Mu/vILz45IkskceFGgiWCn/GxHhai6VAuHAoNUz4YoU MxFcby9k/yvedMfQgKzhH5er0Mu/vILz45IkskceFGgiWCn/GxHhai6VAuHAoNUz4YoU
1tVfSCSqQYn6//11U6Nld80jEeC8aTrO+KKmCaY= ;signature (640 bits) 1tVfSCSqQYn6//11U6Nld80jEeC8aTrO+KKmCaY= ;signature (640 bits)
) )
Note that this response implies that big.foo.tld is an existing name Note that this response implies that big.foo.tld is an existing name
in the zone and thus has other RR types associated with it than NXT. in the zone and thus has other RR types associated with it than NXT.
However, only the NXT (and its SIG) RR appear in the response to this However, only the NXT (and its SIG) RR appear in the response to this
query for huge.foo.tld, which is a non-existent name. query for huge.foo.tld, which is a non-existent name.
5.4 Interaction of NXT RRs and Wildcard RRs 5.4 Interaction of NXT RRs and Wildcard RRs
Since, in some sense, a wildcard RR causes all possible names in an Since, in some sense, a wildcard RR causes all possible names in an
interval to exist, there should not be an NXT RR that would cover any interval to exist, there should not be an NXT RR that would cover any
part of this interval. Thus if *.X.ZONE exists you would expect an part of this interval. Thus if *.X.ZONE exists you would expect an
NXT RR that ends at X.ZONE and one that starts with the last name NXT 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 covered by *.X.ZONE. However, this "last name covered" is something
very ugly and long like \255\255\255....X.zone. So the NXT for the very ugly and long like \255\255\255....X.zone. So the NXT for the
interval following is simply given the owner name *.X.ZONE. This "*" interval following is simply given the owner name *.X.ZONE and an
type name is not expanded when the NXT is returned as authority RDATA of the next name after the wildcard. This "*" type owner name
information in connection with a query for a non-existent name. is not expanded when the NXT is returned as authority information in
connection with a query for a non-existent name.
If there could be any wildcard RRs in a zone and thus wildcard NXTs, If there could be any wildcard RRs in a zone and thus wildcard NXTs,
care must be taken in interpreting the results of explicit NXT care must be taken in interpreting the results of explicit NXT
retrievals as the owner name may be a wildcard expansion. retrievals as the owner name may be a wildcard expansion.
The existence of one or more wildcard RRs covering a name interval The existence of one or more wildcard RRs covering a name interval
makes it possible for a malicious server to hide any more makes it possible for a malicious server to hide any more
specifically named RRs in the internal. The server can just falsely specifically named RRs in the internal. The server can just falsely
return the wildcard match NXT instead of the more specifically named return the wildcard match NXT instead of the more specifically named
RRs. If there is a zone wide wildcard, there will be an NXT RR whose RRs. If there is a zone wide wildcard, there will be an NXT RR whose
owner name is the wild card and whose RDATA is the zone name. In owner name is the wild card and whose RDATA is the zone name. In this
this case a server could conceal the existence of any more specific case a server could conceal the existence of any more specific RRs in
RRs in the zone. (It would be possible to design a more strict NXT the zone. It would be possible to design a more strict NXT feature
feature which would eliminate this possibility. But it would be more which would eliminate this possibility. But it would be more complex
complex and might be so constraining as to make any dynamic update and might be so constraining as to make any dynamic update feature
feature very difficult.) very difficult.
What name should be put into the RDATA of an NXT RR with an owner
name that is within a wild card scope? Since the "next" existing
name will be one that matches the wild card, the wild card name
should be used. Inclusion of such NXTs for names interior to a wild
card scope is optional.
5.5 Blocking NXT Pseudo-Zone Transfers 5.5 Blocking NXT Pseudo-Zone Transfers
In a secure zone, a resolver can query for the initial NXT associated In a secure zone, a resolver can query for the initial NXT associated
with the zone name. Using the next domain name RDATA field from that with the zone name. Using the next domain name RDATA field from that
RR, it can query for the next NXT RR. By repeating this, it can walk RR, it can query for the next NXT RR. By repeating this, it can walk
through all the NXTs in the zone. If there are no wildcards, it can through all the NXTs 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 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 queries, it can incrementally get all information in the zone and
perhaps defeat attempts to administratively block zone transfers. thus defeat attempts to administratively block zone transfers.
If there are any wildcards, this NXT walking technique will not find If there are any wildcards, this NXT walking technique will not find
any more specific RR names in the part of the name space the wildcard any more specific RR names in the part of the name space the wildcard
covers. By doing explicit retrievals for wildcard names, a resolver covers. By doing explicit retrievals for wildcard names, a resolver
could determine what intervals are covered by wildcards but still could determine what intervals are covered by wildcards but still
could not, with these techniques, find any names inside such could not, with these techniques, find any names inside such
intervals except by trying every name. intervals except by trying every name.
If it is desired to block NXT walking, the recommended method is to If it is desired to block NXT walking, the recommended method is to
add a zone wide wildcard of the KEY type with the no-key type value add a zone wide wildcard of the KEY type with the no-key type value
and with no type (zone, entity, or user) bit on. This will cause and with no type (zone, entity, or user) bit on. This will cause
there to be one zone covering NXT RR and leak no information about there to be one zone covering NXT RR and leak no information about
what real names exist in the zone. This protection from pseudo-zone what real names exist in the zone. This protection from pseudo-zone
transfers is bought at the expense of eliminating the data origin transfers is bought at the expense of eliminating the data origin
authentication of the non-existence of names that NXT RRs can authentication of the non-existence of names that NXT RRs can
provide. If an entire zone is covered by a wildcard, a malicious provide. If an entire zone is covered by a wildcard, a malicious
server can return an RR produced by matching the resulting wildcard server can return an RR produced by matching the resulting wildcard
NXT and can thus hide all the real data and delegations with more NXT and can thus hide all the real data and delegations in the zone
specific names in the zone. that have more specific names.
5.6 Special Considerations at Delegation Points 5.6 Special Considerations at Delegation Points
A name (other than root) which is the head of a zone also appears as A name (other than root) which is the head of a zone also appears as
the leaf in a superzone. If both are secure, there will always be the leaf in a superzone. If both are secure, there will always be
two different NXT RRs with the same name. They can be distinguished two different NXT RRs with the same name. They can be distinguished
by their signers and next domain name fields. Security aware servers by their signers and next domain name fields. Security aware servers
should return the correct NXT automatically when required to should return the correct NXT automatically when required to
authenticate the non-existence of a name and both NXTs, if available, authenticate the non-existence of a name and both NXTs, if available,
on explicit query for type NXT. on explicit query for type NXT.
skipping to change at page 33, line 39 skipping to change at page 30, line 43
because it is in or has been reached via a non-secured zone. Behavior because it is in or has been reached via a non-secured zone. Behavior
in terms of control of and flagging based on such data labels is in terms of control of and flagging based on such data labels is
described in Section 6.1. described in Section 6.1.
The proper validation of signatures requires a reasonably secure The proper validation of signatures requires a reasonably secure
shared opinion of the absolute time between resolvers and servers as shared opinion of the absolute time between resolvers and servers as
described in Section 6.4. described in Section 6.4.
6.1 The AD and CD Header Bits 6.1 The AD and CD Header Bits
Two unused bits are allocated out of the DNS query/response format Two previously unused bits are allocated out of the DNS
header. The AD (authentic data) bit indicates in a response that the query/response format header. The AD (authentic data) bit indicates
data included has been verified by the server providing it. The CD in a response that the data included has been verified by the server
(checking disabled) bit indicates in a query that non-verified data providing it. The CD (checking disabled) bit indicates in a query
is acceptable to the resolver sending the query. that non-verified data is acceptable to the resolver sending the
query.
These bits are allocated from the must-be-zero Z field as follows: These bits are allocated from the must-be-zero Z field as follows:
1 1 1 1 1 1 1 1 1 1 1 1
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5
+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+ +--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+
| ID | | ID |
+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+ +--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+
|QR| Opcode |AA|TC|RD|RA| Z|AD|CD| RCODE | |QR| Opcode |AA|TC|RD|RA| Z|AD|CD| RCODE |
+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+ +--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+
skipping to change at page 34, line 25 skipping to change at page 31, line 27
+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+ +--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+
| NSCOUNT | | NSCOUNT |
+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+ +--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+
| ARCOUNT | | ARCOUNT |
+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+ +--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+
These bits are zero in old servers and resolvers. Thus the responses These bits are zero in old servers and resolvers. Thus the responses
of old servers are not flagged as authenticated to security aware of old servers are not flagged as authenticated to security aware
resolvers and queries from non-security aware resolvers do not assert resolvers and queries from non-security aware resolvers do not assert
the checking disabled bit and thus will be answered by security aware the checking disabled bit and thus will be answered by security aware
servers only with authenticated data. Of course security aware servers only with authenticated data. Aware resolvers MUST not trust
resolvers can not trust the AD bit unless they trust the server they the AD bit unless they trust the server they are talking to and
are talking to and either have a secure path to it or use DNS either have a secure path to it or use DNS transaction security.
transaction security.
Any security aware resolver willing to do cryptography SHOULD assert Any security aware resolver willing to do cryptography SHOULD assert
the CD bit on all queries to reduce DNS latency time by allowing the CD bit on all queries to reduce DNS latency time by allowing
security aware servers to answer before they have resolved the security aware servers to answer before they have resolved the
validity of data. validity of data.
Security aware servers NEVER return Bad data. For non-security aware Security aware servers NEVER return Bad data. For non-security aware
resolvers or security aware resolvers requesting service by having resolvers or security aware resolvers requesting service by having
the CD bit clear, security aware servers return only Authenticated or the CD bit clear, security aware servers MUST return only
Insecure data with the AD bit set in the response. Security aware Authenticated or Insecure data with the AD bit set in the response.
resolvers will know that if data is Insecure versus Authentic by the Security aware resolvers will know that if data is Insecure versus
absence of SIG RRs. Security aware servers may return Pending data Authentic by the absence of SIG RRs. Security aware servers MAY
to security aware resolvers requesting the service by clearing the AD return Pending data to security aware resolvers requesting the
bit in the response. The AD bit may only be set on a response if the service by clearing the AD bit in the response. The AD bit MUST NOT
RRs in the response are either Authenticated or Insecure. be set on a response unless all of the RRs in the response are either
Authenticated or Insecure.
6.2 Boot File Format 6.2 Boot File Format
Two boot file directives are added as described in this section.
The format for a boot file directive to configure a starting zone key The format for a boot file directive to configure a starting zone key
is as follows: is as follows:
pubkey name flags protocol algorithm key-data pubkey name flags protocol algorithm key-data
for a public key. "name" is the owner name (if the line is for a public key. "name" is the owner name (if the line is
translated into a KEY RR). Flags indicates the type of key and is translated into a KEY RR). Flags indicates the type of key and is
the same as the flag octet in the KEY RR. Protocol and algorithm the same as the flag octet in the KEY RR. Protocol and algorithm
also have the same meaning as they do in the KEY RR. The material also have the same meaning as they do in the KEY RR. The material
after the algorithm is algorithm dependent and, for private after the algorithm is algorithm dependent and, for private
algorithms (algorithm 254), starts with the algorithm's identifying algorithms (algorithm 254), starts with the algorithm's identifying
OID. If the "no key" type value is set in flags or the algorithm is OID and its length. If the "no key" type value is set in flags or
specified as 253, then the key-data after algorithm is null. It is the algorithm is specified as 253, then the key-data after algorithm
treated as an octet stream and encoded in base 64 (see Appendix). is null. When present the key-data is treated as an octet stream and
encoded in base 64 (see Appendix).
A file of keys for cross certification or other purposes can be A file of keys for cross certification or other purposes can be
configured though the keyfile directive as follows: configured though the keyfile directive as follows:
keyfile filename keyfile filename
The file looks like a master file except that it can only contain KEY The file looks like a master file except that it can only contain KEY
and SIG RRs with the SIGs signed under a key configured with the and SIG RRs with the SIGs signed under a key configured with the
pubkey directive. pubkey directive.
While it might seem logical for everyone to start with the key for While it might seem logical for everyone to start with the key for
the root zone, this has problems. The logistics of updating every the root zone, this has problems. The logistics of updating every
DNS resolver in the world when the root key changes would be 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. excessive. It may be some time before there even is a root key.
Furthermore, many organizations will explicitly wish their "interior" Furthermore, many organizations will explicitly wish their "interior"
DNS implementations to completely trust only their own zone. These DNS implementations to completely trust only their own zone. Such
interior resolvers can then go through the organization's zone interior resolvers can then go through the organization's zone
servers to access data outsize the organization's domain. servers to access data outsize the organization's domain and should
only be configured with the key forthe organization's DNS apex.
6.3 Chaining Through Zones 6.3 Chaining Through Zones
Starting with one or more trusted keys for a zone, it should be Starting with one or more trusted keys for a zone, it should be
possible to retrieve signed keys for its subzones which have a key possible to retrieve signed keys for its subzones which have a key
and, if the zone is not root, for its superzone. Every authoritative and, if the zone is not root, for its superzone. Every authoritative
secure zone server MUST also include the KEY RR for a super-zone secure zone server MUST also include the KEY RR for a super-zone
signed by the secure zone via a keyfile directive. This makes it signed by the secure zone via a keyfile directive. This makes it
possible to climb the tree of zones if one starts below root. A possible to climb the tree of zones if one starts below root. A
secure sub-zone is indicated by a KEY RR with non-null key secure sub-zone is indicated by a KEY RR with non-null key
information appearing with the NS RRs for the sub-zone. These make information appearing with the NS RRs for the sub-zone. These make
it possible to descend within the tree of zones. it possible to descend within the tree of zones.
A resolver should keep track of the number of successive secure 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 traversed from a starting point to any secure zone it can reach. In
general, the lower such a distance number is, the greater the general, the lower such a distance number is, the greater the
confidence in the data. Data configured via a boot file directive confidence in the data. Data configured via a boot file directive
should be given a distance number of zero. Should a query encounter should be given a distance number of zero. If a query encounters
different data for the same query with different distance values, different data for the same query with different distance values,
that with a larger value should be ignored. that with a larger value should be ignored.
A security conscious resolver should completely refuse to step from a A security conscious resolver should completely refuse to step from a
secure zone into a non-secure zone unless the non-secure zone is secure zone into a non-secure zone unless the non-secure zone is
certified to be non-secure, or only experimentally secure, by the certified to be non-secure, or only experimentally secure, by the
presence of an authenticated KEY RR for the non-secure zone with the presence of an authenticated KEY RR for the non-secure zone with the
no-key type value or the presence of a KEY RR with the experimental no-key type value or the presence of a KEY RR with the experimental
bit set. Otherwise the resolver is getting bogus or spoofed data. bit set. Otherwise the resolver is getting bogus or spoofed data.
skipping to change at page 37, line 45 skipping to change at page 34, line 39
The recommended minimum RSA algorithm modulus size, 640 bits, is The recommended minimum RSA algorithm modulus size, 640 bits, is
believed by the authors to be secure at this time but high level believed by the authors to be secure at this time but high level
zones in the DNS tree may wish to set a higher minimum, perhaps 1000 zones in the DNS tree may wish to set a higher minimum, perhaps 1000
bits, for security reasons. (Since the United States National bits, for security reasons. (Since the United States National
Security Agency generally permits export of encryption systems using 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. an RSA modulus of up to 512 bits, use of that small a modulus, i.e.
n, must be considered weak.) n, must be considered weak.)
For a key used only to secure data and not to secure other keys, 640 For a key used only to secure data and not to secure other keys, 640
bits should be adequate. bits should be adequate at this time.
7.2 Key Storage 7.2 Key Storage
It is recommended that zone private keys and the zone file master It is recommended that zone private keys and the zone file master
copy be kept and used in off-line non-network connected physically copy be kept and used in off-line non-network connected physically
secure machines only. Periodically an application can be run to add secure machines only. Periodically an application can be run to add
authentication to a zone by adding SIG and NXT RRs and adding no-key authentication to a zone by adding SIG and NXT RRs and adding no-key
type KEY RRs for subzones where a real KEY RR is not provided. Then type KEY RRs for subzones where a real KEY RR is not provided. Then
the augmented file can be transferred, perhaps by sneaker-net, to the the augmented file can be transferred, perhaps by sneaker-net, to the
networked zone primary server machine. networked zone primary server machine.
The idea is to have a one way information flow to the network to The idea is to have a one way information flow to the network to
avoid the possibility of tampering from the network. Keeping the avoid the possibility of tampering from the network. Keeping the
zone master file on-line on the network and simply cycling it through 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 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. For be tampered with if the host it resides on is compromised. For
maximum security, the master copy of the zone file should be off net maximum security, the master copy of the zone file should be off net
and should not be updated based on an unsecured network mediated and should not be updated based on an unsecured network mediated
communication. communication.
Note, however, that secure resolvers need to be configured with some Note, however, that secure resolvers must be configured with some
trusted on-line public key information (or a secure path to such a trusted on-line public key information (or a secure path to such a
resolver). resolver) or they will be unable to authenticate.
Non-zone private keys, such as host or user keys, generally have to Non-zone private keys, such as host or user keys, generally have to
be kept on line to be used for real-time purposes such as DNS be kept on line to be used for real-time purposes such as DNS
transaction security, IPSEC session set-up, or secure mail. transaction security, IPSEC session set-up, or secure mail.
7.3 Key Generation 7.3 Key Generation
Careful key generation is a sometimes overlooked but absolutely Careful key generation is a sometimes overlooked but absolutely
essential element in any cryptographically secure system. The essential element in any cryptographically secure system. The
strongest algorithms used with the longest keys are still of no use strongest algorithms used with the longest keys are still of no use
skipping to change at page 39, line 8 skipping to change at page 35, line 46
key rollover is a rare event, there is an increased risk that, when key rollover is a rare event, there is an increased risk that, when
the time does come up change the key, no one at the site will the time does come up change the key, no one at the site will
remember how to do it or other problems will have developed in the remember how to do it or other problems will have developed in the
procedures. procedures.
While key lifetime is a matter of local policy, these considerations While key lifetime is a matter of local policy, these considerations
suggest that no zone key should have a lifetime significantly over suggest that no zone key should have a lifetime significantly over
four years. A reasonable maximum lifetime for zone keys that are four years. A reasonable maximum lifetime for zone keys that are
kept off-line and carefully guarded is 13 months with the intent that kept off-line and carefully guarded is 13 months with the intent that
they be replaced every year. A reasonable maximum lifetime for end they be replaced every year. A reasonable maximum lifetime for end
entity keys that are used for IP-security or the like and are kept on entity and useer keys that are used for IP-security or the like and
line is 36 days with the intent that they be replaced monthly or more are kept on line is 36 days with the intent that they be replaced
often. In some cases, an entity key lifetime of somewhat over a day monthly or more often. In some cases, an entity key lifetime of
may be reasonable. somewhat over a day may be reasonable.
7.5 Signature Lifetime 7.5 Signature Lifetime
Signature expiration times must be set far enough in the future that Signature expiration times must be set far enough in the future that
it is quite certain that new signatures can be generated before the it is quite certain that new signatures can be generated before the
old ones expire. However, setting expiration too far into the future old ones expire. However, setting expiration too far into the future
could, if bad data or signatures were ever generated, mean a long could, if bad data or signatures were ever generated, mean a long
time to flush such badness. time to flush such badness.
It is recommended that signature lifetime be a small multiple of the It is recommended that signature lifetime be a small multiple of the
skipping to change at page 40, line 7 skipping to change at page 36, line 28
It should be noted that in DNS the root is a zone unto itself. Thus It should be noted that in DNS the root is a zone unto itself. Thus
the root zone key should only be seen signing itself or signing RRs the root zone key should only be seen signing itself or signing RRs
with names one level below root, such as .aq, .edu, or .arpa. with names one level below root, such as .aq, .edu, or .arpa.
Implementations MAY reject as bogus any purported root signature of Implementations MAY reject as bogus any purported root signature of
records with a name more than one level below root. The root zone records with a name more than one level below root. The root zone
contains the root KEY RR signed by a SIG RR under the root key contains the root KEY RR signed by a SIG RR under the root key
itself. itself.
8. Conformance 8. Conformance
Several levels of server and resolver conformance are defined. Levels of server and resolver conformance are defined.
8.1 Server Conformance 8.1 Server Conformance
Two levels of server conformance are defined as follows: Two levels of server conformance are defined as follows:
Minimal server compliance is the ability to store and retrieve Minimal server compliance is the ability to store and retrieve
(including zone transfer) SIG, KEY, and NXT RRs. Any secondary, (including zone transfer) SIG, KEY, and NXT RRs. Any secondary,
caching, or other server for a secure zone must be at least minimally caching, or other server for a secure zone MUST be at least
compliant and even then some things, such as secure CNAMEs, will not minimally compliant and even then some things, such as secure
work. CNAMEs, will not work without full compliance.
Full server compliance adds the following to basic compliance: Full server compliance adds the following to basic compliance:
(1) ability to read SIG, KEY, and NXT RRs in zone files and (2)
ability, given a zone file and private key, to add appropriate SIG (1) ability to read SIG, KEY, and NXT RRs in zone files and (2)
and NXT RRs, possibly via a separate application, (3) proper ability, given a zone file and private key, to add appropriate SIG
automatic inclusion of SIG, KEY, and NXT RRs in responses, (4) and NXT RRs, possibly via a separate application, (3) proper
suppression of CNAME following on retrieval of the security type RRs, automatic inclusion of SIG, KEY, and NXT RRs in responses, (4)
(5) recognize the CD query header bit and set the AD query header suppression of CNAME following on retrieval of the security type
bit, as appropriate, and (6) proper handling of the two NXT RRs at RRs, (5) recognize the CD query header bit and set the AD query
delegation points. Primary servers for secure zones MUST be fully header bit, as appropriate, and (6) proper handling of the two NXT
compliant and for completely successful secure operation, all RRs at delegation points. Primary servers for secure zones MUST
secondary, caching, and other servers handling the zone should be be fully compliant and for completely successful secure operation,
fully compliant as well. all secondary, caching, and other servers handling the zone SHOULD
be fully compliant as well.
8.2 Resolver Conformance 8.2 Resolver Conformance
Two levels of resolver compliance are defined: Two levels of resolver compliance are defined:
A basic compliance resolver can handle SIG, KEY, and NXT RRs A basic compliance resolver can handle SIG, KEY, and NXT RRs when
when they are explicitly requested. they are explicitly requested.
A fully compliant resolver (1) understands KEY, SIG, and NXT A fully compliant resolver (1) understands KEY, SIG, and NXT RRs,
RRs, (2) maintains appropriate information in its local caches and (2) maintains appropriate information in its local caches and
database to indicate which RRs have been authenticated and to what database to indicate which RRs have been authenticated and to what
extent they have been authenticated, (3) performs additional queries extent they have been authenticated, (3) performs additional
as necessary to attempt to obtain KEY, SIG, or NXT RRs from non- queries as necessary to attempt to obtain KEY, SIG, or NXT RRs
security aware servers, (4) normally sets the CD query header bit on from non-security aware servers, (4) normally sets the CD query
its queries. header bit on its queries.
9. Security Considerations 9. Security Considerations
This document describes technical details of extensions to the Domain This document describes technical details of extensions to the Domain
Name System (DNS) protocol to provide data integrity and origin Name System (DNS) protocol to provide data integrity and origin
authentication, public key distribution, and optional transaction authentication, public key distribution, and optional transaction and
security. request security.
If should be noted that, at most, these extensions guarantee the It should be noted that, at most, these extensions guarantee the
validity of resource records, including KEY resource records, validity of resource records, including KEY resource records,
retrieved from the DNS. They do not magically solve other security retrieved from the DNS. They do not magically solve other security
problems. For example, using secure DNS you can have high confidence problems. For example, using secure DNS you can have high confidence
in the IP address you retrieve for a host name; however, this does in the IP address you retrieve for a host name; however, this does
not stop someone for substituting an unauthorized host at that not stop someone for substituting an unauthorized host at that
address or capturing packets sent to that address and falsely address or capturing packets sent to that address and falsely
responding with packets apparently from that address. Any reasonably responding with packets apparently from that address. Any reasonably
complete security system will require the protection of many other complete security system will require the protection of many
facets of the Internet. additional facets of the Internet.
References References
[NETSEC] - Network Security: PRIVATE Communications in a PUBLIC [NETSEC] - Network Security: PRIVATE Communications in a PUBLIC
World, Charlie Kaufman, Radia Perlman, & Mike Speciner, Prentice Hall World, Charlie Kaufman, Radia Perlman, & Mike Speciner,
Series in Computer Networking and Distributed Communications 1995. Prentice Hall Series in Computer Networking and
Distributed Communications 1995.
[PKCS1] - PKCS #1: RSA Encryption Standard, RSA Data Security, Inc., [PKCS1] - PKCS #1: RSA Encryption Standard, RSA Data Security,
3 June 1991, Version 1.4. Inc., 3 June 1991, Version 1.4.
[RFC1032] - Domain Administrators Guide, M. Stahl, November 1987 [RFC1032] - Stahl, M., "Domain Administrators Guide", RFC 1032,
November 1987.
[RFC1033] - Domain Administrators Operations Guide, M. Lottor, [RFC1033] - Lottor, M., "Domain Administrators Operations Guide",
November 1987 RRFC 1033, November 1987.
[RFC1034] - Domain Names - Concepts and Facilities, P. Mockapetris, [RFC1034] - Mockapetris, P., "Domain Names - Concepts and
November 1987 Facilities", STD 13, RFC 1034, November 1987.
[RFC1035] - Domain Names - Implementation and Specifications [RFC1035] - Mockapetris, P., "Domain Names - Implementation and
Specifications", STD 13, RFC 1035, November 1987.
[RFC1305] - Network Time Protocol (v3), D. Mills, April 9 1992. [RFC1305] - Mills, D., "Network Time Protocol (v3)", RFC 1305, March
1992.
[RFC1321] - The MD5 Message-Digest Algorithm, R. Rivest, April 16 [RFC1321] - Rivest, R., "The MD5 Message-Digest Algorithm", RFC 1321,
1992. April 1992.
[RFC1530] - Principles of Operation for the TPC.INT Subdomain: [RFC1530] - Malamud, C., and M. Rose, "Principles of Operation for
General Principles and Policy, C. Malamud, M. Rose, October 6 1993. the TPC.INT Subdomain: General Principles and Policy",
RFC 1530, October 1993.
[RFC1750] - Randomness Requirements for Security, D. Eastlake, S. [RFC1750] - Eastlake, D., Crocker, S., and J, Schiller, "Randomness
Crocker, J. Schiller, December 1994. Requirements for Security", RFC 1750, December 1994.
[RFC1825] - Security Architecture for the Internet Protocol, R. [RFC1825] - Atkinson, R., "Security Architecture for the Internet
Atkinson, August 9 1995. Protocol", RFC 1825, August 1995.
[RSA FAQ] - RSADSI Frequently Asked Questions periodic posting. [RSA FAQ] - RSADSI Frequently Asked Questions periodic posting.
Authors Addresses Authors' Addresses
Donald E. Eastlake, 3rd Donald E. Eastlake 3rd
CyberCash, Inc. CyberCash, Inc.
318 Acton Street 318 Acton Street
Carlisle, MA 01741 USA Carlisle, MA 01741 USA
Telephone: +1 508-287-4877 Telephone: +1 508-287-4877
+1 508-371-7148(fax) +1 508-371-7148(fax)
+1 703-620-4200(main office, Reston, Virginia, USA) +1 703-620-4200(main office, Reston, Virginia, USA)
EMail: dee@cybercash.com EMail: dee@cybercash.com
Charles W. Kaufman Charles W. Kaufman
Iris Associates Iris Associates
1 Technology Park Drive 1 Technology Park Drive
Westford, MA 01886 USA Westford, MA 01886 USA
Telephone: +1 508-392-5276 Telephone: +1 508-392-5276
EMail: charlie_kaufman@iris.com EMail: charlie_kaufman@iris.com
Expiration and File Name
This draft expires 29 July 1996.
Its file name is draft-ietf-dnssec-secext-09.txt.
Appendix: Base 64 Encoding Appendix: Base 64 Encoding
The following encoding technique is taken from RFC 1521 by N. Borenstein The following encoding technique is taken from RFC 1521 by N.
and N. Freed. It is reproduced here in an edited form for convenience. Borenstein and N. Freed. It is reproduced here in an edited form for
convenience.
A 65-character subset of US-ASCII is used, enabling 6 bits to be A 65-character subset of US-ASCII is used, enabling 6 bits to be
represented per printable character. (The extra 65th character, "=", represented per printable character. (The extra 65th character, "=",
is used to signify a special processing function.) is used to signify a special processing function.)
The encoding process represents 24-bit groups of input bits as output The encoding process represents 24-bit groups of input bits as output
strings of 4 encoded characters. Proceeding from left to right, a strings of 4 encoded characters. Proceeding from left to right, a
24-bit input group is formed by concatenating 3 8-bit input groups. 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 These 24 bits are then treated as 4 concatenated 6-bit groups, each
of which is translated into a single digit in the base 64 alphabet. of which is translated into a single digit in the base 64 alphabet.
Each 6-bit group is used as an index into an array of 64 printable 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 characters. The character referenced by the index is placed in the
output string. output string.
Table 1: The Base 64 Alphabet Table 1: The Base 64 Alphabet
Value Encoding Value Encoding Value Encoding Value Encoding Value Encoding Value Encoding Value Encoding Value Encoding
0 A 17 R 34 i 51 z 0 A 17 R 34 i 51 z
1 B 18 S 35 j 52 0 1 B 18 S 35 j 52 0
2 C 19 T 36 k 53 1 2 C 19 T 36 k 53 1
3 D 20 U 37 l 54 2 3 D 20 U 37 l 54 2
4 E 21 V 38 m 55 3 4 E 21 V 38 m 55 3
5 F 22 W 39 n 56 4 5 F 22 W 39 n 56 4
6 G 23 X 40 o 57 5 6 G 23 X 40 o 57 5
7 H 24 Y 41 p 58 6 7 H 24 Y 41 p 58 6
 End of changes. 108 change blocks. 
445 lines changed or deleted 404 lines changed or added

This html diff was produced by rfcdiff 1.41. The latest version is available from http://tools.ietf.org/tools/rfcdiff/