draft-ietf-dnssec-secext-03.txt   draft-ietf-dnssec-secext-04.txt 
Donald E. Eastlake 3rd +1 508-287-4877(tel) dee@cybercash.com
318 Acton Street +1 508-371-7148(fax) dee@world.std.com
Carlisle, MA 01741 USA +1 703-620-4200(main office, Reston, VA)
DNS Security Working Group Donald E. Eastlake, 3rd DNS Security Working Group Donald E. Eastlake, 3rd
INTERNET-DRAFT DEC INTERNET-DRAFT CyberCash
Charles W. Kaufman Charles W. Kaufman
Iris Iris
Domain Name System Protocol Security Extensions Domain Name System Security Extensions
------ ---- ------ -------- -------- ---------- ------ ---- ------ -------- ----------
Status of This Document Status of This Document
This draft, file name draft-ietf-dnssec-secext-03.txt, is intended to This draft, file name draft-ietf-dnssec-secext-04.txt, is intended to
be become a proposed standard RFC. Distribution of this document is be become a Proposed Standard RFC. Distribution of this document is
unlimited. Comments should be sent to the DNS Security Working Group unlimited. Comments should be sent to the DNS Security Working Group
mailing list <dns-security@tis.com> or to the authors. mailing list <dns-security@tis.com> or to the authors.
This document is an Internet-Draft. Internet-Drafts are working This document is an Internet-Draft. Internet-Drafts are working
documents of the Internet Engineering Task Force (IETF), its areas, documents of the Internet Engineering Task Force (IETF), its areas,
and its working groups. Note that other groups may also distribute and its working groups. Note that other groups may also distribute
working documents as Internet-Drafts. working documents as Internet-Drafts.
Internet-Drafts are draft documents valid for a maximum of six Internet-Drafts are draft documents valid for a maximum of six
months. Internet-Drafts may be updated, replaced, or obsoleted by months. Internet-Drafts may be updated, replaced, or obsoleted by
skipping to change at page 2, line 14 skipping to change at page 2, line 14
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
non-security aware DNS servers. non-security aware DNS servers in many cases.
The extensions also provide for the storage of authenticated public The extensions also provide for the storage of authenticated public
keys in the DNS. This storage of keys can support a general public keys in the DNS. This storage of keys can support general public key
key distribution service as well as DNS security. The stored keys distribution service as well as DNS security. The stored keys enable
enable security aware resolvers to learn the authenticating key of security aware resolvers to learn the authenticating key of zones in
zones in addition to keys for which they are initially configured. addition to keys for which they are initially configured. Keys
Keys 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.
Acknowledgements Acknowledgements
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: Madelyn Badger, order) to this draft are gratefully acknowledged:
Matt Crawford, James M. Galvin, Olafur Gudmundsson, Sandy Murphy,
Masataka Ohta, Michael A. Patton, Jeffrey I. Schiller. Madelyn Badger, Matt Crawford, James M. Galvin, Olafur
Gudmundsson, Sandy Murphy, Masataka Ohta, Michael A. Patton,
Jeffrey I. Schiller.
Table of Contents Table of Contents
Status of This Document....................................1 Status of This Document....................................1
Abstract...................................................2 Abstract...................................................2
Acknowledgements...........................................2 Acknowledgements...........................................2
Table of Contents..........................................3 Table of Contents..........................................3
1. Introduction............................................5 1. Overview of Contents....................................5
2. Brief Overview of the Extensions.......................6 2. Overview of the Extensions.............................6
2.1 Services Not Provided..................................6 2.1 Services Not Provided..................................6
2.2 Key Distribution.......................................6 2.2 Key Distribution.......................................6
2.3 Data Origin Authentication and Integrity...............7 2.3 Data Origin Authentication and Integrity...............7
2.3.2 The SIG Resource Record..............................7 2.3.1 The SIG Resource Record..............................7
2.3.3 Authenticating Name Non-existence....................8 2.3.2 Authenticating Name and Type Non-existence...........8
2.3.5 Special Problems With Time-to-Live...................8 2.3.3 Special Considerations With Time-to-Live.............8
2.3.5 Signers Other Than The Zone..........................9 2.3.4 Special Considerations at Delegation Points..........9
2.4 DNS Transaction Authentication.........................9 2.3.5 Special Considerations with CNAME RRs................9
2.3.6 Signers Other Than The Zone..........................9
2.4 DNS Transaction Authentication........................10
3. The KEY Resource Record................................10 3. The KEY Resource Record................................11
3.1 KEY RDATA format......................................10 3.1 KEY RDATA format......................................11
3.2 Object Types and DNS Names and Keys...................10 3.2 Object Types, DNS Names, and Keys.....................11
3.3 The KEY RR Flag Octet.................................11 3.3 The KEY RR Flag Field.................................12
3.4 The KEY Algorithm Version and MD5/RSA Algorithm.......12 3.4 The Protocol Octet....................................14
3.5 KEY RRs in the Construction of Responses..............13 3.5 The KEY Algorithm Number and the MD5/RSA Algorithm....14
3.6 File Representation of KEY RRs........................14 3.6 Interaction of Flags, Algorithm, and Protocol Bytes...15
3.7 KEY RRs in the Construction of Responses..............16
3.8 File Representation of KEY RRs........................16
4. The SIG Resource Record................................15 4. The SIG Resource Record................................18
4.1 SIG RDATA Format......................................15 4.1 SIG RDATA Format......................................18
4.1.1 Signature Format....................................17 4.1.1 Signature Data......................................20
4.1.2 SIG RRs Covering Type ANY...........................18 4.1.2 MD5/RSA Algorithm Signature Calculation.............21
4.1.3 Zone Transfer (AXFR) SIG............................18 4.1.3 Zone Transfer (AXFR) SIG............................22
4.1.4 Transaction SIGs....................................19 4.1.4 Transaction SIGs....................................22
4.2 SIG RRs in the Construction of Responses..............19 4.2 SIG RRs in the Construction of Responses..............23
4.3 Processing Responses with SIG RRs.....................20 4.3 Processing Responses and SIG RRs......................23
4.4 File Representation of SIG RRs........................21 4.4 Signature Expiration, TTLs, and Validity..............24
4.5 File Representation of SIG RRs........................25
5. Non-existent Names.....................................22 5. Non-existent Names and Types...........................26
5.1 The NXD Resource Record...............................22 5.1 The NXT Resource Record...............................26
5.2 NXD RDATA Format......................................23 5.2 NXT RDATA Format......................................27
5.3 Example...............................................23 5.3 Example...............................................27
5.4 Interaction of NXD RRs and Wildcard RRs...............23 5.4 Interaction of NXT RRs and Wildcard RRs...............28
5.5 Blocking NXD Pseudo-Zone Transfers....................24 5.5 Blocking NXT Pseudo-Zone Transfers....................28
5.6 Special Considerations at Delegation Points...........29
6. How to Resolve Securely................................25 6. The AD and CD Bits and How to Resolve Securely.........30
6.1 Boot File Format......................................25 6.1 The AD and CD Header Bits.............................30
6.2 Chaining Through Zones................................25 6.2 Boot File Format......................................31
6.3 Secure Time...........................................27 6.3 Chaining Through Zones................................32
7. Operational Considerations.............................28 6.4 Secure Time...........................................33
7.1 Key Size Considerations...............................28
7.2 Key Storage...........................................28
7.3 Key Generation........................................29
7.4 Key Lifetimes.........................................29
7.5 Signature Lifetime....................................30
7.6 Root..................................................30
8. Conformance............................................31 7. Operational Considerations.............................34
8.1 Server Conformance....................................31 7.1 Key Size Considerations...............................34
8.2 Resolver Conformance..................................31 7.2 Key Storage...........................................35
7.3 Key Generation........................................35
7.4 Key Lifetimes.........................................35
7.5 Signature Lifetime....................................36
7.6 Root..................................................36
9. Security Considerations................................32 8. Conformance............................................37
References................................................32 8.1 Server Conformance....................................37
8.2 Resolver Conformance..................................37
Authors Addresses.........................................33 9. Security Considerations................................38
Expiration and File Name..................................33 References................................................38
Appendix: Base 64 Encoding................................34 Authors Addresses.........................................39
Expiration and File Name..................................39
1. Introduction Appendix: Base 64 Encoding................................40
This draft describes extensions of the DNS protocol to support DNS 1. Overview of Contents
security and public key distribution.
This draft assumes that the reader is familiar with the Domain Name This draft describes extensions of the Domain Name System (DNS)
System, particularly as described in RFCs 1034 and 1035. protocol to support DNS security and public key distribution. It
assumes that the reader is familiar with the Domain Name System,
particularly as described in RFCs 1034 and 1035.
2. Brief Overview of the Extensions Section 2 provides an overview of the extensions and the key
distribution, data origin authentication, and transaction security
they provide.
The DNS protocol extensions provide three distinct services: key Section 3 discusses the KEY resource record, its structure, use in
distribution as described in section 2.2 below, data origin DNS responses, and file representation. These resource records
authentication as described in section 2.3 below, and transaction represent the pubic keys of entities named in the DNS and are used
authentication, described in section 2.4 below. for key distribution.
Section 4 discusses the SIG digital signature resource record, its
structure, use in DNS responses, and file representation. These
resource records are used to authenticate other resource records in
the DNS and optionally to authenticate DNS transactions.
Section 5 discusses the NXT resource record and its use in DNS
responses. The NXT RR permits authenticated denial in the DNS of the
existence of a name or of a particular type for an existing name.
Section 6 discusses how a resolver can be configured with a starting
key or keys and proceed to securely resolve DNS requests.
Interactions between resolvers and servers are discussed for all
combinations of security aware and security non-aware. Two
additional query header bits are defined for signaling between
resolvers and servers.
Section 7 reviews a variety of operational considerations including
key generation, lifetime, and storage.
Section 8 defines levels of conformance for resolvers and servers.
Section 9 provides a few paragraphs on overall security
considerations.
An Appendix is provided that gives some details of base64 encoding
which is used in the file representation of some RR's defined in this
draft.
2. Overview of the Extensions
The Domain Name System (DNS) protocol security extensions provide
three distinct services: key distribution as described in Section 2.2
below, data origin authentication as described in Section 2.3 below,
and transaction authentication, described in Section 2.4 below.
Special considerations related to time to live, CNAMEs, and
delegation points are also discussed in Section 2.3.
2.1 Services Not Provided 2.1 Services Not Provided
It is part of the design philosophy of the DNS that the data in it is It is part of the design philosophy of the DNS that the data in it is
public and that the DNS gives the same answers to all inquirers. public and that the DNS gives the same answers to all inquirers.
Following this philosophy, no attempt has been made to include any Following this philosophy, no attempt has been made to include any
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 an IP network level security protocol for which there available via other protocols such as a network level security
is current an IETF working group.) protocol providing confidentiality.)
2.2 Key Distribution 2.2 Key Distribution
The resource records 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 general public key distribution
mechanism in support of the data origin authentication and mechanism in support of the data origin authentication and
transaction authentication DNS services as well as other security transaction authentication DNS services as well as other security
services such as IP level security. services.
The syntax of a KEY resource record is described in Section 3. It The syntax of a KEY resource record (RR) is described in Section 3.
includes the name of the entity the key is associated with It includes an algorithm identifier, flags indicating the type of
(frequently but not always the KEY resource record owner name), an entity the key is associated with and/or asserting that there is no
algorithm identifier, flags indicating the type of entity the key is key associated with that entity, and the actual public key
associated with and/or asserting that there is no key associated with parameters.
that entity, and the actual public key parameters.
Under conditions described in Section 3, security aware DNS servers Under conditions described in Section 3, security aware DNS servers
will automatically attempt to return KEY resources as additional may automatically attempt to return KEY resources as additional
information, along with those actually requested, to minimize query information, along with those resource records actually requested, to
traffic. minimize the number of queries needed.
2.3 Data Origin Authentication and Integrity 2.3 Data Origin Authentication and Integrity
Security is provided by associating with resource records in the DNS Security is provided by associating with resource records in the DNS
cryptographically generated digital signatures. Commonly, there will cryptographically generated digital signatures. Commonly, there will
be a single private key that signs for an entire zone. If a security be a single private key that signs for an entire zone. If a security
aware resolver reliably learns the public key of the zone, it can aware resolver reliably learns the public key of the zone, it can
verify that all the data read was properly authorized and is verify, for any data read from that zone, that it was properly
reasonably current. The expected implementation is for the zone authorized and is reasonably current. The expected implementation is
private key to be kept off-line and used to re-sign all of the for the zone private key to be kept off-line and used to re-sign all
records in the zone periodically. of the records in the zone periodically.
The data origin authentication key belongs to the zone and not to the The data origin authentication key belongs to the zone and not to the
servers that store copies of the data. That means compromise of a servers that store copies of the data. That means compromise of a
server or even all servers for a zone will not affect the degree of server or even all servers for a zone will not necessarily affect the
assurance that a resolver has that the data is genuine. degree of assurance that a resolver has that the data is genuine.
A resolver can learn the public key of a zone either by reading it 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. From that, be configured with at least the public key of one zone that it can
it can securely read the public keys of other zones if the use to authenticate signatures. From that, it can securely read the
intervening zones in the DNS tree are secure. It is in principle public keys of other zones if the intervening zones in the DNS tree
more secure to have the resolver manually configured with the public are secure. (It is in principle more secure to have the resolver
keys of multiple zones, since then the compromise of a single zone manually configured with the public keys of multiple zones, since
would not permit the faking of information from other zones. It is then the compromise of a single zone would not permit the faking of
also more administratively cumbersome, however, particularly when information from other zones. It is also more administratively
public keys change. cumbersome, however, particularly when public keys change.)
Adding origin authentication and integrity requires no change to the Adding origin authentication and integrity requires no change to the
"on-the-wire" DNS protocol beyond the addition of the signature "on-the-wire" DNS protocol beyond the addition of the signature
resource types (and, as a practical matter, the key resource type resource types (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 could existing resolver and server implementations so long as they can
support the additional resource types. support the additional resource types (see Section 8) with the one
exception that CNAME referals can not be authenticated if they are
from non-security aware servers (see Section 2.3.5).
If signatures are always separately retrieved and verified when If signatures are always separately retrieved and verified when
retrieving the information they authenticate, there will be more retrieving the information they authenticate, there will be more
trips to the server and performance will suffer. To avoid this, trips to the server and performance will suffer. To avoid this,
security aware servers mitigate that degradation by automatically security aware servers mitigate that degradation by always sending
sending exactly the signature(s) needed. the signature(s) needed.
2.3.2 The SIG Resource Record 2.3.1 The SIG Resource Record
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 zone supporting signed data will have associated with Every name in a zone supporting signed data will have associated with
it at least one SIG resource record for each resource type under that it at least one SIG resource record for each resource type under that
name. A security aware server supporting the performance enhanced name. A security aware server supporting the performance enhanced
version of the DNS protocol security extensions will attempt to version of the DNS protocol security extensions will attempt to
return, with all records retrieved, the corresponding SIGs. If a return, with all records retrieved, the corresponding SIGs. If a
server does not support the protocol, the resolver must retrieve all server does not support the protocol, the resolver must retrieve all
the SIG records for a name and select the one or ones that sign the the SIG records for a name and select the one or ones that sign the
resource record(s) that resolver is interested in. resource record(s) that resolver is interested in.
2.3.3 Authenticating Name 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 for in a zone. "Data origin" authentication is not obviously provided
the non-existence of a domain name in a zone. This gap is filled by for the non-existence of a domain name in a zone or the non-existence
the NXD RR which authenticatably asserts a range of non-existent of a type for an existing name. This gap is filled by the NXT RR
names in a zone. The owner of the NXD RR is the start of such a which authenticatably asserts a range of non-existent names in a zone
ranger and its RDATA is the end of the range; however, there are and the non-existence types for the initial name in that range.
additional complexities due to wildcards.
Section 6 below covers the NXD RR. Section 5 below covers the NXT RR.
2.3.5 Special Problems With Time-to-Live 2.3.3 Special Considerations With Time-to-Live
A digital signature will fail to verify if any change has occurred to A digital signature will fail to verify if any change has occurred to
the data between the time it was originally signed and the time the the data between the time it was originally signed and the time the
signature is verified. This conflicts with our desire to have the signature is verified. This conflicts with our desire to have the
time-to-live field tick down when resource records are cached. time-to-live field tick down when resource records are cached.
This could be avoided by leaving the time-to-live out of the digital This could be avoided by leaving the time-to-live out of the digital
signature, but that would allow unscrupulous secondaries to set signature, but that would allow unscrupulous servers to set
arbitrarily long time to live values undetected. Instead, we include arbitrarily long time to live values undetected. Instead, we include
the "original" time-to-live in the signature and communicate that the "original" time-to-live in the signature and communicate that
data in addition to the current time-to-live. Unscrupulous servers data in addition to the current time-to-live. Unscrupulous servers
under this scheme can manipulate the time to live but a security under this scheme can manipulate the time to live but a security
aware resolver will bound the TTL value it uses at the original aware resolver will bound the TTL value it uses at the original
signed value. Separately, signatures include a time signed and an signed value. Separately, signatures include a time signed and an
expiration time. A resolver that knows an absolute time can expiration time. A resolver that knows the absolute time can
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, singe non-security aware servers must still be for the TTL, however, since non-security aware servers must still be
supported. supported.
2.3.5 Signers Other Than The Zone 2.3.4 Special Considerations at Delegation Points
There are two general cases where a SIG resource record is signed by DNS security would like to view each zone as a unit of data
other than the zone private key. One is for future support of completely under the control of the zone owner and signed by the
dynamic update where an entity is permitted to authenticate/update zone's key. But the operational DNS views the leaf nodes in a zone
its own records. The public key of the entity must be present in the which are also the apex nodes of a subzone (i.e., delegation points)
DNS and be appropriately signed but the other RR(s) may be signed as "really" belonging to the subzone. These nodes occur in two
with the entity's key. The other is for support of transaction master files and will have RRs signed by both the upper and lower
authentication as described in Section 2.3 below. 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
below a delegation point.
In general, the KEY RR from the superzone is authoritative while for
all other RRs, the data from the subzone is more authoritative. To
avoid conflicts, only the KEY RR in the superzone should be signed
and the NS and any A (glue) RRs should only be signed in the subzone
along with the SOA and any other RRs that have the zone name as
owner. The only exception is the NXT RR type that will always appear
differently and authoritatively in both the superzone and subzone, if
both are secure, as described in Section 5.
2.3.5 Special Considerations with CNAME RRs
There is a significant problem with security related RRs with the
same owner name as a CNAME RR when retrieved from a non-security-
aware server. In particular, an initial retrieval for the CNAME or
any other type will not retrieve an associated signature, key, or NXT
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
CNAME as additional info. In particular, a specific retrieval for
type SIG will not get the SIG, if any, at the original domain name
but rather an SIG at the target name.
In general, security aware servers must be used to securely CNAME in
DNS. Security aware servers must (1) allow KEY, SIG, and NXT RRs
along with CNAME RRs, (2) suppress CNAME processing on retrieval of
these types as well as on retrieval of the type CNAME, and (3)
automatically return SIG RRs authenticating the CNAME or CNAMEs
encountered in resolving a query.
2.3.6 Signers Other Than The Zone
There are two cases where a SIG resource record is signed by other
than the zone private key. One is for future support of dynamic
update where an entity is permitted to authenticate/update its own
records. The public key of the entity must be present in the DNS and
be appropriately signed but the other RR(s) may be signed with the
entity's key. The other is for support of transaction authentication
as described in Section 2.4 below.
2.4 DNS Transaction Authentication 2.4 DNS Transaction Authentication
The data origin authentication service described above protects The data origin authentication service described above protects
resource records but provides no protection for DNS message headers. resource records but provides no protection for DNS message headers.
If header bits are falsely set by a server, there is little that can If header bits are falsely set by a server, there is little that can
be done. However, it is possible to add transaction authentication. be done. However, it is possible to add transaction authentication.
Such authentication means that a resolver can be sure it is getting Such authentication means that a resolver can be sure it is at least
messages from the server it thinks it queried and that the response getting messages from the server it thinks it queried, that the
is from the query it sent and that these messages have not been response is from the query it sent, and that these messages have not
diddled in transit. been diddled in transit.
This is accomplished by optionally adding a special SIG resource This is accomplished by optionally adding a special SIG resource
record to the end of the reply which digitally signs the record to the end of the reply which digitally signs the
concatenation of the server's response and the resolver's query. The concatenation of the server's response and the resolver's query. The
private key used belongs to the host composing the reply, not to the private key used belongs to the host composing the reply, not to the
zone being queried. The corresponding public key is stored in and zone being queried. The corresponding public key is stored in and
retrieved from the DNS. Because replies are highly variable, message retrieved from the DNS. Because 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.
DNS level transaction authentication would be unnecessary if a lower DNS level transaction authentication would be unnecessary if a lower
level (i.e., IP level) end-to-end security protocol were available. level (i.e., IP level) end-to-end security protocol were available.
However, such a protocol is not yet standardized and when it is, However, such a protocol is not yet standardized and when it is,
there will be a considerable time during which there will be systems there will be a significant time during which there will be systems
on which it will be hard to add IPSEC but relatively easy to replace on which it will be hard to add such a protocol but relatively easy
the DNS components. to replace the DNS components.
3. The KEY Resource Record 3. The KEY Resource Record
The KEY RR is used to document a key that is associated with a DNS The KEY resource record (RR) is used to document a key that is
name. It will be a public key as only public keys are stored in the associated with a Domain Name System (DNS) name. It will be a public
DNS. This can be the public key of a zone owner, of a host or other key as only public keys are stored in the DNS. This can be the
end entity, or a user. A KEY RR is, like any other RR, authenticated public key of a zone, of a host or other end entity, or a user. A
by a SIG RR. Security aware DNS implementations should be designed KEY RR is, like any other RR, authenticated by a SIG RR. Security
to handle at least two simultaneously valid keys of the same type aware DNS implementations MUST be designed to handle at least two
associated with a name. simultaneously valid keys of the same type associated with a name.
The type number for the KEY RR is 25. The type number for the KEY RR is 25.
3.1 KEY RDATA format 3.1 KEY RDATA format
The RDATA for a KEY RR consists of an object name, flags, the The RDATA for a KEY RR consists of flags, a protocol octet, the
algorithm version, and the public key itself. The format is as algorithm number, and the public key itself. The format is as
follows: 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
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| / | flags | protocol | algorithm |
+- object name +---------------+---------------+
/ | flags | algorithm |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| / | /
+ - public key / / public key /
/ / / /
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-/ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-|
The object name, and the flags octets are described in Sections 3.2 The meaning of the KEY RR owner name, flags, and protocol octet are
and 3.3 below respectively. The flags must be examined before any described in Sections 3.2, 3.3 and 3.4 below respectively. The flags
following data as they control the format and even whether there is and protocol must be examined before any following data as they
any following data. The algorithm and public key fields are control the format and even whether there is any following data. The
described in Section 3.4. The format of the public key is algorithm algorithm and public key fields are described in Section 3.5. The
dependent. format of the public key is algorithm dependent.
3.2 Object Types and DNS Names and Keys 3.2 Object Types, DNS Names, and Keys
The public key in a KEY RR belongs to the object named in the object The public key in a KEY RR belongs to the object named in the owner
name field. Frequently this will also be the owner name of the KEY name.
RR. But they will be different in the case of the key or keys stored
under a zone's name for the zone's superzone or keys that are stored
for cross certification of other zones.
The DNS object name may refer to up to three different things. For This DNS name may refer to up to three different things. For
example, dee.lkg.dec.com could be (1) a zone, (2) a host or other end example, dee.cybercash.com could be (1) a zone, (2) a host or other
entity , and (3) the mapping into a DNS name of the user or account end entity , and (3) the mapping into a DNS name of the user or
dee@lkg.dec.com . Thus, there are flags in the KEY RR to indicate account dee@cybercash.com . Thus, there are flags in the KEY RR to
with which of these roles the object name and public key are indicate with which of these roles the owner name and public key are
associated as described below. associated as described below.
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
contexts, such overloading of a name is discouraged. It is also contexts, 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 private key be kept on line and thereby become much require that the private key be kept on line and thereby become much
more vulnerable. more vulnerable.
It would be desirable for the growth of DNS to be managed so that It would be desirable for the growth of DNS to be managed so that
additional possible simultaneous uses for names are NOT added. New additional possible simultaneous uses for names are NOT added. New
uses should be distinguished by exclusive domains. For example, all uses should be distinguished by exclusive domains. For example, all
IP autonomous system numbers have been mapped into the in-as.arpa IP autonomous system numbers have been mapped into the in-as.arpa
domain [draft-ietf-dnssec-as-map-*.txt] and all telephone numbers in domain [draft-ietf-dnssec-as-map-*.txt] and all telephone numbers in
the world have been mapped into the tpc.int domain [RFC 1530]. This the world have been mapped into the tpc.int domain [RFC 1530]. This
is much preferable to having the same name possibly be an autonomous is much preferable to having the same name possibly be an autonomous
system number, telephone number, and/or host as well as a zone and a system number, telephone number, and/or host as well as a zone and a
user. user.
In addition to the name type bits, there are three control bits, the In addition to the name type bits, there are additional control bits,
"no key" bit, the "experimental" bit, and the "signatory" bit, as the "no key" bit, the "experimental" bit, the "signatory" field,
described below. etc., as described below.
3.3 The KEY RR Flag Octet 3.3 The KEY RR Flag Field
In the "flags" field: In the "flags" field:
Bit 0 is the "no key" bit. If this bit is on, there is no key Bit 0 is the "no key" bit. If this bit is on, there is no key
information and the RR stops with the flags octet. By the use of information and the RR stops after the algorithm octet. By the use
this bit, a signed KEY RR can authenticatably assert that, for of this bit, a signed KEY RR can authenticatably assert that, for
example, a zone is not secured. example, a zone is not secured.
Bits 1 is the "experimental" bit. Keys may be associated with Bit 1 is the "experimental" bit. It is ignored if the "no key"
zones, entities, or users for experimental, trial, or optional use, bit is on and the following description assumes the "no key" bit to
in which case this bit will be one. If this bit is a zero, it means be off. Keys may be associated with zones, entities, or users for
that the use or availability of security based on the key is experimental, trial, or optional use, in which case this bit will be
"mandatory". Thus, if this bit is off for a zone, the zone should be one. If this bit is a zero, it means that the use or availability of
assumed secured by SIG RRs and any responses indicating the zone is security based on the key is "mandatory". Thus, if this bit is off
not secured should be considered bogus. Similarly, if this bit were for a zone key, the zone should be assumed secured by SIG RRs and any
off for a host key and attempts to negotiate IP-security with the responses indicating the zone is not secured should be considered
host produced indications that IP-security was not supported, it bogus. If this bit is a one for a host or end entity, it might
should be assumed that the host has been compromised or sometimes operate in a secure mode and at other times operate without
communications with it are being spoofed. On the other hand, if this security. The experimental bit, like all other aspects of the KEY
bit were a one, the host might very well sometimes operate in a
secure mode and at other times operate without the availability of
IP-security. The experimental bit, like all other aspects of the KEY
RR, is only effective if the KEY RR is appropriately signed by a SIG RR, is only effective if the KEY RR is appropriately signed by a SIG
RR. The experimental bit must be zero for safe secure operation and RR. The experimental bit must be zero for safe secure operation and
should only be a one for a minimal transition period. should only be a one for a minimal transition period.
Bit 2 is the "signatory" bit. It indicates that the key can Bits 2-4 are reserved and must be zero.
validly sign RRs of the same name. If the owner name is a wildcard,
then RRs with any name which is in the wildcard's scope can be signed
including NS and corresponding zone KEY RRs to carve out a subzone.
This bit is meaningless for zone keys which always have authority to
sign any RRs in the zone. The signatory bit, like all other aspects
of the KEY RR, is only effective if the KEY RR is appropriately
signed by a SIG RR.
Bits 3-4 are reserved and must be zero. If they are found non-
zero, they should be ignored and the KEY RR used as indicated by the
other flags.
Bit 5 on indicates that this is a key associated with a "user" Bit 5 on indicates that this is a key associated with a "user"
or "account" at an end entity, usually a host. The coding of the or "account" at an end entity, usually a host. The coding of the
owner name is that used for the responsible individual mailbox in the owner name is that used for the responsible individual mailbox in the
SOA record: The owner name is the user name as the name of a node SOA record: The owner name is the user name as the name of a node
under the entity name. For example, "j.random_user" on under the entity name. For example, "j.random_user" on
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. It could be KEY RR with name j\.random_user.host.subdomain.domain. It could be
used in an IP-security protocol where authentication of a user was used in an security protocol where authentication of a user was
desired. This key would be useful in IP or other security for a user desired. This key would be useful in IP or other security for a user
level service such a telnet, ftp, rlogin, etc. level service such a telnet, ftp, 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 a zone "entity" whose name is the RR owner name. This will commonly be
host but could, in some parts of the DNS tree, be some other type of a host but could, in some parts of the DNS tree, be some other type
entity such as an Autonomous System [draft-ietf-dnssec-as-map-*.txt]. of entity such as an Autonomous System [draft-ietf-dnssec-as-map-
This is the public key used in connection with the optional DNS *.txt]. This is the public key used in connection with the optional
transaction authentication service that can be used if the owner name DNS transaction authentication service that can be used if the owner
is a DNS server host. It could also be used in an IP-security name is a DNS server host. It could also be used in an IP-security
protocol where authentication of a host was desired. protocol where authentication of a host was desired such as routing,
NTP, etc.
Bit 7 on indicates that this is a zone key for the zone whose Bit 7 is the "zone" bit and indicates that this is a zone key
name is the KEY RR owner name. This is the fundamental type of DNS for the zone whose name is the KEY RR owner name. This is the
data origin authentication public key. fundamental type of DNS data origin authentication public key.
3.4 The KEY Algorithm Version and MD5/RSA Algorithm Bits 8 is reserved to be the "IPSEC" bit and indicate that this
key is valid for use in a future IP level security protocol. 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 KEY RR
if the entity or user bits are on. The 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 IPSEC.
This octet is the key algorithm version parallel to the same field Bits 9-11 are reserved and must be zero.
for the SIG resource. The MD5/RSA algorithm described in this draft
is number 1. Version numbers 2 through 253 are available for Bits 12-15 are the "signatory" field. If non-zero, it indicates
assignment should sufficient reason arise. However, the designation that the key can validly sign RRs of the same name. If the owner
of a new version could have a major impact on interoperability and name is a wildcard, then RRs with any name which is in the wildcard's
requires an IETF standards action. Version 254 is reserved for scope can be signed. Fifteen different non-zero values are possible
private use and will never be assigned a specific algorithm. For for this field and any differences in their meaning are reserved for
version 254, the public key area shown in the packet diagram above definition in connection with possible future DNS dynamic update or
will actually begin with an Object Identifier (OID) indicating the other new DNS commands. This field is meaningless for zone keys
private algorithm in use and the remainder of the combined area is which always have authority to sign any RRs in the zone. The
whatever is required by that algorithm. Algorithm versions 0 and 255 signatory field, like all other aspects of the KEY RR, is only
are reserved. effective if the KEY RR is appropriately signed by a SIG RR.
3.4 The Protocol Octet
It is anticipated that keys stored in DNS will be used in conjunction
with Internet protocols other than DNS (keys with zone bit or
signatory field non-zero) and IPSEC (keys with IPSEC bit set). The
protocol octet is provided to indicate that a key is valid for such
use and, for end entity keys or the host part of user keys, that the
secure version of that protocol is implemented on that entity or
host.
Values between 1 and 191 decimal inclusive are available for
assignment by IANA for such protocols. The 63 values between 192 and
254 inclusive will not be assigned to a specific protocol and are
available for experimental use under bilateral agreement. Value 0
indicates, for a particular key, that it is not valid for any
particular additional protocol beyond those indicated in the flag
field. And value 255 indicates that the key is valid for all assigned
protocols (those in the 1 to 191 range).
It is intended that new uses of DNS stored keys would initially be
implemented, and operational experience gained, using the
experimental range of the protocol octet. If demand for widespread
deployment for the indefinite future warrants, a value in the
assigned range would then be designated for the protocol. Finally,
(1) should the protocol become so widespread in conjunction with
other protocols which are indicated via the protocol octet and with
which it shares key values that duplicate RRs are a serious burden
and (2) should the protocol provide substantial facilities not
available in any protocol for which a flags field bit has been
allocated, then a flag field bit may be allocated to the protocol.
Then a key can be simultaneously indicated as valid for that protocol
and the entity or host can be simultaneously flagged as implementing
the secure version of that protocol, along with other 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 IP communication meaning that
additional flag field bits would only be assigned, when appropriate
as indicated above, to protocols with a store-and-forward nature
(other than DNS) or otherwise not subsumed into a point-to-point
paradigm.
3.5 The KEY Algorithm Number and the MD5/RSA Algorithm
This octet is the key algorithm parallel to the same field for the
SIG resource. The MD5/RSA algorithm described in this draft is
number 1. Numbers 2 through 253 are available for assignment should
sufficient reason arise. However, the designation of a new algorithm
could have a major impact on interoperability and requires an IETF
standards action. Number 254 is reserved for private use and will
never be assigned a specific algorithm. For number 254, the public
key area shown in the packet diagram above will actually begin with
an Object Identifier (OID) indicating the private algorithm in use
and the remainder of the area is whatever is required by that
algorithm. Values 0 and 255 are reserved.
If the no key bit is zero and the algorithm field is 1, indicating If the no key bit is zero and the algorithm field is 1, indicating
the MD5/RSA algorithm, the public key filed is structured as follows: the MD5/RSA algorithm, the public key field is 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
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| public key exponent |modulus length | | pub exp length| public key exponent /
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| / | /
+- modulus / +- modulus /
| / | /
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-/
The public key modulus field is a multiprecision unsigned integer. To promote interoperability, the exponent and modulus are limited to
The "modulus length" is an unsigned octet which is the actual modulus 2552 bits in length. The public key exponent is a variable length
length minus 64. This limits keys to a maximum of 255+64 or 319 unsigned integer. Its length in octets is represented as one octet
octets and a minimum of 64 octets. Although moduluses of less than if it is in the range of 1 to 255 and by a zero octet followed by a
512 significant bits are not permitted, due to the weak security they two octet unsigned length if it is longer than 255 bytes. The public
provide, they can be represented by using leading zeros. key modulus field is a multiprecision unsigned integer. The length
of the modulus can be determined from the RDLENGTH and the preceding
RDATA fields including the exponent. Leading zero bytes are
prohibited in the exponent and modulus.
3.5 KEY RRs in the Construction of Responses 3.6 Interaction of Flags, Algorithm, and Protocol Bytes
Various combinations of the no-key bit, algorithm byte, protocol
byte, and any protocol indicating flags (such as the reserved IPSEC
flag) are possible. (Not that the zone flag bit being on or the
signatory field being non-zero is effectively a DNS protocol flag
on.) The meaning of these combinations is indicated below:
NK = no key flag
AL = alogrithm byte
PR = protocols indicated by protocol byte or protocol flags
x represents any valid non-zero value.
AL PR NK Meaning
0 0 0 Illegal, claims key but has bad algorithm field.
0 0 1 Authenticates total lack of security for owner.
0 x 0 Illegal, claims key but has bad algorithm field.
0 x 1 Specified protocols insecure, others may be secure.
x 0 0 Useless. Gives key but no protocols to use it.
x 0 1 Useless. Denies key but for no protocols.
x x 0 Authenticates key for protocols and certifies
that those protocols are implemented with
security.
x x 1 Algorithm not understood for protocol.
(remember, in reference to the above table, that a protocol
byte of 255 means all protocols with protocol bytes assigned)
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 will include KEY RRs as additional
information in responses where appropriate including the following: information in responses where appropriate including the following:
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 will be included. If not all additional served by these name servers will be included as additional
info will fit, the KEY RR(s) have lower priority than type A or AAAA information. If not all additional info will fit, the KEY RR(s) have
glue RRs. higher priority than type A (or AAAA) glue RRs.
On retrieval of type A or AAAA RRs, the end entity KEY RR(s) (2) On retrieval of type A (or AAAA) RRs, the end entity KEY RR(s)
will be included. On inclusion of A or AAAA RRs as additional will be included. On inclusion of A (or AAAA) RRs as additional
information, their KEY RRs will also be included but with lower information, their KEY RRs will also be included but with lower
priority than the relevant A or AAAA RRs. priority than the relevant A (or AAAA) RRs.
3.6 File Representation of KEY RRs 3.8 File Representation of KEY RRs
KEY RRs may appear as lines in a zone data file. KEY RRs may appear as lines in a zone data file.
In the RDATA portion, the object name appears first. The flag field, protocol, and algorithm number octets are then
represented as unsigned integers. Note that if the "no key" flag is
The flag octet and algorithm version octets are then represented as on in the flags, nothing appears after the algorithm octet.
unsigned integers; however, if the "no key" flag is on in the flags,
nothing appears after the flag octet.
If the algorithm specified is the MD5/RSA algorithm, then the The remaining public key portion is represented in base 64 (see
exponent and modulus appear. The public key exponent is an unsigned Appendix) and may be divided up into any number of white space
integer from 3 to 16777215. The public key modulus can be quite separated substrings, down to single base 64 digits, which are
large, up to 319 octets. It is the last data field and is concatenated to obtain the full signature. These substrings can span
represented in base 64 (see Appendix) and may be divided up into any lines using the standard parenthesis.
number of white space separated substrings, down to single base 64
digits, which are concatenated to obtain the full signature. These
substrings can span lines using the standard parenthesis.
If an algorithm from 2 through 253 is specified, the public key Note that the public key may have internal sub-fields but these do
parameters required by that algorithm are given. If the algorithm not appear in the master file representation. For example, with
specified is number 254, then an OID appears followed by whatever is algorithm 1 there is a public exponent and then a modulus and with
required for the private algorithm. An implementation that does not algorithm 254, there will be an OID followed by algorithm dependent
understand a particular standard or private algorithm should attempt information.
to parse the rest of the line as one or more base 64 substrings to be
concatenated to yield the key parameters. Algorithm versions 0 and
255 are reserved.
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 DNS. As such it is the that data is authenticated in the secure Domain Name System (DNS). As
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
fully qualified domain name. This is done using cryptographic domain name. This is done using cryptographic techniques and the
techniques and the signer's private key. The signer is frequently signer's private key. The signer is frequently the owner of the zone
the owner of the zone from which the RR originated. from which the RR originated.
4.1 SIG RDATA Format 4.1 SIG RDATA Format
The RDATA portion of a SIG RR is as shown below. The integrity of The RDATA portion of a SIG RR is as shown below. The integrity of
the RDATA information is protected by the signature field. the RDATA information is protected by the signature field.
1 1 1 1 1 1 1 1 1 1 2 2 2 2 2 2 2 2 2 2 3 3 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
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| type covered | algorithm | labels | | type covered | algorithm | labels |
skipping to change at page 15, line 46 skipping to change at page 18, line 46
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| / | /
+- 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 version number is an octet specifying the digital The algorithm number is an octet specifying the digital signature
signature algorithm used. The MD5/RSA algorithm described in this algorithm used parallel to the algorithm octet for the KEY RR. The
draft is version 1. Version numbers 2 through 253 are available for MD5/RSA algorithm described in this draft is number 1. Numbers 2
assignment should sufficient reason arise to allocate them. However, through 253 are available for assignment should sufficient reason
the designation of a new version could have a major impact on the arise to allocate them. However, the designation of a new algorithm
interoperability of the global DNS systems and requires an IETF could have a major impact on the interoperability of the global DNS
standards action. Version 254 is reserved for private use and will systems and requires an IETF standards action. Number 254 is
never be assigned a specific algorithm. For version 254, the reserved for private use and will not be assigned a specific
"signature" area shown above will actually begin with an Object algorithm. For number 254, the "signature" area shown above will
Identified (OID) indicating the private algorithm in use and the actually begin with an Object Identifier (OID) indicating the private
remainder of the signature area is whatever is required by that algorithm in use and the remainder of the signature area is whatever
algorithm. Version numbers 0 and 255 are reserved. is required by that algorithm. 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, on root and not counting any initial "*" for a wildcard. If a secured
retrieval, the RR appears to have a longer name, the resolver can retrieval is the result of wild card substitution, it is necessary
tell it is the result of wildcard substitution. If the RR owner name for the resolver to use the original form of the name in verifying
appears to be shorter than the labels count, the SIG RR should be the digital signature. This field helps optimize the determination
considered corrupt and ignored. The maximum number of labels of the original form reducing the effort in authenticating signed
possible in the current DNS is 127 but the entire octet is reserved data.
and would be required should DNS names ever be expanded to 255
labels. If a secured retrieval is the result of wild card If, on retrieval, the RR appears to have a longer name than indicated
substitution, it is necessary for the resolver to use the original by "labels", the resolver can tell it is the result of wildcard
form of the name in verifying the digital signature. The field helps substitution. If the RR owner name appears to be shorter than the
optimize the determination of the original form reducing the effort labels count, the SIG RR should be considered corrupt and ignored.
in authentication signed data. The following table give some The maximum number of labels possible in the current DNS is 127 but
the entire octet is reserved and would be required should DNS names
ever be expanded to 255 labels. The following table give some
examples. The value of "labels" is at the top, the retrieved owner examples. The value of "labels" is at the top, the retrieved owner
name on the left, and the table entry is the name to use in signature name on the 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
authentication problems that caching servers would otherwise cause by (1) authentication problems that caching servers would otherwise
decrementing the real TTL field and security problems that cause by decrementing the real TTL field and (2) security problems
unscrupulous servers could otherwise cause by manipulating the real that unscrupulous servers could otherwise cause by manipulating the
TTL field. This original TTL is protected by the signature while the real TTL field. This original TTL is protected by the signature
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 the RRs need to all the signature is verified. This implies that the RRs for a
have the same TTL to start with. particular type need to all have the same TTL to start 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.)
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. start of 1 January 1970, GMT, ignoring leap seconds.
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 this quantity most significant 16 of the lest significant 24 bits of this quantity
in network order. in network order.
The "signer's name" field is the fully qualified domain name of the The "signer's name" field is the domain name of the signer generating
signer generating the SIG RR. This is frequently the zone which the SIG RR. This is frequently the zone which contained the RR(s)
contained the RR(s) being authenticated. being authenticated. The signer's name may be compressed with
standard DNS name compression when being transmitted over the
network.
The structured of the "signature" field depends on the algorithm The structure of the "signature" field is described below.
chosen and is described below for the MD5/RSA algorithm.
4.1.1 Signature Format 4.1.1 Signature Data
The actual signature portion of the SIG RR binds RDATA to all of the The actual signature portion of the SIG RR binds the other RDATA
"type covered" RRs with that owner name. These covered RRs are fields to all of the "type covered" RRs with that owner name. These
thereby authenticated. To accomplish this, a data sequence is covered RRs are thereby authenticated. To accomplish this, a data
constructed as follows: sequence is constructed as follows:
data = RDATA | RR(s)... data = RDATA | RR(s)...
where | is concatenation and RR(s) are all the expanded (no name where | is concatenation, RDATA is all the RDATA fields in the SIG RR
abbreviation) RR(s) of the type covered with the same owner name and itself before the signature, and RR(s) are all the RR(s) of the type
class as the SIG RR in canonical order. The canonical order for RRs covered with the same owner name and class as the SIG RR in canonical
is to sort them in ascending order as left justified unsigned octet form and order.
sequences where a missing octet sorts before a zero octet.
For purposes of DNS security, the canonical form for an RR is the RR
with domain names (1) fully expanded (no name compression via
pointers) and (2) all domain name letters set to lower case. For
purposes of DNS security, the canonical order for RRs is to sort them
in ascending order by name, then by type, as left justified unsigned
octet sequences in network (transmission) order where a missing octet
sorts before a zero octet. (See also ordering discussion in Section
5.1.) Within any particular name and type they are similarly sorted
by RDATA as a left justified unsigned octet sequence. EXCEPT that the
type SIG RR(s) covering any particular type appear immediately after
the other RRs of that type. Thus if at name a.b there is one A RR
and one KEY RR, their order with SIGs for concatenating the "data" to
be signed would be as follows:
a.b. A ....
a.b. SIG A ...
a.b. KEY ...
a.b. SIG KEY ...
(SIGs on type ANY should not be included in a zone.)
How this data sequence is processed into the signature is algorithm How this data sequence is processed into the signature is algorithm
dependent. dependent.
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 | hash ) ** e (mod n) signature = ( 01 | FF* | 00 | hash ) ** e (mod n)
where "|" is concatenation, "e" is the secret key exponent of the where MD5 is the message digest algorithm documented in RFC 1321, "|"
signer, and "n" is the public modulus that is the signer's public is concatenation, "e" is the secret key exponent of the signer, and
key. 01, FF, and 00 are fixed octets of the corresponding "n" is the public modulus of the signer's public key. 01, FF, and 00
hexadecimal value. The FF octet is repeated the maximum number of are fixed octets of the corresponding hexadecimal value. The FF
times such that the value of the quantity being exponentiated is one octet is repeated the maximum number of times such that the value of
octet shorter than the value of n. the quantity being exponentiated is one octet shorter than the value
of n.
The size of n, including most and least significant bits (which will 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 MUST be chosen such that the public exponent is less than or and e SHOULD be chosen such that the public exponent is small.
equal to 2**24 - 1 and SHOULD be chosen such that the public exponent
is small. Leading zeros bytes are not permitted in the MD5/RSA algorithm
signature.
The above specifications are similar to Public Key Cryptographic The above specifications are similar to Public Key Cryptographic
Standard #1 [PKCS1]. Standard #1 [PKCS1].
(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.2 SIG RRs Covering Type ANY
The SIG RR described above protects all the RRs with a particular
owner name, class, and type. Thus a server must supply them all to
convince a security aware resolver. However, an unscrupulous server
could claim there were no RRs of a particular type and class under an
owner name while presenting signed RRs of other types. To provide a
means of protection against this, one or more SIG RR is added for
each owner name that covers the type ANY. It is calculated as
indicated above except that all RRs for that owner name and SIG key,
except the SIG RR covering type ANY itself, are included in the data
string which is processed into the signature.
To allow for dynamic update, the zone key signed ANY SIG RR covers
only zone signed RRs. If RRs are added to a zone authenticated by an
entity or user key, then an ANY SIG RR signed by that key covering
the RRs signed by that key should be added.
4.1.3 Zone Transfer (AXFR) SIG 4.1.3 Zone Transfer (AXFR) SIG
The above SIG mechanisms assure the authentication of all the RRs of The above SIG mechanisms assure the authentication of all zone signed
a particular name, class and type and all the RRs of a particular RRs of a particular name, class and type. However, to efficiently
name, class and any type. However, to secure complete zone secure complete zone transfers, a SIG RR owned by the zone name must
transfers, a SIG RR owned by the zone name must be created with a be created with a type covered of AXFR that covers all zone signed
type covered of AXFR that covers all other zone signed RRs. It will RRs other than the SIG AXFR itself. It will be calculated by hashing
be calculated by hashing together all other static zone RRs, together all other static zone RRs, including SIGs. The RRs are
including SIGs. The RRs are ordered and concatenated for hashing as ordered and concatenated for hashing as described in Section 4.1.1.
described in Section 4.1.1. This SIG, other than having to be (See also ordering discussion in Section 5.1.)
calculated last of all zone key signed SIGs in the zone, is the same
as any other SIG. The AXFR SIG must be calculated last of all zone key signed SIGs in
the zone. It really belongs to the zone as a whole, not to the zone
name. The AXFR SIG is only retrieved as part of a zone transfer.
After validation of the AXFR SIG, the zone may be considered valid
without verification of all the internal zone SIGs in the zone;
however, any SIGs signed by entity keys or the like must still be
validated. The AXFR SIG is transmitted first in a zone transfer so
the receiver can tell immediately that they may be able to avoid
verifying other zone signed SIGs.
Dynamic zone RRs which might be added by some future dynamic zone Dynamic zone RRs which might be added by some future dynamic zone
update protocol and signed by an end entity or user key rather than a update protocol and signed by an end entity or user key rather than a
zone key (see Section 3.2) are not included. They originate in the zone key (see Section 3.2) are not included. They originate in the
network and will not, in general, be migrated to the recommended off network and will not, in general, be migrated to the recommended off
line zone signing procedure (see Section 8.2). Thus such dynamic RRs line zone signing procedure (see Section 8.2). Thus such dynamic RRs
are not directly signed by the zone and are not generally protected are not directly signed by the zone, are not included in the AXFR
against omission during zone transfers. SIG, and are not generally protected against omission during zone
transfers.
4.1.4 Transaction SIGs 4.1.4 Transaction 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.1) 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,
concatenated with the entire DNS query message that produced this concatenated with the entire DNS query message that produced this
response, including the query's DNS header. That is response, including the query's DNS header. That is
data = full response (less trailing message SIG) | full query data = full response (less trailing message SIG) | full query
Verification of the message SIG (which is signed by the server host Verification of the transaction SIG (which is signed by the server
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 and that the query and response were not tampered with in transit, that the
response corresponds to the intended query. response corresponds to the intended query, and that the response
comes from the queried server.
4.2 SIG RRs in the Construction of Responses 4.2 SIG RRs in the Construction of Responses
Security aware servers MUST, for every authoritative RR the query Security aware 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. If multiple such SIGs are available, there may be the requested RR. The following rules apply to the inclusion of SIG
insufficient space in the response to include them all. In this RRs in responses:
case, SIGs whose signer is the zone containing the RR MUST be given
highest priority and retained even if SIGs with other signers must be 1. when an RR is placed in a response, its SIG RR has a higher
dropped. priority for inclusion than other RRs that may need to be
included. If space does not permit its inclusion, the response
MUST be considered truncated.
2. when a SIG RR is present for an RR to be included in the
additional information section, the response MUST not be
considered truncated if space does not permit the inclusion of the
SIG RR.
Sending SIGs to authenticate non-authoritative data (glue records and Sending SIGs to authenticate non-authoritative data (glue records and
NS RRs for subzones) is optional and should be avoided if it will NS RRs for subzones) is unnecessary and must be avoided. Note that
lead to UDP DNS response truncation. KEYs for subzones are authoritative.
If a SIG covers any RR that would be in the answer section of the If a SIG covers any RR that would be in the answer section of the
response, its automatic inclusion MUST be the answer section. If it response, its automatic inclusion MUST be the answer section. If it
covers an RR that would appear in the authority section, its covers an RR that would appear in the authority section, its
automatic inclusion MUST be in the authority section. If it covers automatic inclusion MUST be in the authority section. If it covers
an RR that would appear in the additional information section it MUST an RR that would appear in the additional information section it MUST
appear in the additional information section. appear in the additional information section.
Optionally, DNS transactions may be authenticated by a SIG RR at the Optionally, DNS transactions may be authenticated by a SIG RR at the
end of the response in the additional information section (section end of the response in the additional information section (Section
4.1.4). Such SIG RRs are signed by the DNS server originating the 4.1.4). Such SIG RRs are signed by the DNS server originating the
response. Although the signer field must be the name of the response. Although the signer field must be the name of the
originating server host, the owner name, class, TTL, and original originating server host, the owner name, class, TTL, and original
TTL, are meaningless. The class and TTL fields can be zero. To save TTL, are meaningless. The class and TTL fields can be zero. To
space, the name should be root (a single zero octet). conserve space, the owner name SHOULD be root (a single zero octet).
If transaction authentication is desired, that SIG RR must be
considered higher priority than any other RR in the answer.
[There may be a problem with SIG and NXD RR's associated with domain 4.3 Processing Responses and SIG RRs
names that are CNAMEs. The DNS RFCs prohibit other types of RRs
appearing with a CNAME RR. This problem is being ignored until it is
clear if DNS servers will really have a problem with this.]
4.3 Processing Responses with SIG RRs The following rules apply to the processing of SIG RRs included in a
response:
If SIG RRs are received in response to a query explicitly specifying 1. a security aware resolver that receives a response from what it
the SIG type, no special processing is required but a security aware believes to be a security aware server via a communication path
client MAY wish to authenticate them by checking the signature and that it believes to be secure with the AD bit (see Section 6.1)
applying consistency checks. set, MAY choose to accept the RRs as received
without verifying the SIG RRs.
If SIG RRs are received in any other response, a security aware 2. in other cases, a security aware resolver SHOULD verify the SIG
client should check them using the public key of the signer. The RRs for the RRs of interest. This may involve initiating
result should then be verified against the appropriate other RRs additional queries for SIG or KEY RRs, at least in the case of
retrieved. 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
old resolvers.)
NOTE: Implementors might expect the SHOULD to be a MUST. However,
local policy or the calling application may not require the
security services.
3. If SIG RRs are received in response to a user query explicitly
specifying the SIG type, no special processing is required.
If the message does not pass reasonable checks or the SIG does not If the message does not pass reasonable checks or the SIG does not
check against the signed RRs, the SIG RR is invalid and should be check against the signed RRs, the SIG RR is invalid and should be
ignored. The time of receipt of the SIG RR must be in the inclusive ignored. If all of the SIG RR(s) purporting to authenticate a set of
range of the time signed and the signature expiration but the SIG can RRs are invalid, then the set of RR(s) is not authenticated.
be retained and remains locally valid until the expiration time plus
the authenticated TTL.
If the SIG RR is the last RR in a response in the additional 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 the response and the query that produced transaction signature of the response and the query that produced the
the response. It may be optionally checked and the message rejected response. It MAY be optionally checked and the message rejected if
if the checks fail. But even it the checks succeed, such a the checks fail. But even if the checks succeed, such a transaction
transaction authentication SIG does NOT authenticate any RRs in the authentication SIG does NOT authenticate any RRs in the message.
message. Only a proper SIG RR signets signed by the zone can Only a proper SIG RR signed by the zone can authenticate RRs. If a
authenticate RRs. If a resolver does not implement transaction SIGs, resolver does not implement transaction SIGs, it MUST at least ignore
it MUST at least ignore them without error. 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 and all other RRs verified by it should be considered authenticated.
in the response should be considered with suspicion.
4.4 File Representation of SIG RRs 4.4 Signature Expiration, TTLs, and Validity
Security aware servers must not consider SIG RRs to be authentic
after their expiration time and not consider any RR to be
authenticated after its signatures have expired. Within that
constraint, servers should continue to follow DNS TTL aging. Thus
authoritative servers should continue to follow the zone refresh and
expire parameters and a non-authoritative server should count down
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
that current time plus the TTL does not extend beyond the signature
expiration time. Thus, in general, the TTL on an transmitted RR
would be
min(sigExpTim,max(zoneMinTTL,min(originalTTL,currentTTL)))
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 problems as described file [RFC1033] but there are some special problems as described
below. (It does not make sense to include a transaction below. (It does not make sense to include a transaction
authenticating SIG RR in a file as it is a transient authentication authenticating SIG RR in a file as it is a transient authentication
that must be calculated in real time by the DNS server.) that covers data including an ephemeral transaction number so it must
be calculated in real time by the DNS server.)
There is no particular problem with the signer, covered type, and There is no particular problem with the signer, covered type, and
times. The time fields appears in the form YYYYMMDDHHMMSS where YYYY times. The time fields appears in the form YYYYMMDDHHMMSS where YYYY
is the year, the first MM is the month number (01-12), DD is the day is the year, the first MM is the month number (01-12), DD is the day
of the month (01-31), HH is the hour in 24 hours notation (00-23), of the month (01-31), HH is the hour in 24 hours notation (00-23),
the second MM is the minute (00-59), and SS is the second (00-59). the second MM is the minute (00-59), and SS is the second (00-59).
The original TTL and algorithm fields appears as unsigned integers. The original TTL and algorithm fields appear as unsigned integers.
The "labels" field does not appear in the file representation as it The "labels" field does not appear in the file representation as it
can be calculated from the owner name. can be calculated from the owner name.
The key footprint appears as an eight digit unsigned hexadecimal The key footprint appears as an unsigned decimal number.
number.
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 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
immediately clear how to authenticatably deny the existence of a name immediately clear how to authenticatably deny the existence of a name
in a zone. in a zone or a type for an existent name.
The nonexistence of a name in a zone is indicated by the NXD RR for a The nonexistence of a name in a zone is indicated by the NXT ("next")
name interval containing the nonexistent name. An NXD RR and its SIG RR for a name interval containing the nonexistent name. An NXT RR and
are returned in the additional information section, along with the its SIG are returned in the authority section, along with the error,
error, if the resolver is security aware. NXD RRs can also be if the server is security aware. The same is true for a non-existent
returned if an explicit query is made for the NXD type. type under an existing name. NXT RRs will also be returned if an
explicit query is made for the NXT type.
The existence of a complete set of NXD records in a zone means that The existence of a complete set of NXT records in a zone means that
any query for any name to a security aware server serving the zone any query for any name and type to a security aware server serving
should result in an reply containing at least one signed RR. the zone should result in an reply containing at least one signed RR.
5.1 The NXD Resource Record NXT RRs do not appear in zone master files since they can be derived
from the rest of the zone.
The NXD resource record is used to securely indicate that no RRs with 5.1 The NXT Resource Record
an owner name in a certain name interval exist in a zone.
The owner name of the NXD RR is an existing name in the zone. It's The NXT resource record is used to securely indicate that RRs with an
RDATA is another existing name in the zone. The presence of the NXD owner name in a certain name interval do not exist in a zone and to
RR means that no name between its owner name and the name in its indicate what zone signed type RRs are present for an existing name.
RDATA area exists. This implies a canonical ordering of all domain
names in a zone. 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
means that generally no name between its owner name and the name in
its RDATA area exists and that no other types exist under its owner
name. This implies a canonical ordering of all domain 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 byte sorts before a zero byte. Names strings where the absence of a octet sorts before a zero octet.
are then sorted by sorting on the highest level label and then, Names are then sorted by sorting on the highest level label and then,
within those names with the same highest level label by the next within those names with the same highest level label by the next
lower label, etc. Since we are talking about a zone, the zone name lower label, etc. Since we are talking about a zone, the zone name
itself always exists and all other names are the zone name with some itself always exists and all other names are the zone name with some
prefix of lower level labels. Thus the zone name itself always sorts prefix of lower level labels. Thus the zone name itself always sorts
first. first.
There is a slight problem with the last NXD in a zone as it wants to There is a problem with the last NXT in a zone as it wants to have an
have an owner name which is the last existing name in sort order, owner name which is the last existing name in sort order, which is
which is easy, but it is not obvious what name to put in its RDATA to easy, but it is not obvious what name to put in its RDATA to indicate
indicate the entire remainder of the name space. This is handled by the entire remainder of the name space. This is handled by treating
treating the name space as circular and putting the zone name in the the name space as circular and putting the zone name in the RDATA of
RDATA of the last NXD. the last NXT.
There are additional complexities due to interaction with wildcards There are special considerations due to interaction with wildcards as
as explained below. explained below.
The NXD RRs for a zone can be automatically calculated and added to The NXT RRs for a zone should be automatically calculated and added
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. The NXD RR's TTL should not exceed the zone minimum TTL. zone. The NXT RR's TTL should not exceed the zone minimum TTL.
The type number for the NXD RR is xxx. 5.2 NXT RDATA Format
5.2 NXD RDATA Format The RDATA for an NXT RR consists simply of a domain name followed by
a bit map.
The RDATA for an NXD RR consists simply of a domain name. 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 /
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
The size of the bit map can be inferred from the RDLENGTH and the
length of the next domain name.
5.3 Example 5.3 Example
Assume a zone has entries for Assume zone foo.bar has entries for
big.foo.bar, big.foo.bar,
medium.foo.bar. medium.foo.bar.
small.foo.bar. small.foo.bar.
tiny.foo.bar. tiny.foo.bar.
Then a query to a security aware server for huge.foo.bar would Then a query to a security aware server for huge.foo.bar would
produce an error reply with the additional information section produce an error reply with the authority section data including the
containing following:
big.foo.bar. NXD medium.foo.bar. big.foo.bar. NXT medium.foo.bar. 130
big.foo.bar. SIG NXT ...
and the corresponding SIG RR. Note that this response implies that big.foo.bar is an existing name
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
query for huge.foo.bar, which is a non-existent name.
5.4 Interaction of NXD RRs and Wildcard RRs 5.4 Interaction of NXT RRs and Wildcard RRs
As a wildcard RR causes all possible names in an interval to exist, Since, in some sense, a wildcard RR causes all possible names in an
there should not be an NXD record that would cover any part of this interval to exist, there should not be an NXT RR that would cover any
interval. Thus if *.X.ZONE exists you would expect an NXD RR that part of this interval. Thus if *.X.ZONE exists you would expect an
ends at X.ZONE and one that starts with the last name covered by NXT RR that ends at X.ZONE and one that starts with the last name
*.X.ZONE. However, this "last name covered" is something very ugly covered by *.X.ZONE. However, this "last name covered" is something
and long like \255\255\255....X.zone. So the NXD for the interval very ugly and long like \255\255\255....X.zone. So the NXT for the
following is simply given the owner name *.X.zone. This "*" type interval following is simply given the owner name *.X.ZONE. This "*"
name is not expanded when the NXD is returned as additional type name is not expanded when the NXT is returned as authority
information in connection with a query for a non-existent name and information in connection with a query for a non-existent name.
type.
If there could be any wildcard RRs in a zone and thus wildcard NXDs, If there could be any wildcard RRs in a zone and thus wildcard NXTs,
care must be taken in interpreting the results of explicit NXD 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 specificly makes it possible for a malicious server to hide any more specificly
named RRs in the internal. The server can just falsely return the named RRs in the internal. The server can just falsely return the
wildcard match NXD instead of the more specificly named RRs. If wildcard match NXT instead of the more specificly named RRs. If
there is a zone wide wildcard, there will be only one NXD RR whose there is a zone wide wildcard, there will be an NXT RR whose owner
owner name and RDATA are both the zone name. In this case a server name is the wild card and whose RDATA is the zone name. In this case
could conceal the existence of any more specific RRs in the zone. a server could conceal the existence of any more specific RRs in the
(It would be possible to make a more complex NXD feature, taking into zone. (It would be possible to design a more strict NXT feature
account the types of RRs that did not exist in a name interval, and which would eliminate this possibility. But it would be more complex
the like, which would eliminate this possibility. But it would be and might be so constraining as to make any future dynamic update
more complex and would be so constraining as to make any future feature that could create new names very difficult (see Section
dynamic update feature that could create new names very difficult 3.2).)
(see Section 3.2).)
5.5 Blocking NXD Pseudo-Zone Transfers What name should be put into the RDATA of an RR with a 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.
In a secure zone, a resolver can query for the initial NXD associated 5.5 Blocking NXT Pseudo-Zone Transfers
with the zone name. Using the RDATA field from that RR, it can query
for the next NXD RR. By repeating this, it can walk through all the
NXDs in the zone. If there are no wildcards, it can use this
technique to find all names in a zone. If it does type ANY queries,
it can incrementally get all information in the zone and perhaps
defeat attempts to administratively block zone transfers.
If there are any wildcards, this NXD walking technique will not find 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
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
use this technique to find all names in a zone. If it does type ANY
queries, it can incrementally get all information in the zone and
perhaps defeat attempts to administratively block zone transfers.
If there are any wildcards, this 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 NXD 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 bit on and add a zone wide wildcard of the KEY type with the no key bit on and
with no type (zone, entity, or user) bit on. This will cause there with no type (zone, entity, or user) bit on. This will cause there
to be only one NXD RR in the zone for the zone name and leak no to be one zone covering NXT RR and leak no information about what
information about what real names exist in the zone. This protection real names exist in the zone. This protection from pseudo-zone
from pseudo-zone transfers is bought at the expense of eliminating transfers is bought at the expense of eliminating the data origin
the data origin authentication of the non-existence of names that NXD authentication of the non-existence of names that NXT RRs can
RRs can provide. If an entire zone is covered by a wildcard, a provide. If an entire zone is covered by a wildcard, a malicious
malicious server can return an RR produced by matching the resulting server can return an RR produced by matching the resulting wildcard
wildcard NXD and can thus hide all the real data and delegations with NXT and can thus hide all the real data and delegations with more
more specific names in the zone. specific names in the zone.
6. How to Resolve Securely 5.6 Special Considerations at Delegation Points
Retrieving or resolving authentic data from the DNS involves starting A name other than root which is the head of a zone also appears as
with one or more trusted public keys and, in general, progressing the leaf in a superzone. If both are secure, there will always be
securely from them through the DNS zone structure to the zone of two different NXT RRs with the same name. They can be distinguished
interest. Such trusted public keys would normally be configured in a by their signers and next domain name fields. Security aware servers
manner similar to that described in section 6.1. However, as a should return the correct NXT automatically when required to
practical matter, a security aware resolver would still gain some authenticate the non-existence of a name and both NXTs, if available,
confidence in the results it returns even if it was not configured on explicit query for type NXT.
with any keys but trusted what it got from a local well known server
as a starting point.
6.1 Boot File Format Insecure servers will never automatically return an NXT and may only
return the NXT from the subzone on explicit queries.
The recommended format for a boot file line to configure starting 6. The AD and CD Bits and How to Resolve Securely
keys is as follows:
pubkey name object flags algorithm [exponent modulus] Retrieving or resolving authentic data from the Domain Name System
(DNS) involves starting with one or more trusted public keys. With
trusted keys, a browser willing to perform cryptography can progress
securely through the secure DNS zone structure to the zone of
interest as described in Section 6.3. Such trusted public keys would
normally be configured in a manner similar to that described in
Section 6.2. However, as a practical matter, a security aware
resolver would still gain some confidence in the results it returns
even if it was not configured with any keys but trusted what it got
from a local well known server as a starting point.
for a public key. "object" is the domain name of the thing the key Data stored at a server needs security labels of Authenticated,
is associated with and "name" is the owner name if the line is Pending, or Insecure. There is also a fourth transient state of Bad
which indicates that SIG checks have explicitly failed on the data.
Such data is not retained at a security aware server. Authenticated
means that the data has a valid SIG under a KEY traceable via a chain
of zero or more SIG and KEY RRs to a KEY configured at the resolver
via its boot file. Pending data has no authenticated SIGs and at
least one additional SIG the browser is still trying to authenticate.
Insecure data is data which it is known can never be either
authenticated or found bad because it is in a zone with no key or an
experimental key. Behavior in terms of control of and flagging based
on such data labels is described in Section 6.1.
The proper validation of signatures requires a reasonably secure
shared opinion of the absolute time between resolvers and servers as
described in Section 6.4.
In getting to the data of interest to respond to a query, a secure
resolver may encounter genuine non-secure zones. It may proceed
through such zones but should report this as described in Section
6.5.
6.1 The AD and CD Header Bits
Two unused bits are allocated out of the DNS query/response format
header. The AD (authentic data) bit indicates in a response that the
data included has been verified by the server providing it. The CD
(checking disabled) bit indicates in a 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:
1 1 1 1 1 1
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5
+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+
| ID |
+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+
|QR| Opcode |AA|TC|RD|RA| Z|AD|CD| RCODE |
+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+
| QDCOUNT |
+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+
| ANCOUNT |
+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+
| NSCOUNT |
+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+
| ARCOUNT |
+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+
These bits are zero in old servers and resolvers. Thus the responses
of old servers are not flagged as authenticated to security aware
resolvers and queries from non-security aware resolvers do not assert
the checking disabled bit and thus will be answered by security aware
servers only with authenticated data. Of course security aware
resolvers can not trust the AD bit unless they trust the server they
are talking to and have a secure path to it.
Any security aware resolver willing to do cryptography should assert
the CD bit on all queries to reduce DNS latency time by allowing
security aware servers to answer before they have resolved the
validity of data.
Security aware servers never return bad data. For non-security aware
resolvers or security aware resolvers requesting service by having
the CD bit clear, security aware servers return only authenticated or
insecure data with the AD bit set in the response. Security aware
resolvers will know that if data is insecure versus authentic by the
absence of SIG RRs. Security aware servers may return pending data
to security aware resolvers requesting the service by clearing the AD
bit in the response. The AD bit may only be set on a response if the
RRs in the response are either authenticated or insecure.
6.2 Boot File Format
The format for a boot file directive to configure a starting zone key
is as follows:
pubkey name flags protocol algorithm key-data
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 byte in the KEY RR. In particular, if the "no the same as the flag octet in the KEY RR. In particular, if the "no
key" bit is on in flags, then all fields after flags may be omitted. key" bit is on in flags, then all fields after algorithm may be
Algorithm is the algorithm in use where one is the MD5/RSA algorithm omitted. Algorithm is the algorithm in use where one is the MD5/RSA
and 254 indicates a private algorithm. The material after the algorithm and 254 indicates a private algorithm. The material after
algorithm is algorithm dependent and, for private algorithms, starts the algorithm is algorithm dependent and, for private algorithms,
with the algorithm's identifying OID. For the RSA algorithm, it is starts with the algorithm's identifying OID. It is encoded in base
the public key exponent as a decimal number between 3 and 16777215, 64 (see Appendix).
and the modulus in base 64 (see Appendix).
A file of keys for cross certification or other purposes can be
configured though the keyfile directive as follows:
keyfile filename
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
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. These
interior resolvers can then go through the organization's zone server interior resolvers can then go through the organization's zone server
to access data outsize the organization's domain. to access data outsize the organization's domain.
6.2 Chaining Through Zones 6.3 Chaining Through Zones
Starting with one trusted zone key, it is possible to retrieve signed Starting with one or more trusted keys for a zone, it should be
keys for subzones which have a key. Every secure zone (except root) possible to retrieve signed keys for its subzones which have a key
should also include the KEY RR for its super-zone signed by the and, if the zone is not root, for some superzone. Every authoritative
secure zone and with the owner name of the secure zone and object secure zone server should also include the KEY RR for a super-zone
name of the super-zone. This makes it possible to climb the tree of signed by the secure zone via a keyfile directive. This makes it
zones if one starts below root. A secure sub-zone is indicated by a possible to climb the tree of zones if one starts below root. A
KEY RR appearing with the NS RRs for the sub-zone and with the same secure sub-zone is indicated by a KEY RR appearing with the NS RRs
owner and object names. These make it possible to descend within the for the sub-zone. These make it possible to descend within the tree
tree of zones. 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 should be confidence in the data. Data configured via a boot file directive
given a distance number of zero. Should a query encounter different should be given a distance number of zero. Should a query encounter
data with different distance values, that with a larger value should different data for the same query with different distance values,
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 a no presence of an authenticated KEY RR for the non-secure zone with a no
key flag or the presence of a KEY RR with the experimental bit set. key flag or the presence of a KEY RR with the experimental bit set.
Otherwise the resolver is probably getting completely bogus or Otherwise the resolver is probably getting completely bogus or
spoofed data. spoofed data.
If legitimate non-secure zones are encountered in traversing the DNS If legitimate non-secure zones are encountered in traversing the DNS
tree, then no zone can be trusted as secure that can be reached only tree, then no zone can be trusted as secure that can be reached only
via information from such non-secure zones. Since the non-secure zone via information from such non-secure zones. Since the non-secure zone
data could have been spoofed, the "secure" zone reach via it could be data could have been spoofed, the "secure" zone reach via it could be
counterfeit. The "distance" to data in such zones or zones reached counterfeit. The "distance" to data in such zones or zones reached
via such zones could be set to 512 or more as this exceeds the via such zones could be set to 512 or more as this exceeds the
largest possible distance through secure zones in the DNS. largest possible distance through secure zones in the DNS.
Nevertheless, continuing to apply secure checks within "secure" zones Nevertheless, continuing to apply secure checks within "secure" zones
reached via non-secure zones will, as a practical matter, provide reached via non-secure zones will, as a practical matter, provide
some increase in security. some increase in security.
The syntax of KEY RRs, with an arbitrary object name, provides for 6.4 Secure Time
cross-certification. Although the syntax permits the owner name of a
cross-certification KEY RR to be any name, by convention and to avoid
an undue concentration of such KEY RRs under any particular name,
their owner name should be the zone name prefixed with the
destination object name (truncated an integral number of labels from
the front if necessary due to DNS name restrictions). Thus a key for
isoc.org would appear in the mit.edu zone with the owner name
isoc.org.mit.edu and object name isoc.org.
The existence of cross certifications adds further policy questions.
Assume we have a zone B.A and a zone Y.X. Many possibilities exist
for a secure resolver configured with the B.A key to get to Y.X. If
all the zones along the way are secure, it could climb to root and
then descend the other side, a total of four hops (B.A -> A -> . -> X
-> Y.X). If the B.A administrator had installed a cross certified
key for Y.X in the B.A zone, using that would be a shorter and
presumably more secure way to find Y.X's key which would be immune to
the non-security or even compromise of the servers for A or root or
X. But what if some less trusted subzone of B.A, say flakey.B.A
installed a cross certified key for Y.X? If there is a conflict,
should this be preferred to a hierarhically derived key obtained by
climbing to root and descending? Such questions are entirely a
matter of local resolver policy.
6.3 Secure Time
Coordinated interpretation of the time fields in SIG RRs requires Coordinated interpretation of the time fields in SIG RRs requires
that reasonably consistent time be available to the hosts that reasonably consistent time be available to the hosts
implementing the DNS security extensions. implementing the DNS security extensions.
A variety of time synchronization protocols exist including the A variety of time synchronization protocols exist including the
Network Time Protocol (NTP, RFC1305). If such protocols are used, Network Time Protocol (NTP, RFC1305). If such protocols are used,
they should be used securely so that time can not be spoofed. they should be used securely so that time can not be spoofed.
Otherwise, for example, a host could get its clock turned back and Otherwise, for example, a host could get its clock turned back and
might then believe old SIG and KEY RRs which were valid but no longer might then believe old SIG and KEY RRs which were valid but no longer
are. are.
7. Operational Considerations 7. Operational Considerations
This section discusses a variety of considerations in secure This section discusses a variety of considerations in secure
operation of DNS using these proposed protocol extensions. operation of the Domain Name System (DNS) using these proposed
protocol extensions.
7.1 Key Size Considerations 7.1 Key Size Considerations
There are a number of factors that effect public key size choice for There are a number of factors that effect public key size choice for
use in the DNS security extension. Unfortunately, these factors use in the DNS security extension. Unfortunately, these factors
usually do not all point in the same direction. Choice of a key size usually do not all point in the same direction. Choice of zone key
should generally be made by the zone administrator depending on their size should generally be made by the zone administrator depending on
local conditions. their local conditions.
For most schemes, larger keys are more secure but slower. For most schemes, larger keys are more secure but slower. Given a
Verification (the most common operation) for the MD5/RSA algorithm small public exponent, verification (the most common operation) for
will vary roughly with the square of the modulus length, signing will the MD5/RSA algorithm will vary roughly with the square of the
vary with the cube of the modulus length, and key generation (the modulus length, signing will vary with the cube of the modulus
least common operation) will vary with the fourth power of the length, and key generation (the least common operation) will vary
modulus length. The current best algorithms for factoring a modulus with the fourth power of the modulus length. The current best
and breaking RSA security vary roughly with the square of the modulus algorithms for factoring a modulus and breaking RSA security vary
itself. Thus going from a 640 bit modulus to a 1280 bit modulus only roughly with the square of the modulus itself. Thus going from a 640
increases the verification time by a factor of 4 but vastly increases bit modulus to a 1280 bit modulus only increases the verification
the work factor of breaking the key. [RSA FAQ] time by a factor of 4 but increases the work factor of breaking the
key by over 2^3000. [RSA FAQ] An upper bound of 2552 bit has been
established for the MD4/RSA DNS security algorithm for
interoperability purposes.
However, larger keys increase size of the KEY and SIG RRs. This However, larger keys increase size of the KEY and SIG RRs. This
increases the chance of UDP packet overflow and the possible increases the chance of DNS UDP packet overflow and the possible
necessity for using higher overhead TCP. necessity for using higher overhead TCP in responses.
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 and for some years believed by the authors to be secure at this time and for some years
but high level zones in the DNS tree may wish to set a higher but high level zones in the DNS tree may wish to set a higher
minimum, perhaps 1000 bits, for security reasons. (Since the United minimum, perhaps 1000 bits, for security reasons. (Since the United
States National Security Agency generally permits export of States National Security Agency generally permits export of
encryption systems using an RSA modulus of up to 512 bits, use of encryption systems using an RSA modulus of up to 512 bits, use of
that small a modulus, i.e. n, must be considered weak.) that small a modulus, i.e. n, must be considered weak.)
For a key used only to secure data and not to secure other keys, 640 For a key used only to secure data and not to secure other keys, 640
bits should be entirely adequate. bits should be entirely adequate.
7.2 Key Storage 7.2 Key Storage
It is strongly recommended that zone private keys and the zone file It is strongly recommended that zone private keys and the zone file
master copy be kept and used in off-line non-network connected master copy be kept and used in off-line non-network connected
physically secure machines only. Periodically an application can be physically secure machines only. Periodically an application can be
run to re-sign the RRs in a zone by adding NXD and SIG RRs. Then the run to re-sign the RRs in a zone by adding NXT and SIG RRs. Then the
augmented file can be transferred, perhaps by sneaker-net, to 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. The be tampered with if the host it resides on is compromised. For
master copy of the zone file should be off net and should not be maximum security, the master copy of the zone file should be off net
updated based on an unsecured network mediated communication. and should not be updated based on an unsecured network mediated
communication.
Note, however, that secure resolvers need to be configured with some
trusted on-line public key information (or a secure path to such a
resolver).
Non-zone private keys, such as host or user keys, may have to be kept Non-zone private keys, such as host or user keys, may have to be kept
on line to be used for real-time purposes such a IP secure session on line to be used for real-time purposes such a IPSEC session set-up
set-up or secure mail. or secure mail.
7.3 Key Generation 7.3 Key Generation
Careful key generation is a sometimes over looked but absolutely Careful key generation is a sometimes over looked 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
if an adversary can guess enough to lower the size of the likely key if an adversary can guess enough to lower the size of the likely key
space so that it can be exhaustively searched. Suggestions will be space so that it can be exhaustively searched. Suggestions will be
found in draft-ietf-security-randomness-*.txt. found in RFC 1750.
It is strongly recommended that key generation also occur off-line, It is strongly recommended that key generation also occur off-line,
perhaps on the machine used to sign zones (see Section 7.2). perhaps on the machine used to sign zones (see Section 7.2).
7.4 Key Lifetimes 7.4 Key Lifetimes
No key should be used forever. The longer a key is in use, the No key should be used forever. The longer a key is in use, the
greater the probability that it will have been compromised through greater the probability that it will have been compromised through
carelessness, accident, espionage, or cryptanalysis. carelessness, accident, espionage, or cryptanalysis. Furthermore, if
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
remember how to do it or other problems will have developed in the
procedures.
No zone key should have a lifetime significantly over five years. While key lifetime is a matter of local policy, these considerations
The recommended maximum lifetime for zone keys that are kept off-line suggest that no zone key should have a lifetime significantly over
and carefully guarded is 13 months with the intent that they be four years. A reasonable maximum lifetime for zone keys that are
replaced every year. The recommended maximum lifetime for end entity kept off-line and carefully guarded is 13 months with the intent that
keys that are used for IP-security or the like and are kept on line they be replaced every year. A reasonable maximum lifetime for end
is 36 days with the intent that they be replaced monthly or more entity keys that are used for IP-security or the like and are kept on
often. In some cases, an entity key lifetime of a little over a day line is 36 days with the intent that they be replaced monthly or more
often. In some cases, an entity key lifetime of somewhat over a day
may be reasonable. may be reasonable.
Key lifetimes significantly over a year increase the risk that, when
the time comes up change the key, no one at the site will remember
how to do it.
7.5 Signature Lifetime 7.5 Signature Lifetime
Signature expiration times must be set far enought 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
TTL but not less than a reasonable re-signing interval. TTL but not less than a reasonable re-signing interval.
7.6 Root 7.6 Root
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 see 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. records with a name more than one level below root.
8. Conformance 8. Conformance
Several levels of server and resolver conformance are defined. Several levels of server and resolver conformance are defined.
8.1 Server Conformance 8.1 Server Conformance
Three levels of server conformance are defined as follows: Two levels of server conformance are defined as follows:
Basic 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 NXD RRs. Secondaries for a (including zone transfer) SIG, KEY, and NXT RRs. Any secondary,
secure zone must be at least basicly compliant. caching, or other server for a secure zone must be at least minimally
compliant and even then some things, such as secure CNAMEs, will not
work.
Medium server compliance adds the following to basic compliance: Full server compliance adds the following to basic compliance:
(1) ability to read SIG, KEY, and NXD RRs in zone files and (2) (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 ability, given a zone file and private key, to add appropriate SIG
and NXD RRs, possibly via a separate application. Primary servers and NXT RRs, possibly via a separate application, (3) proper
for secure zones must be at least minimally compliant. automatic inclusion of SIG, KEY, and NXT RRs in responses, (4)
suppression of CNAME following on retrieval of the security type RRs,
Full server compliance is ability to automatically include SIG, (5) recognize the CD query header bit and set the AD query header
KEY, and NXD RRs in responses as appropriate, as well as meeting bit, as appropriate, and (6) proper handling of the two NXT RRs at
medium compliance. delegation points. Primary servers for secure zones MUST be fully
compliant and for completely successful secure operation, 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 NXD RRs A basic compliance resolver can handle SIG, KEY, and NXT RRs
when they are explicitly requested. when they are explicitly requested.
A fully compliant resolver understands KEY, SIG, and NXD RRs, A fully compliant resolver (1) understands KEY, SIG, and NXT
maintains appropriate information in its local caches and database to RRs, (2) maintains appropriate information in its local caches and
indicate which RRs have been authenticated and to what extent they database to indicate which RRs have been authenticated and to what
have been authenticated, and performs additional queries as necessary extent they have been authenticated, (3) performs additional queries
to obtain KEY, SIG, or NXD RRs from non-security aware servers. as necessary to attempt to obtain KEY, SIG, or NXT RRs from non-
security aware servers, (4) normally sets the CD query header bit on
its queries.
9. Security Considerations 9. Security Considerations
This document concerns technical details of extensions to the Domain This document concerns technical details of extensions to the Domain
Name System (DNS) protocol to provide data integrity and data origin Name System (DNS) protocol to provide data integrity and data origin
authentication, public key distribution, and optional transaction authentication, public key distribution, and optional transaction
security. security.
If should be noted that, at most, these extensions guarantee the If 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,
skipping to change at page 32, line 38 skipping to change at page 38, line 38
[RFC1032] - Domain Administrators Guide, M. Stahl, November 1987 [RFC1032] - Domain Administrators Guide, M. Stahl, November 1987
[RFC1033] - Domain Administrators Operations Guide, M. Lottor, [RFC1033] - Domain Administrators Operations Guide, M. Lottor,
November 1987 November 1987
[RFC1034] - Domain Names - Concepts and Facilities, P. Mockapetris, [RFC1034] - Domain Names - Concepts and Facilities, P. Mockapetris,
November 1987 November 1987
[RFC1035] - Domain Names - Implementation and Specifications [RFC1035] - Domain Names - Implementation and Specifications
[RFC1305] - Network Time Protocol (v3), D. Mills, April 9 1992.
[RFC1321] - The MD5 Message-Digest Algorithm, R. Rivest, April 16 [RFC1321] - The MD5 Message-Digest Algorithm, R. Rivest, April 16
1992. 1992.
[RFC1750] - Randomness Requirements for Security, D. Eastlake, S.
Crocker, J. Schiller, December 1994.
[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
Digital Equipment Corporation CyberCash, Inc.
550 King Street, LKG2-1/BB3 318 Acton Street
Littleton, MA 01460 Carlisle, MA 01741 USA
Telephone: +1 508 486 6577(w) +1 508 287 4877(h) Telephone: +1 508 287 4877
EMail: dee@lkg.dec.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 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 Expiration and File Name
This draft expires 1 July 1995. This draft expires 24 December 1995.
Its file name is draft-ietf-dnssec-secext-03.txt. Its file name is draft-ietf-dnssec-secext-04.txt.
Appendix: Base 64 Encoding Appendix: Base 64 Encoding
The following encoding technique is taken from RFC 1521 by Borenstein The following encoding technique is taken from RFC 1521 by Borenstein
and Freed. It is reproduced here in a slightly edited form for and Freed. It is reproduced here in an edited form for convenience.
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 base64 alphabet. of which is translated into a single digit in the base64 alphabet.
 End of changes. 180 change blocks. 
607 lines changed or deleted 924 lines changed or added

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