draft-ietf-dnssec-secext-06.txt   draft-ietf-dnssec-secext-07.txt 
DNS Security Working Group Donald E. Eastlake, 3rd DNS Security Working Group Donald E. Eastlake, 3rd
INTERNET-DRAFT CyberCash INTERNET-DRAFT CyberCash
UPDATES RFC 1034, 1035 Charles W. Kaufman UPDATES RFC 1034, 1035 Charles W. Kaufman
Iris Iris
Expires: 10 April 1996 11 October 1995 Expires: 27 June 1996 28 December 1995
Domain Name System Security Extensions Domain Name System Security Extensions
------ ---- ------ -------- ---------- ------ ---- ------ -------- ----------
Status of This Document Status of This Document
This draft, file name draft-ietf-dnssec-secext-06.txt, is intended to This draft, file name draft-ietf-dnssec-secext-07.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
other documents at any time. It is not appropriate to use Internet- other documents at any time. It is not appropriate to use Internet-
Drafts as reference material or to cite them other than as a Drafts as reference material or to cite them other than as a
``working draft'' or ``work in progress.'' ``working draft'' or ``work in progress.''
To learn the current status of any Internet-Draft, please check the To learn the current status of any Internet-Draft, please check the
1id-abstracts.txt listing contained in the Internet-Drafts Shadow 1id-abstracts.txt listing contained in the Internet-Drafts Shadow
Directories on ds.internic.net, ftp.isi.edu, nic.nordu.net, Directories on ds.internic.net (East USA), ftp.isi.edu (West USA),
ftp.nis.garr.it, munnari.oz.au, or ftp.is.co.za. nic.nordu.net (North Europe), ftp.nis.garr.it (South Europe),
munnari.oz.au (Pacific Rim), or ftp.is.co.za (Africa).
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 in many cases. 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 general public key keys in the DNS. This storage of keys can support general public key
distribution service as well as DNS security. The stored keys enable distribution service as well as DNS security. The stored keys enable
security aware resolvers to learn the authenticating key of zones in security aware resolvers to learn the authenticating key of zones in
addition to keys for which they are initially configured. Keys addition to those for which they are initially configured. 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 Acknowledgments
The significant contributions of the following persons (in alphabetic The significant contributions of the following persons (in alphabetic
order) to this draft are gratefully acknowledged: order) to this draft are gratefully acknowledged:
Madelyn Badger Madelyn Badger
Matt Crawford Matt Crawford
James M. Galvin James M. Galvin
Olafur Gudmundsson Olafur Gudmundsson
Edie Gunter
Sandy Murphy Sandy Murphy
Masataka Ohta Masataka Ohta
Michael A. Patton Michael A. Patton
Jeffrey I. Schiller Jeffrey I. Schiller
Susan E. Thomson
Table of Contents Table of Contents
Status of This Document....................................1 Status of This Document....................................1
Abstract...................................................2 Abstract...................................................2
Acknowledgements...........................................2 Acknowledgments............................................2
Table of Contents..........................................3 Table of Contents..........................................3
1. Overview of Contents....................................5 1. Overview of Contents....................................5
2. 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.1 The SIG Resource Record..............................8 2.3.1 The SIG Resource Record..............................8
2.3.2 Authenticating Name and Type Non-existence...........8 2.3.2 Authenticating Name and Type Non-existence...........8
2.3.3 Special Considerations With Time-to-Live.............8 2.3.3 Special Considerations With Time-to-Live.............8
2.3.4 Special Considerations at Delegation Points..........9 2.3.4 Special Considerations at Delegation Points..........9
2.3.5 Special Considerations with CNAME RRs................9 2.3.5 Special Considerations with CNAME RRs................9
2.3.6 Signers Other Than The Zone.........................10 2.3.6 Signers Other Than The Zone.........................10
2.4 DNS Transaction Authentication........................10 2.4 DNS Transaction and Request Authentication............10
3. The KEY Resource Record................................11 3. The KEY Resource Record................................12
3.1 KEY RDATA format......................................11 3.1 KEY RDATA format......................................12
3.2 Object Types, DNS Names, and Keys.....................11 3.2 Object Types, DNS Names, and Keys.....................12
3.3 The KEY RR Flag Field.................................12 3.3 The KEY RR Flag Field.................................13
3.4 The Protocol Octet....................................14 3.4 The Protocol Octet....................................15
3.5 The KEY Algorithm Number and the MD5/RSA Algorithm....14 3.5 The KEY Algorithm Number and the MD5/RSA Algorithm....16
3.6 Interaction of Flags, Algorithm, and Protocol Bytes...15 3.6 Interaction of Flags, Algorithm, and Protocol Bytes...17
3.7 KEY RRs in the Construction of Responses..............16 3.7 KEY RRs in the Construction of Responses..............17
3.8 File Representation of KEY RRs........................16 3.8 File Representation of KEY RRs........................18
4. The SIG Resource Record................................18 4. The SIG Resource Record................................19
4.1 SIG RDATA Format......................................18 4.1 SIG RDATA Format......................................19
4.1.1 Signature Data......................................20 4.1.1 Signature Data......................................21
4.1.2 MD5/RSA Algorithm Signature Calculation.............21 4.1.2 MD5/RSA Algorithm Signature Calculation.............22
4.1.3 Zone Transfer (AXFR) SIG............................22 4.1.3 Zone Transfer (AXFR) SIG............................23
4.1.4 Transaction SIGs....................................22 4.1.4 Transaction and Request SIGs........................24
4.2 SIG RRs in the Construction of Responses..............23 4.2 SIG RRs in the Construction of Responses..............24
4.3 Processing Responses and SIG RRs......................24 4.3 Processing Responses and SIG RRs......................25
4.4 Signature Expiration, TTLs, and Validity..............25 4.4 Signature Expiration, TTLs, and Validity..............26
4.5 File Representation of SIG RRs........................25 4.5 File Representation of SIG RRs........................26
5. Non-existent Names and Types...........................27 5. Non-existent Names and Types...........................28
5.1 The NXT Resource Record...............................27 5.1 The NXT Resource Record...............................28
5.2 NXT RDATA Format......................................28 5.2 NXT RDATA Format......................................29
5.3 Example...............................................28 5.3 Example...............................................29
5.4 Interaction of NXT RRs and Wildcard RRs...............29 5.4 Interaction of NXT RRs and Wildcard RRs...............30
5.5 Blocking NXT Pseudo-Zone Transfers....................30 5.5 Blocking NXT Pseudo-Zone Transfers....................31
5.6 Special Considerations at Delegation Points...........30 5.6 Special Considerations at Delegation Points...........31
6. The AD and CD Bits and How to Resolve Securely.........31 6. The AD and CD Bits and How to Resolve Securely.........33
6.1 The AD and CD Header Bits.............................31 6.1 The AD and CD Header Bits.............................33
6.2 Boot File Format......................................32 6.2 Boot File Format......................................34
6.3 Chaining Through Zones................................33 6.3 Chaining Through Zones................................35
6.4 Secure Time...........................................34 6.4 Secure Time...........................................36
7. Operational Considerations.............................35 7. Operational Considerations.............................37
7.1 Key Size Considerations...............................35 7.1 Key Size Considerations...............................37
7.2 Key Storage...........................................36 7.2 Key Storage...........................................37
7.3 Key Generation........................................36 7.3 Key Generation........................................38
7.4 Key Lifetimes.........................................36 7.4 Key Lifetimes.........................................38
7.5 Signature Lifetime....................................37 7.5 Signature Lifetime....................................39
7.6 Root..................................................37 7.6 Root..................................................39
8. Conformance............................................38 8. Conformance............................................40
8.1 Server Conformance....................................38 8.1 Server Conformance....................................40
8.2 Resolver Conformance..................................38 8.2 Resolver Conformance..................................40
9. Security Considerations................................39 9. Security Considerations................................41
References................................................39
Authors Addresses.........................................41 References................................................42
Expiration and File Name..................................41
Appendix: Base 64 Encoding................................42 Authors Addresses.........................................43
Expiration and File Name..................................43
Appendix: Base 64 Encoding................................44
1. Overview of Contents 1. Overview of Contents
This draft describes extensions of the Domain Name System (DNS) This draft describes extensions of the Domain Name System (DNS)
protocol to support DNS security and public key distribution. It protocol to support DNS security and public key distribution. It
assumes that the reader is familiar with the Domain Name System, assumes that the reader is familiar with the Domain Name System,
particularly as described in RFCs 1034 and 1035. particularly as described in RFCs 1033, 1034, and 1035.
Section 2 provides an overview of the extensions and the key Section 2 provides a detailed overview of the extensions and the key
distribution, data origin authentication, and transaction security distribution, data origin authentication, and transaction and request
they provide. security they provide.
Section 3 discusses the KEY resource record, its structure, use in Section 3 discusses the KEY resource record, its structure, use in
DNS responses, and file representation. These resource records DNS responses, and file representation. These resource records
represent the public keys of entities named in the DNS and are used represent the public keys of entities named in the DNS and are used
for key distribution. for key distribution.
Section 4 discusses the SIG digital signature resource record, its Section 4 discusses the SIG digital signature resource record, its
structure, use in DNS responses, and file representation. These structure, use in DNS responses, and file representation. These
resource records are used to authenticate other resource records in resource records are used to authenticate other resource records in
the DNS and optionally to authenticate DNS transactions. the DNS and optionally to authenticate DNS transactions and requests.
Section 5 discusses the NXT resource record and its use in DNS Section 5 discusses the NXT resource record and its use in DNS
responses. The NXT RR permits authenticated denial in the DNS of the 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. 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 Section 6 discusses how a resolver can be configured with a starting
key or keys and proceed to securely resolve DNS requests. key or keys and proceed to securely resolve DNS requests.
Interactions between resolvers and servers are discussed for all Interactions between resolvers and servers are discussed for all
combinations of security aware and security non-aware. Two combinations of security aware and security non-aware. Two
additional query header bits are defined for signaling between additional query header bits are defined for signaling between
skipping to change at page 6, line 10 skipping to change at page 6, line 10
An Appendix is provided that gives some details of base64 encoding 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 which is used in the file representation of some RR's defined in this
draft. draft.
2. Overview of the Extensions 2. Overview of the Extensions
The Domain Name System (DNS) protocol security extensions provide The Domain Name System (DNS) protocol security extensions provide
three distinct services: key distribution as described in Section 2.2 three distinct services: key distribution as described in Section 2.2
below, data origin authentication as described in Section 2.3 below, below, data origin authentication as described in Section 2.3 below,
and transaction authentication, described in Section 2.4 below. and transaction and request authentication, described in Section 2.4
below.
Special considerations related to time to live, CNAMEs, and Special considerations related to "time to live", CNAMEs, and
delegation points are also discussed in Section 2.3. delegation points are also discussed in Section 2.3.
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 IPSEC. [put refs to IPSEC RFCs here if available]) available via IPSEC [RFC 1825].)
2.2 Key Distribution 2.2 Key Distribution
Resource records (RRs) are defined to associate keys with DNS names. Resource records (RRs) are defined to associate keys with DNS names.
This permits the DNS to be used as a general public key distribution This permits the DNS to be used as a 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. services.
The syntax of a KEY resource record (RR) is described in Section 3. The syntax of a KEY resource record (RR) is described in Section 3.
skipping to change at page 7, line 11 skipping to change at page 7, line 11
may automatically attempt to return KEY resources as additional may automatically attempt to return KEY resources as additional
information, along with those resource records actually requested, to information, along with those resource records actually requested, to
minimize the number of queries needed. minimize the number of queries needed.
2.3 Data Origin Authentication and Integrity 2.3 Data Origin Authentication and Integrity
Authentication is provided by associating with resource records in Authentication is provided by associating with resource records in
the DNS cryptographically generated digital signatures. Commonly, the DNS cryptographically generated digital signatures. Commonly,
there will be a single private key that signs for an entire zone. If there will be a single private key that signs for an entire zone. If
a security aware resolver reliably learns the public key of the zone, a security aware resolver reliably learns the public key of the zone,
it can verify, for any data read from that zone, that it was properly it can verify, for signed data read from that zone, that it was
authorized and is reasonably current. The expected implementation is properly authorized and is reasonably current. The expected
for the zone private key to be kept off-line and used to re-sign all implementation is for the zone private key to be kept off-line and
of the records in the zone periodically. used to re-sign all of the records in the zone periodically.
This data origin authentication key belongs to the zone and not to This data origin authentication key belongs to the zone and not to
the servers that store copies of the data. That means compromise of the servers that store copies of the data. That means compromise of
a server or even all servers for a zone will not necessarily affect a server or even all servers for a zone will not necessarily affect
the degree of assurance that a resolver has that it can determine the degree of assurance that a resolver has that it can determine
whether data is genuine. whether data is genuine.
A resolver can learn the public key of a zone either by reading it A resolver can learn the public key of a zone either by reading it
from DNS or by having it staticly configured. To reliably learn the from DNS or by having it staticly configured. To reliably learn the
public key by reading it from DNS, the key itself must be signed. public key by reading it from DNS, the key itself must be signed.
Thus, to provide a reasonable degree of security, the resolver must Thus, to provide a reasonable degree of security, the resolver must
be configured with at least the public key of one zone that it can be configured with at least the public key of one zone that it can
use to authenticate signatures. From that, it can securely read the use to authenticate signatures. From there, it can securely read the
public keys of other zones if the intervening zones in the DNS tree public keys of other zones, if the intervening zones in the DNS tree
are secure. (It is in principle more secure to have the resolver are secure. (It is in principle more secure to have the resolver
manually configured with the public keys of multiple zones, since manually configured with the public keys of multiple zones, since
then the compromise of a single zone would not permit the faking of then the compromise of a single zone would not permit the faking of
information from other zones. It is also more administratively information from other zones. It is also more administratively
cumbersome, however, particularly when public keys change.) cumbersome, however, particularly when public keys change.)
Adding data origin authentication and integrity requires no change to Adding data origin authentication and integrity requires no change to
the "on-the-wire" DNS protocol beyond the addition of the signature the "on-the-wire" DNS protocol beyond the addition of the signature
resource types and, as a practical matter, the key resource type resource type and, as a practical matter, the key resource type
needed for key distribution. This service can be supported by needed for key distribution. This service can be supported by
existing resolver and server implementations so long as they can existing resolver and server implementations so long as they can
support the additional resource types (see Section 8) with the one support the additional resource types (see Section 8). The one
exception that CNAME referals can not be authenticated if they are exception is that CNAME referrals from a secure zone can not be
from non-security aware servers (see Section 2.3.5). 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 always sending security aware servers mitigate that degradation by always attempting
the signature(s) needed. to send the signature(s) needed.
2.3.1 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.
skipping to change at page 8, line 31 skipping to change at page 8, line 31
for a name and select the one or ones that sign the resource for a name and select the one or ones that sign the resource
record(s) that resolver is interested in. record(s) that resolver is interested in.
2.3.2 Authenticating Name and Type Non-existence 2.3.2 Authenticating Name and Type Non-existence
The above security mechanism provides only a way to sign existing RRs The above security mechanism provides only a way to sign existing RRs
in a zone. "Data origin" authentication is not obviously provided in a zone. "Data origin" authentication is not obviously provided
for the non-existence of a domain name in a zone or the non-existence for the non-existence of a domain name in a zone or the non-existence
of a type for an existing name. This gap is filled by the NXT RR of a type for an existing name. This gap is filled by the NXT RR
which authenticatably asserts a range of non-existent names in a zone which authenticatably asserts a range of non-existent names in a zone
and the non-existence types for the initial name in that range. and the non-existence of types for the name just before that range.
Section 5 below covers the NXT RR. Section 5 below covers the NXT RR.
2.3.3 Special Considerations 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.
skipping to change at page 9, line 6 skipping to change at page 9, line 6
signature, but that would allow unscrupulous servers 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 the 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, since non-security aware servers must still be for the TTL, however, since the TTL is primarily a database
supported. consistency mechanism and, in any case, non-security aware servers
that depend on TTL must still be supported.
2.3.4 Special Considerations at Delegation Points 2.3.4 Special Considerations at Delegation Points
DNS security would like to view each zone as a unit of data DNS security would like to view each zone as a unit of data
completely under the control of the zone owner and signed by the completely under the control of the zone owner and signed by the
zone's key. But the operational DNS views the leaf nodes in a zone zone's key. But the operational DNS views the leaf nodes in a zone
which are also the apex nodes of a subzone (i.e., delegation points) which are also the apex nodes of a subzone (i.e., delegation points)
as "really" belonging to the subzone. These nodes occur in two as "really" belonging to the subzone. These nodes occur in two
master files and will have RRs signed by both the upper and lower master files and may have RRs signed by both the upper and lower
zone's keys. A retrieval could get a mixture of these RRs and SIGs, zone's keys. A retrieval could get a mixture of these RRs and SIGs,
especially since one server could be serving both the zone above and especially since one server could be serving both the zone above and
below a delegation point. below a delegation point.
In general, the KEY RR from the superzone is authoritative while for In general, there must be a zone KEY RR for the subzone in the
all other RRs, the data from the subzone is more authoritative. To superzone and the copy signed in the superzone is controlling. For
avoid conflicts, only the KEY RR in the superzone should be signed all other RRs that should appearing in both the superzone and
and the NS and any A (glue) RRs should only be signed in the subzone subzone, the data from the subzone is more authoritative. To avoid
along with the SOA and any other RRs that have the zone name as conflicts, only the KEY RR in the superzone should be signed and the
owner. The only exception is the NXT RR type that will always appear NS and any A (glue) RRs should only be signed in the subzone. The SOA
differently and authoritatively in both the superzone and subzone, if and any other RRs that have the zone name as owner should appear only
both are secure, as described in Section 5. in the subzone and thus are signed there. The NXT RR type is an
exceptional case 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 2.3.5 Special Considerations with CNAME RRs
There is a significant problem with security related RRs with the There is a significant problem when security related RRs with the
same owner name as a CNAME RR when retrieved from a non-security- same owner name as a CNAME RR are retrieved from a non-security-aware
aware server. In particular, an initial retrieval for the CNAME or server. In particular, an initial retrieval for the CNAME or any
any other type will not retrieve an associated signature, key, or NXT other type will not retrieve any associated signature, key, or NXT
RR. For types other than CNAME it will retrieve that type at the RR. For types other than CNAME, it will retrieve that type at the
target name of the CNAME (or chain of CNAMEs) and will return the target name of the CNAME (or chain of CNAMEs) and will return the
CNAME as additional info. In particular, a specific retrieval for CNAME as additional information. In particular, a specific retrieval
type SIG will not get the SIG, if any, at the original domain name for type SIG will not get the SIG, if any, at the original CNAME
but rather an SIG at the target name. domain name but rather a SIG at the target name.
In general, security aware servers must be used to securely CNAME in In general, security aware servers must be used to securely CNAME in
DNS. Security aware servers must (1) allow KEY, SIG, and NXT RRs DNS. Security aware servers must (1) allow KEY, SIG, and NXT RRs
along with CNAME RRs, (2) suppress CNAME processing on retrieval of along with CNAME RRs, (2) suppress CNAME processing on retrieval of
these types as well as on retrieval of the type CNAME, and (3) these types as well as on retrieval of the type CNAME, and (3)
automatically return SIG RRs authenticating the CNAME or CNAMEs automatically return SIG RRs authenticating the CNAME or CNAMEs
encountered in resolving a query. encountered in resolving a query. This is a change from the previous
DNS standard which prohibited any other RR type at a node where a
CNAME RR was present.
2.3.6 Signers Other Than The Zone 2.3.6 Signers Other Than The Zone
There are two cases where a SIG resource record is signed by other There are two cases where a SIG resource record is signed by other
than the zone private key. One is for support of dynamic update than the zone private key. One is for support of dynamic update
where an entity is permitted to authenticate/update its own records. 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 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 appropriately signed but the other RR(s) may be signed with the
entity's key. The other is for support of transaction authentication entity's key. The other is for support of transaction and request
as described in Section 2.4 below. authentication as described in Section 2.4 immediately below.
2.4 DNS Transaction Authentication 2.4 DNS Transaction and Request 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. retrieved resource records but provides no protection for DNS
requests or for 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 at least Such authentication means that a resolver can be sure it is at least
getting messages from the server it thinks it queried, that the getting messages from the server it thinks it queried, that the
response is from the query it sent, and that these messages have not response is from the query it sent, and that these messages have not
been diddled in transit. been diddled in transit. This is accomplished by optionally adding a
special SIG resource record at the end of the reply which digitally
signs the concatenation of the server's response and the resolver's
query.
This is accomplished by optionally adding a special SIG resource Requests can also be authenticated by including a special SIG RR at
record to the end of the reply which digitally signs the the end of the request. Authenticating requests serves no function
concatenation of the server's response and the resolver's query. The in the current DNS and requests with a non-empty additional
private key used belongs to the host composing the reply, not to the information section are ignored by almost all current DNS servers.
zone being queried. The corresponding public key is stored in and However, this syntax for signing requests is defined in connection
retrieved from the DNS. Because replies are highly variable, message with authenticating future secure dynamic update requests or the
like.
The private key used in transaction security belongs to the host
composing the reply message, not to the zone involved. The
corresponding public key is normally stored in and retrieved from the
DNS.
Because requests and replies are highly variable, message
authentication SIGs can not be pre-calculated. Thus it will be authentication SIGs can not be pre-calculated. Thus it will be
necessary to keep the private key on-line, for example in software or necessary to keep the private key on-line, for example in software or
in a directly connected piece of hardware. in a directly connected piece of hardware.
DNS level transaction authentication will be unnecessary when IPSEC
end-to-end security protocol is generally available [refernce IPSEC
RFCs when RFC numbers assigned]. However, there will be a
significant time during which there will be systems on which it will
be hard to add such a protocol but relatively easy to replace the DNS
components.
3. The KEY Resource Record 3. The KEY Resource Record
The KEY resource record (RR) is used to document a key that is The KEY resource record (RR) is used to document a key that is
associated with a Domain Name System (DNS) name. It will be a public associated with a Domain Name System (DNS) name. It will be a public
key as only public keys are stored in the DNS. This can be the key as only public keys are stored in the DNS. This can be the
public key of a zone, of a host or other end entity, or a user. A public key of a zone, a host or other end entity, or a user. A KEY
KEY RR is, like any other RR, authenticated by a SIG RR. Security RR is, like any other RR, authenticated by a SIG RR. Security aware
aware DNS implementations MUST be designed to handle at least two DNS implementations MUST be designed to handle at least two
simultaneously valid keys of the same type 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 flags, a protocol octet, the The RDATA for a KEY RR consists of flags, a protocol octet, the
algorithm number, and the public key itself. The format is as algorithm number, and the public key itself. The format is as
follows: follows:
skipping to change at page 11, line 35 skipping to change at page 12, line 35
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| flags | protocol | algorithm | | flags | protocol | algorithm |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| / | /
/ public key / / public key /
/ / / /
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-| +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-|
The meaning of the KEY RR owner name, flags, and protocol octet are The meaning of the KEY RR owner name, flags, and protocol octet are
described in Sections 3.2, 3.3 and 3.4 below respectively. The flags described in Sections 3.2, 3.3 and 3.4 below respectively. The flags
and protocol must be examined before any following data as they and protocol must be examined before any data following the algorithm
control the format and even whether there is any following data. The octet as they control the format and even whether there is any
algorithm and public key fields are described in Section 3.5. The following data. The algorithm and public key fields are described in
format of the public key is algorithm dependent. Section 3.5. The format of the public key is algorithm dependent.
3.2 Object Types, 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 owner The public key in a KEY RR belongs to the object named in the owner
name. name.
This DNS name may refer to up to three different things. For This DNS name may refer to up to three different categories of
example, dee.cybercash.com could be (1) a zone, (2) a host or other things. For example, dee.cybercash.com could be (1) a zone, (2) a
end entity , and (3) the mapping into a DNS name of the user or host or other end entity , and (3) the mapping into a DNS name of the
account dee@cybercash.com . Thus, there are flags in the KEY RR to user or account dee@cybercash.com. Thus, there are flags, as
indicate with which of these roles the owner name and public key are described below, in the KEY RR to indicate with which of these roles
associated as described below. the owner name and public key are associated. Note that an
appropriate zone KEY RR must occur at the apex node of a secure zone
and at every leaf node which is a delegation point (and thus the same
owner name as the apex of a subzone) within a secure zone.
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 categories, such overloading of a name is discouraged. It is also
possible to use the same key for different things with the same name possible to use the same key for different things with the same name
or even different names, but this is strongly discouraged. In or even different names, but this is strongly discouraged. In
particular, the use of a zone key as a non-zone key will usually particular, the use of a zone key as a non-zone key will usually
require that the private key be kept on line and thereby become much require that the corresponding private key be kept on line and
more vulnerable. thereby become 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 (may have an RFC number if
the world have been mapped into the tpc.int domain [RFC 1530]. This issued simultaneously with this draft)], all telephone numbers in the
is much preferable to having the same name possibly be an autonomous world have been mapped into the tpc.int domain [RFC 1530], and all
system number, telephone number, and/or host as well as a zone and a IPv4 addresses (i.e., all IPv4 globally addressable interfaces) have
been mapped into the in-addr.arpa domain. This is much preferable to
having the same name possibly be an autonomous system number,
telephone number, IPv4 interface, and/or host as well as a zone and a
user. user.
In addition to the name type bits, there are additional control bits, In addition to the name type bits, there are additional control bits
the "no key" bit, the "experimental" bit, the "signatory" field, including the "no key" bit, "experimental" bit, "signatory" field,
etc., as described below. etc., as described below.
3.3 The KEY RR Flag Field 3.3 The KEY RR Flag Field
In the "flags" field: In the "flags" field:
Bit 0 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 after the algorithm octet. By the use information and the RR stops after the algorithm octet. By the use
of 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.
skipping to change at page 13, line 8 skipping to change at page 14, line 14
security. The experimental bit, like all other aspects of the KEY 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.
Bits 2-4 are reserved and must be zero. Bits 2-4 are reserved and must be zero.
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 and RP RRs: 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 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 zone "entity" whose name is the RR owner name. This will commonly be
a host but could, in some parts of the DNS tree, be some other type a host but could, in some parts of the DNS tree, be some other type
of entity such as a telephone number [RFC 1530]. This is the public of entity such as a telephone number [RFC 1530] or autonomous system
key used in connection with the optional DNS transaction number [draft-ietf-dnssec-as-map-*.txt (may have an RFC number if
authentication service that can be used if the owner name is a DNS issued simultaneously with this draft)]. This is the public key used
server host. It could also be used in an IP-security protocol where in connection with the optional DNS transaction authentication
authentication of a host was desired such as routing, NTP, etc. service if the owner name is a DNS server host. It could also be
used in an IP-security protocol where authentication of at the host,
rather than user, level was desired, such as routing, NTP, etc.
Bit 7 is the "zone" bit and indicates that this is a zone key Bit 7 is the "zone" bit and indicates that this is a zone key
for the zone whose name is the KEY RR owner name. This is the for the zone whose name is the KEY RR owner name. This is the
fundamental type of DNS data origin authentication public key. primary type of DNS data origin authentication public key.
Bit 8 is reserved to be the IPSEC bit and indicate that this key Bit 8 is reserved to be the IPSEC [RFC 1825] bit and indicate
is valid for use in conjunction with the IP level security standard. that this key is valid for use in conjunction with that IP level
This key could be used in connection with secured communication on security standard. This key could be used in connection with secured
behalf of an end entity or user whose name is the owner name of the communication on behalf of an end entity or user whose name is the
KEY RR if the entity or user bits are on. The presence of a KEY owner name of the KEY RR if the entity or user bits are on. The
resource with the IPSEC and entity bits on and experimental and no- presence of a KEY resource with the IPSEC and entity bits on and
key bits off is a guarantee that the host speaks IPSEC. experimental and no-key bits off is a guarantee that the host speaks
IPSEC.
Bit 9 is reserved to be the "email" bit and indicate that this Bit 9 is reserved to be the "email" bit and indicate that this
key is valid for use in conjunction with MIME security multiparts. key is valid for use in conjunction with MIME security multiparts.
This key could be used in connection with secured communication on This key could be used in connection with secured communication on
behalf of an end entity or user whose name is the owner name of the behalf of an end entity or user whose name is the owner name of the
KEY RR if the entity or user bits are on. KEY RR if the entity or user bits are on.
Bits 10-11 are reserved and must be zero. Bits 10-11 are reserved and must be zero.
Bits 12-15 are the "signatory" field. If non-zero, it indicates Bits 12-15 are the "signatory" field. If non-zero, they
that the key can validly sign RRs of the same name. If the owner indicate that the key can validly sign RRs or updates of the same
name is a wildcard, then RRs with any name which is in the wildcard's name. If the owner name is a wildcard, then RRs or updates with any
scope can be signed. Fifteen different non-zero values are possible name which is in the wildcard's scope can be signed. Fifteen
for this field and any differences in their meaning are reserved for different non-zero values are possible for this field and any
definition in connection with DNS dynamic update or other new DNS differences in their meaning are reserved for definition in
commands. This field is meaningless for zone keys which always have connection with DNS dynamic update or other new DNS commands. Zone
authority to sign any RRs in the zone. The signatory field, like all keys always have authority to sign any RRs in the zone regardless of
other aspects of the KEY RR, is only effective if the KEY RR is the value of this field. The signatory field, like all other aspects
appropriately signed by a SIG RR. of the KEY RR, is only effective if the KEY RR is appropriately
signed by a SIG RR.
3.4 The Protocol Octet 3.4 The Protocol Octet
It is anticipated that keys stored in DNS will be used in conjunction It is anticipated that some keys stored in DNS will be used in
with Internet protocols other than DNS (keys with zone bit or conjunction with Internet protocols other than DNS (keys with zone
signatory field non-zero) and IPSEC (keys with IPSEC bit set). The bit or signatory field non-zero) and IPSEC/email (keys with IPSEC
protocol octet is provided to indicate that a key is valid for such and/or email bit set). The protocol octet is provided to indicate
use and, for end entity keys or the host part of user keys, that the that a key is valid for such use and, for end entity keys or the host
secure version of that protocol is implemented on that entity or part of user keys, that the secure version of that protocol is
host. implemented on that entity or host.
Values between 1 and 191 decimal inclusive are available for Values between 1 and 191 decimal inclusive are available for
assignment by IANA for such protocols. The 63 values between 192 and assignment by IANA for such protocols. The 63 values between 192 and
254 inclusive will not be assigned to a specific protocol and are 254 inclusive will not be assigned to a specific protocol and are
available for experimental use under bilateral agreement. Value 0 available for experimental use under bilateral agreement. Value 0
indicates, for a particular key, that it is not valid for any indicates, for a particular key, that it is not valid for any
particular additional protocol beyond those indicated in the flag particular additional protocol beyond those indicated in the flag
field. And value 255 indicates that the key is valid for all assigned field. And value 255 indicates that the key is valid for all assigned
protocols (those in the 1 to 191 range). protocols (those in the 1 to 191 range).
It is intended that new uses of DNS stored keys would initially be It is intended that new uses of DNS stored keys would initially be
implemented, and operational experience gained, using the implemented, and operational experience gained, using the
experimental range of the protocol octet. If demand for widespread experimental range of the protocol octet. If demand for widespread
deployment for the indefinite future warrants, a value in the deployment for the indefinite future warrants, a value in the
assigned range would then be designated for the protocol. Finally, assigned range would then be designated for the protocol. Finally,
(1) should the protocol become so widespread in conjunction with (1) should the protocol become so widespread in conjunction with
other protocols which are indicated via the protocol octet and with other protocols and with which it shares key values that duplicate
which it shares key values that duplicate RRs are a serious burden RRs are a serious burden and (2) should the protocol provide
and (2) should the protocol provide substantial facilities not substantial facilities not available in any protocol for which a
available in any protocol for which a flags field bit has been flags field bit has been allocated, then a flag field bit may be
allocated, then a flag field bit may be allocated to the protocol. allocated to the protocol. When such a bit has been allocated, a key
Then a key can be simultaneously indicated as valid for that protocol can be simultaneously indicated as valid for that protocol and the
and the entity or host can be simultaneously flagged as implementing entity or host can be simultaneously flagged as implementing the
the secure version of that protocol, along with other protocols for secure version of that protocol, along with other protocols for which
which flag field bits have been assigned. flag field bits have been assigned.
Note that the IPSEC protocol being developed may provide facilities Note that the IPSEC protocol being developed may provide facilities
adequate for all point to point IP communication meaning that adequate for all point to point IP communication meaning that
additional flag field bits would only be assigned, when appropriate additional flag field bits would only be assigned, when appropriate
as indicated above, to protocols with a store-and-forward nature as indicated above, to protocols with a store-and-forward nature
(other than DNS) or otherwise not subsumed into a point-to-point (other than DNS) or otherwise not subsumed into a point-to-point
paradigm. paradigm.
3.5 The KEY Algorithm Number and the MD5/RSA Algorithm 3.5 The KEY Algorithm Number and the MD5/RSA Algorithm
This octet is the key algorithm parallel to the same field for the This octet is the key algorithm parallel to the same field for the
SIG resource. The MD5/RSA algorithm described in this draft is SIG resource. The MD5/RSA algorithm described in this draft is
number 1. Numbers 2 through 252 are available for assignment should number 1. Numbers 2 through 252 are available for assignment should
sufficient reason arise. However, the designation of a new algorithm sufficient reason arise. However, the designation of a new algorithm
could have a major impact on interoperability and requires an IETF could have a major impact on interoperability and requires an IETF
standards action. Number 254 is reserved for private use and will standards action. Number 254 is reserved for private use and will
never be assigned a specific algorithm. For number 254, the public never be assigned a specific algorithm. For number 254, the public
key area shown in the packet diagram above will actually begin with key area shown in the packet diagram above will actually begin with
an Object Identifier (OID) indicating the private algorithm in use an Object Identifier (OID) indicating the private algorithm in use
and the remainder of the area is whatever is required by that and the remainder of the area is whatever is required by that
algorithm. Number 253 is reserved for use where the date or other algorithm. Number 253 is reserved as the "expiration date algorithm"
labeling fields of SIGs are desired withouth any actual security. For for use where the expiration date or other labeling fields of SIGs
number 253, the public key area is null. Values 0 and 255 are are desired without any actual security. It is anticipated that this
algorithm will only be used in connection with DNS dynamic update.
For number 253, the public key area is null. Values 0 and 255 are
reserved. 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 field 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
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| pub exp length| public key exponent / | pub exp length| public key exponent /
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
skipping to change at page 16, line 6 skipping to change at page 17, line 14
3.6 Interaction of Flags, Algorithm, and Protocol Bytes 3.6 Interaction of Flags, Algorithm, and Protocol Bytes
Various combinations of the no-key bit, algorithm byte, protocol Various combinations of the no-key bit, algorithm byte, protocol
byte, and any protocol indicating flags (such as the reserved IPSEC byte, and any protocol indicating flags (such as the reserved IPSEC
flag) are possible. (Note that the zone flag bit being on or the flag) are possible. (Note that the zone flag bit being on or the
signatory field being non-zero is effectively a DNS protocol flag signatory field being non-zero is effectively a DNS protocol flag
on.) The meaning of these combinations is indicated below: on.) The meaning of these combinations is indicated below:
NK = no key flag NK = no key flag
AL = alogrithm byte AL = algorithm byte
PR = protocols indicated by protocol byte or protocol flags PR = protocols indicated by protocol byte or protocol flags
x represents any valid non-zero value. x represents any valid non-zero value(s).
AL PR NK Meaning AL PR NK Meaning
0 0 0 Illegal, claims key but has bad algorithm field. 0 0 0 Illegal, claims key but has bad algorithm field.
0 0 1 Specifies total lack of security for owner. 0 0 1 Specifies total lack of security for owner.
0 x 0 Illegal, claims key but has bad algorithm field. 0 x 0 Illegal, claims key but has bad algorithm field.
0 x 1 Specified protocols insecure, others may be secure. 0 x 1 Specified protocols insecure, others may be secure.
x 0 0 Useless. Gives key but no protocols to use it. x 0 0 Useless. Gives key but no protocols to use it.
x 0 1 Useless. Denies key but for no protocols. x 0 1 Useless. Denies key but for no protocols.
x x 0 Specifies key for protocols and certifies that x x 0 Specifies key for protocols and certifies that
those protocols are implemented with security. those protocols are implemented with security.
x x 1 Algorithm not understood for protocol. x x 1 Algorithm not understood for protocol.
(remember, in reference to the above table, that a protocol (remember, in reference to the above table, that a protocol
byte of 255 means all protocols with protocol bytes assigned) byte of 255 means all protocols with protocol byte values
assigned)
3.7 KEY RRs in the Construction of Responses 3.7 KEY RRs in the Construction of Responses
An explicit request for KEY RRs does not cause any special additional An explicit request for KEY RRs does not cause any special additional
information processing except, of course, for the corresponding SIG information processing except, of course, for the corresponding SIG
RR from a security aware server. RR from a security aware server.
Security aware DNS servers will include KEY RRs as additional Security aware DNS servers will include KEY RRs as additional
information in responses where appropriate including the following: information in responses where appropriate including the following:
(1) On the retrieval of NS RRs, the zone key KEY RR(s) for the zone (1) On the retrieval of NS RRs, the zone key KEY RR(s) for the zone
served by these name servers will be included as additional served by these name servers MUST be included as additional
information. If not all additional info will fit, the KEY RR(s) have information. There will always be at least one such KEY RR in a
higher priority than type A (or AAAA) glue RRs. secure zone, even if it has the no-key bit on to indicate that the
subzone is insecure. If not all additional information will fit, the
KEY RR(s) have higher priority than type A or AAAA glue RRs. If such
a KEY RR does not fit on a retrieval, the retrieval must be
considered truncated.
(2) 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
will be included. On inclusion of A (or AAAA) RRs as additional 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.8 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.
The flag field, protocol, and algorithm number octets are then The flag field, protocol, and algorithm number octets are then
represented as unsigned integers. Note that if the "no key" flag is represented as unsigned integers. Note that if the "no key" flag is
on in the flags or the algorithm specified is 253, nothing appears on in the flags or the algorithm specified is 253, nothing appears
after the algorithm octet. after the algorithm octet.
The remaining public key portion is represented in base 64 (see The remaining public key portion is represented in base 64 (see
Appendix) and may be divided up into any number of white space Appendix) and may be divided up into any number of white space
separated substrings, down to single base 64 digits, which are separated substrings, down to single base 64 digits, which are
concatenated to obtain the full signature. These substrings can span concatenated to obtain the full signature. These substrings can span
lines using the standard parenthesis. lines using the standard parenthesis.
Note that the public key may have internal sub-fields but these do Note that the public key may have internal sub-fields but these do
not appear in the master file representation. For example, with not appear in the master file representation. For example, with
algorithm 1 there is a public exponent and then a modulus and with algorithm 1 there is a public size, then a public exponent, and then
algorithm 254, there will be an OID followed by algorithm dependent a modulus. With algorithm 254, there will be an OID followed by
information. algorithm dependent information. But in both cases only a single
logical base 64 string will appear in the master file.
4. The SIG Resource Record 4. The SIG Resource Record
The SIG or "signature" resource record (RR) is the fundamental way The SIG or "signature" resource record (RR) is the fundamental way
that data is authenticated in the secure Domain Name System (DNS). As that data is authenticated in the secure Domain Name System (DNS). As
such it is the heart of the security provided. such it is the heart of the security provided.
The SIG RR unforgably authenticates other RRs of a particular type, The SIG RR unforgably authenticates other RRs of a particular type,
class, and name and binds them to a time interval and the signer's class, and name and binds them to a time interval and the signer's
domain name. This is done using cryptographic techniques and the domain name. This is done using cryptographic techniques and the
skipping to change at page 19, line 8 skipping to change at page 20, line 8
algorithm used parallel to the algorithm octet for the KEY RR. The algorithm used parallel to the algorithm octet for the KEY RR. The
MD5/RSA algorithm described in this draft is number 1. Numbers 2 MD5/RSA algorithm described in this draft is number 1. Numbers 2
through 252 are available for assignment should sufficient reason through 252 are available for assignment should sufficient reason
arise to allocate them. However, the designation of a new algorithm arise to allocate them. However, the designation of a new algorithm
could have a major impact on the interoperability of the global DNS could have a major impact on the interoperability of the global DNS
systems and requires an IETF standards action. Number 254 is systems and requires an IETF standards action. Number 254 is
reserved for private use and will not be assigned a specific reserved for private use and will not be assigned a specific
algorithm. For number 254, the "signature" area shown above will algorithm. For number 254, the "signature" area shown above will
actually begin with an Object Identifier (OID) indicating the private actually begin with an Object Identifier (OID) indicating the private
algorithm in use and the remainder of the signature area is whatever algorithm in use and the remainder of the signature area is whatever
is required by that algorithm. Number 253 is used when the time is required by that algorithm. Number 253, known as the "expiration
fields or other non-signature fields of the SIG are desired without date" algorithm, is used when the expiration date other non-signature
any actual security. For number 253, the signature field will be fields of the SIG are desired without any actual security. It is
anticipated that this algorithm will only be used in connection with
DNS dynamic update. For number 253, the signature field will be
null. Values 0 and 255 are reserved. null. Values 0 and 255 are reserved.
The "labels" octet is an unsigned count of how many labels there are The "labels" octet is an unsigned count of how many labels there are
in the original SIG RR owner name not counting the null label for in the original SIG RR owner name not counting the null label for
root and not counting any initial "*" for a wildcard. If a secured root and not counting any initial "*" for a wildcard. If a secured
retrieval is the result of wild card substitution, it is necessary retrieval is the result of wild card substitution, it is necessary
for the resolver to use the original form of the name in verifying for the resolver to use the original form of the name in verifying
the digital signature. This field helps optimize the determination the digital signature. This field helps optimize the determination
of the original form reducing the effort in authenticating signed of the original form thus reducing the effort in authenticating
data. signed data.
If, on retrieval, the RR appears to have a longer name than indicated If, on retrieval, the RR appears to have a longer name than indicated
by "labels", the resolver can tell it is the result of wildcard by "labels", the resolver can tell it is the result of wildcard
substitution. If the RR owner name appears to be shorter than the substitution. If the RR owner name appears to be shorter than the
labels count, the SIG RR should be considered corrupt and ignored. labels count, the SIG RR should be considered corrupt and ignored.
The maximum number of labels possible in the current DNS is 127 but 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 the entire octet is reserved and would be required should DNS names
ever be expanded to 255 labels. The following table gives some ever be expanded to 255 labels. The following table gives 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
skipping to change at page 19, line 49 skipping to change at page 20, line 51
a.b.c.d.| *. | *.d. | *.c.d. | *.b.c.d. | a.b.c.d. | a.b.c.d.| *. | *.d. | *.c.d. | *.b.c.d. | a.b.c.d. |
The "original TTL" field is included in the RDATA portion to avoid The "original TTL" field is included in the RDATA portion to avoid
(1) authentication problems that caching servers would otherwise (1) authentication problems that caching servers would otherwise
cause by decrementing the real TTL field and (2) security problems cause by decrementing the real TTL field and (2) security problems
that unscrupulous servers could otherwise cause by manipulating the that unscrupulous servers could otherwise cause by manipulating the
real TTL field. This original TTL is protected by the signature real TTL field. This original TTL is protected by the signature
while the current TTL field is not. while the current TTL field is not.
NOTE: The "original TTL" must be restored into the covered RRs when NOTE: The "original TTL" must be restored into the covered RRs when
the signature is verified. This implies that the RRs for a the signature is verified. This implies that all RRs for a
particular type need to all have the same TTL to start with. particular type, name, and class need to 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.) SIG RRs should not ignoring leap seconds. (See also Section 4.4.) SIG RRs should not
have a date signed significantly in the future. To prevent have a date signed significantly in the future. To prevent
misordering of network request to update a zone dynamically, misordering of network request to update a zone dynamically,
monotonically increasing "time signed" dates are necessary. monotonically increasing "time signed" dates may be necessary.
The "time signed" field is an unsigned number of seconds since the The "time signed" field is an unsigned number of seconds since the
start of 1 January 1970, GMT, ignoring leap seconds. start of 1 January 1970, GMT, ignoring leap seconds.
A SIG RR with an expiration date before the date signed is A SIG RR with an expiration date before the time signed should be
ineffective. considered corrupt and ignored.
The "key footprint" is a 16 bit quantity that is used to help The "key footprint" is a 16 bit quantity that is used to help
efficiently select between multiple keys which may be applicable and efficiently select between multiple keys which may be applicable and
as a quick check that a public key about to be used for the as a quick check that a public key about to be used for the
computationally expensive effort to check the signature is possibly computationally expensive effort to check the signature is possibly
valid. Its exact meaning is algorithm dependent. For the MD5/RSA valid. Its exact meaning is algorithm dependent. For the MD5/RSA
algorithm, it is the next to the bottom two octets of the public key algorithm, it is the next to the bottom two octets of the public key
modulus needed to decode the signature field. That is to say, the modulus needed to decode the signature field. That is to say, the
most significant 16 of the lest significant 24 bits of this quantity most significant 16 of the lest significant 24 bits of the modulus in
in network order. network order.
The "signer's name" field is the domain name of the signer generating The "signer's name" field is the domain name of the signer generating
the SIG RR. This is frequently the zone which contained the RR(s) the SIG RR. This is the owner of the public KEY RR that can be used
being authenticated. The signer's name may be compressed with to verify the signature. It is frequently the zone which contained
standard DNS name compression when being transmitted over the the RR(s) being authenticated. The signer's name may be compressed
with standard DNS name compression when being transmitted over the
network. network.
The structure of the "signature" field is described below. The structure of the "signature" field is described below.
4.1.1 Signature Data 4.1.1 Signature Data
Except for algorithm number 253 where it is null, the actual Except for algorithm number 253 where it is null, the actual
signature portion of the SIG RR binds the other RDATA fields to all signature portion of the SIG RR binds the other RDATA fields to all
of the "type covered" RRs with that owner name. These covered RRs of the "type covered" RRs with that owner name and class. These
are 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, RDATA is all the RDATA fields in the SIG RR where "|" is concatenation, RDATA is all the RDATA fields in the SIG
itself before the signature, and RR(s) are all the RR(s) of the type RR itself before the signature, and RR(s) are all the RR(s) of the
covered with the same owner name and class as the SIG RR in canonical type covered with the same owner name and class as the SIG RR in
form and order. canonical form and order. How this data sequence is processed into
the signature is algorithm dependent.
For purposes of DNS security, the canonical form for an RR is the RR For purposes of DNS security, the canonical form for an RR is the RR
with domain names (1) fully expanded (no name compression via with domain names (1) fully expanded (no name compression via
pointers) and (2) all domain name letters set to lower case. pointers), (2) all domain name letters set to lower case, and (3) the
original TTL substituted for the current TTL.
For purposes of DNS security, the canonical order for RRs is to sort For purposes of DNS security, the canonical order for RRs is to sort
them in ascending order by name, then by type, as left justified them in ascending order by name, then by type, as left justified
unsigned octet sequences in network (transmission) order where a unsigned octet sequences in network (transmission) order where a
missing octet sorts before a zero octet. (See also ordering missing octet sorts before a zero octet. (See also ordering
discussion in Section 5.1.) Within any particular name and type they discussion in Section 5.1.) Within any particular name they are
are similarly sorted by RDATA as a left justified unsigned octet similarly sorted by type and then RDATA as a left justified unsigned
sequence. EXCEPT that the type SIG RR(s) covering any particular type octet sequence. EXCEPT that the type SIG RR(s) covering any
appear immediately after the other RRs of that type. Thus if at name particular type appear immediately after the other RRs of that type.
a.b there is one A RR and one KEY RR, their order with SIGs for (This special consideration for SIG RR(s) in ordering really only
concatenating the "data" to be signed would be as follows: applies to calculating the AXFR SIG RR as explained in section 4.1.3
below.) Thus if at name a.b there are two A RRs and one KEY RR,
their order with SIGs for concatenating the "data" to be signed would
be as follows:
a.b. A .... a.b. A ....
a.b. A ....
a.b. SIG A ... a.b. SIG A ...
a.b. KEY ... a.b. KEY ...
a.b. SIG KEY ... a.b. SIG KEY ...
(SIGs on type ANY should not be included in a zone.) SIGs covering type ANY should not be included in a zone.
How this data sequence is processed into the signature is algorithm
dependent.
4.1.2 MD5/RSA Algorithm Signature Calculation 4.1.2 MD5/RSA Algorithm Signature Calculation
For the MD5/RSA algorithm, the signature is as follows For the MD5/RSA algorithm, the signature is as follows
hash = MD5 ( data ) hash = MD5 ( data )
signature = ( 01 | FF* | 00 | prefix | hash ) ** e (mod n) signature = ( 01 | FF* | 00 | prefix | hash ) ** e (mod n)
where MD5 is the message digest algorithm documented in RFC 1321, "|" where MD5 is the message digest algorithm documented in RFC 1321, "|"
is concatenation, "e" is the secret key exponent of the signer, and is concatenation, "e" is the private key exponent of the signer, and
"n" is the public modulus of the signer's public key. 01, FF, and 00 "n" is the public modulus of the signer's public key. 01, FF, and 00
are fixed octets of the corresponding hexadecimal value. "prefix" is are fixed octets of the corresponding hexadecimal value. "prefix" is
the ASN.1 BER MD5 algorithm designator prefix specified in PKCS1, the ASN.1 BER MD5 algorithm designator prefix specified in PKCS1,
that is, that is,
hex 3020300c06082a864886f70d020505000410 [NETSEC]. hex 3020300c06082a864886f70d020505000410 [NETSEC].
The FF octet is repeated the maximum number of times such that the This prefix is included to make it easier to use RSAREF or similar
value of the quantity being exponentiated is one octet shorter than packages. The FF octet is repeated the maximum number of times such
the value of n. that the value of the quantity being exponentiated is one octet
shorter than the value of n.
The above specifications are exactly Public Key Cryptographic The above specifications are Public Key Cryptographic Standard #1
Standard #1 [PKCS1]. [PKCS1].
The size of n, including most and least significant bits (which will The size of n, including most and least significant bits (which will
be 1) SHALL be not less than 512 bits and not more than 2552 bits. n be 1) SHALL be not less than 512 bits and not more than 2552 bits. n
and e SHOULD be chosen such that the public exponent is small. and e SHOULD be chosen such that the public exponent is small.
Leading zeros bytes are not permitted in the MD5/RSA algorithm Leading zeros bytes are not permitted in the MD5/RSA algorithm
signature. signature.
A public exponent of 3 minimizes the effort needed to decode a A public exponent of 3 minimizes the effort needed to decode a
signature. Use of 3 as the public exponent may be weak for signature. Use of 3 as the public exponent may be weak for
skipping to change at page 22, line 21 skipping to change at page 23, line 28
easily recovered. This weakness is not significant for DNS because easily recovered. This weakness is not significant for DNS because
we seek only authentication, not confidentiality. we seek only authentication, not confidentiality.
4.1.3 Zone Transfer (AXFR) SIG 4.1.3 Zone Transfer (AXFR) SIG
The above SIG mechanisms assure the authentication of all zone signed The above SIG mechanisms assure the authentication of all zone signed
RRs of a particular name, class and type. However, to efficiently RRs of a particular name, class and type. However, to efficiently
secure complete zone transfers, a SIG RR owned by the zone name must secure complete zone transfers, a SIG RR owned by the zone name must
be created with a type covered of AXFR that covers all zone signed be created with a type covered of AXFR that covers all zone signed
RRs other than the SIG AXFR itself. It will be calculated by hashing RRs other than the SIG AXFR itself. It will be calculated by hashing
together all other static zone RRs, including SIGs. The RRs are together all other zone signed RRs, including SIGs. The RRs are
ordered and concatenated for hashing as described in Section 4.1.1. ordered and concatenated for hashing as described in Section 4.1.1.
(See also ordering discussion in Section 5.1.) (See also ordering discussion in Section 5.1.)
The AXFR SIG must be calculated last of all zone key signed SIGs in The AXFR SIG must be calculated last of all zone key signed SIGs in
the zone. It really belongs to the zone as a whole, not to the zone 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. 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 After validation of the AXFR SIG, the zone MAY be considered valid
without verification of all the internal zone SIGs in the zone; without verification of all the internal zone SIGs in the zone;
however, any SIGs signed by entity keys or the like must still be 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 validated. The AXFR SIG SHOULD be transmitted first in a zone
the receiver can tell immediately that they may be able to avoid transfer so the receiver can tell immediately that they may be able
verifying other zone signed SIGs. to avoid verifying other zone signed SIGs.
Dynamic zone RRs which might be added by a dynamic zone update RRs which might be added by a dynamic zone update protocol or are
protocol and signed by an end entity or user key rather than a zone otherwise signed by an end entity or user key and not by the zone key
key (see Section 3.2) are not included in the AXFR SIG. They (see Section 3.2) are not included in the AXFR SIG. They may
originate in the network and will not, in general, be migrated to the originate in the network and might not, in general, be migrated to
recommended off line zone signing procedure (see Section 8.2). Thus the recommended off line zone signing procedure (see Section 7.2).
such dynamic RRs are not directly signed by the zone, are not Thus, such RRs are not directly signed by the zone, are not included
included in the AXFR SIG, and are not generally protected against in the AXFR SIG, and are protected against omission from zone
omission from zone transfers. transfers only to the extent that the server and communication can be
trusted.
4.1.4 Transaction SIGs 4.1.4 Transaction and Request SIGs
A response message from a security aware server may optionally A response message from a security aware server may optionally
contain a special SIG as the last item in the additional information contain a special SIG as the last item in the additional information
section to authenticate the transaction. section to authenticate the transaction.
This SIG has a "type covered" field of zero, which is not a valid RR This SIG has a "type covered" field of zero, which is not a valid RR
type. It is calculated by using a "data" (see Section 4.1.2) of the type. It is calculated by using a "data" (see Section 4.1.2) of the
entire preceding DNS reply message, including DNS header, entire preceding DNS reply message, including DNS header,
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 final transaction SIG) | full query data = full response (less final transaction SIG) | full query
Verification of the transaction SIG (which is signed by the server Verification of the transaction SIG (which is signed by the server
host key, not the zone key) by the requesting resolver shows that the host key, not the zone key) by the requesting resolver shows that the
query and response were not tampered with in transit, that the query and response were not tampered with in transit, that the
response corresponds to the intended query, and that the response response corresponds to the intended query, and that the response
comes from the queried server. comes from the queried server.
A DNS request may be optionally signed by including one or more SIGs
at the end of the the query. Such SIGs are identified by having a
"type covered" field of zero. They sign the preceding DNS request
message including DNS header but not including any preceding request
SIGs. Such request SIGs are included in the "data" used to form any
optional response transaction SIG.
WARNING: Request SIGs are unnecessary for currently defined queries
and will cause almost all existing DNS servers to completely ignore a
query. However, such SIGs may be need to authenticate future DNS
secure dynamic update or other requests.
4.2 SIG RRs in the Construction of Responses 4.2 SIG RRs in the Construction of Responses
Security aware servers MUST, for every authoritative RR the query Security aware DNS servers MUST, for every authoritative RR the query
will return, attempt to send the available SIG RRs which authenticate will return, attempt to send the available SIG RRs which authenticate
the requested RR. The following rules apply to the inclusion of SIG the requested RR. The following rules apply to the inclusion of SIG
RRs in responses: RRs in responses:
1. when an RR is placed in a response, its SIG RR has a higher 1. when an RR is placed in a response, its SIG RR has a higher
priority for inclusion than other RRs that may need to be priority for inclusion than other RRs that may need to be
included. If space does not permit its inclusion, the response included. If space does not permit its inclusion, the response
MUST be considered truncated. MUST be considered truncated except as provided in 2 below.
2. when a SIG RR is present for an RR to be included in the 2. when a SIG RR is present for an additional information section RR,
additional information section, the response MUST NOT be the response MUST NOT be considered truncated merely because space
considered truncated if space does not permit the inclusion of the does not permit the inclusion of its SIG RR.
SIG RR.
Sending SIGs to authenticate non-authoritative data (glue records and SIGs to authenticate non-authoritative data (glue records and NS RRs
NS RRs for subzones) is unnecessary and must be avoided. Note that for subzones) are unnecessary and MUST not be sent. Note that KEYs
KEYs for subzones are authoritative. for subzones are authoritative in a superzone.
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. This is a change in
the existing standard which contemplates only NS and SOA RRs in the
authority 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 TTL, are meaningless. The class and TTL fields SHOULD be zero. To
conserve space, the owner 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 If transaction authentication is desired, that SIG RR must be
considered higher priority for inclusion than any other RR in the considered higher priority for inclusion than any other RR in the
answer. response.
4.3 Processing Responses and SIG RRs 4.3 Processing Responses and SIG RRs
The following rules apply to the processing of SIG RRs included in a The following rules apply to the processing of SIG RRs included in a
response: response:
1. a security aware resolver that receives a response from what it 1. a security aware resolver that receives a response from what it
believes to be a security aware server via a communication path believes to be a security aware server via a secure communication
that it believes to be secure with the AD bit (see Section 6.1) with the AD bit (see Section 6.1) set, MAY choose to accept the
set, MAY choose to accept the RRs as received without verifying RRs as received without verifying the SIG RRs.
the SIG RRs.
2. in other cases, a security aware resolver SHOULD verify the SIG 2. in other cases, a security aware resolver SHOULD verify the SIG
RRs for the RRs of interest. This may involve initiating RRs for the RRs of interest. This may involve initiating
additional queries for SIG or KEY RRs, at least in the case of additional queries for SIG or KEY RRs, especially in the case of
getting a response from an insecure server. (As explained in 4.2 getting a response from an insecure server. (As explained in 4.2
above, it will not be possible to secure CNAMEs being served up by above, it will not be possible to secure CNAMEs being served up by
non-secure resolvers.) non-secure resolvers.)
NOTE: Implementors might expect the above SHOULD to be a MUST. NOTE: Implementers might expect the above SHOULD to be a MUST.
However, local policy or the calling application may not require However, local policy or the calling application may not require
the security services. the security services.
3. If SIG RRs are received in response to a user query explicitly 3. If SIG RRs are received in response to a user query explicitly
specifying the SIG type, no special processing is required. 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. If all of the SIG RR(s) purporting to authenticate a set of ignored. If all of the SIG RR(s) purporting to authenticate a set of
RRs are invalid, then the set of RR(s) is not authenticated. RRs are invalid, then the set of RR(s) is not authenticated.
If the SIG RR is the last RR in a response in the additional If the SIG RR is the last RR in a response in the additional
information section and has a type covered of zero, it is a information section and has a type covered of zero, it is a
transaction signature of the response and the query that produced the transaction signature of the response and the query that produced the
response. It MAY be optionally checked and the message rejected if response. It MAY be optionally checked and the message rejected if
the checks fail. But even if the checks succeed, such a transaction the checks fail. But even if the checks succeed, such a transaction
authentication SIG does NOT authenticate any RRs in the message. authentication SIG does NOT authenticate any RRs in the message.
Only a proper SIG RR signed by the zone can authenticate RRs. If a Only a proper SIG RR signed by the zone or a key tracing its
resolver does not implement transaction SIGs, it MUST at least ignore authority to the zone can authenticate RRs. If a resolver does not
them without error. implement transaction and/or request SIGs, it MUST ignore them
without error.
If all reasonable checks indicate that the SIG RR is valid then RRs If all reasonable checks indicate that the SIG RR is valid then RRs
verified by it should be considered authenticated. verified by it should be considered authenticated.
4.4 Signature Expiration, TTLs, and Validity 4.4 Signature Expiration, TTLs, and Validity
Security aware servers must not consider SIG RRs to be authentic Security aware servers must not consider SIG RRs to authenticate
after their expiration time and not consider any RR to be anything after their expiration time and not consider any RR to be
authenticated after its signatures have expired. Within that authenticated after its signatures have expired. Within that
constraint, servers should continue to follow DNS TTL aging. Thus constraint, servers should continue to follow DNS TTL aging. Thus
authoritative servers should continue to follow the zone refresh and authoritative servers should continue to follow the zone refresh and
expire parameters and a non-authoritative server should count down expire parameters and a non-authoritative server should count down
the TTL and discard RRs when the TTL is zero. In addition, when RRs the TTL and discard RRs when the TTL is zero. In addition, when RRs
are transmitted in a query response, the TTL should be trimmed so are transmitted in a query response, the TTL should be trimmed so
that current time plus the TTL does not extend beyond the signature that current time plus the TTL does not extend beyond the signature
expiration time. Thus, in general, the TTL on an transmitted RR expiration time. Thus, in general, the TTL on an transmitted RR
would be would be
min(sigExpTim,max(zoneMinTTL,min(originalTTL,currentTTL))) min(sigExpTim,max(zoneMinTTL,min(originalTTL,currentTTL)))
4.5 File Representation of SIG RRs 4.5 File Representation of SIG RRs
A SIG RR can be represented as a single logical line in a zone data A SIG RR can be represented as a single logical line in a zone data
file [RFC1033] but there are some special considerations as described file [RFC1033] but there are some special considerations as described
below. (It does not make sense to include a transaction below. (It does not make sense to include a transaction or request
authenticating SIG RR in a file as it is a transient authentication authenticating SIG RR in a file as they are a transient
that covers data including an ephemeral transaction number so it must authentication that covers data including an ephemeral transaction
be calculated in real time by the DNS server.) number and so must be calculated in real time.)
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 appear as unsigned integers. The original TTL and algorithm fields appear as unsigned integers.
If the original TTL, which applies to the type signed, is the same as If the original TTL, which applies to the type signed, is the same as
skipping to change at page 27, line 13 skipping to change at page 28, line 13
standard parenthesis. standard parenthesis.
5. Non-existent Names and Types 5. Non-existent Names and Types
The SIG RR mechanism described in Section 4 above provides strong The SIG RR mechanism described in Section 4 above provides strong
authentication of RRs that exist in a zone. But is it not authentication of RRs that exist in a zone. But is it not
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 or a type for an existent name. in a zone or a type for an existent name.
The nonexistence of a name in a zone is indicated by the NXT ("next") The nonexistence of a name in a zone is indicated by the NXT ("next")
RR for a name interval containing the nonexistent name. An NXT RR and RR for a name interval containing the nonexistent name. A NXT RR and
its SIG are returned in the authority section, along with the error, its SIG are returned in the authority section, along with the error,
if the server is security aware. The same is true for a non-existent if the server is security aware. The same is true for a non-existent
type under an existing name. NXT RRs will also be returned if an type under an existing name. This is a change in the existing
explicit query is made for the NXT type. standard which contemplates only NS and SOA RRs in the authority
section. NXT RRs will also be returned if an explicit query is made
for the NXT type.
The existence of a complete set of NXT 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 and type to a security aware server serving any query for any name and type to a security aware server serving
the zone will result in an reply containing at least one signed RR. the zone will result in an reply containing at least one signed RR.
NXT RRs do not appear in zone master files since they can be derived NXT RRs do not appear in zone master files since they can be derived
from the rest of the zone. from the rest of the zone.
5.1 The NXT Resource Record 5.1 The NXT Resource Record
The NXT resource record is used to securely indicate that RRs with an The NXT resource record is used to securely indicate that RRs with an
owner name in a certain name interval do not exist in a zone and to owner name in a certain name interval do not exist in a zone and to
indicate what zone signed type RRs are present for an existing name. indicate what zone signed RR types are present for an existing name.
The owner name of the NXT RR is an existing name in the zone. It's The owner name of the NXT RR is an existing name in the zone. It's
RDATA is a "next" name and a type bit map. The presence of the NXT RR RDATA is a "next" name and a type bit map. The presence of the NXT RR
means that generally no name between its owner name and the name in means that generally no name between its owner name and the name in
its RDATA area exists and that no other types exist under its owner its RDATA area exists and that no other zone signed types exist under
name. This implies a canonical ordering of all domain names in a its owner name. This implies a canonical ordering of all domain
zone. names in a zone.
The ordering is to sort labels as unsigned left justified octet The ordering is to sort labels as unsigned left justified octet
strings where the absence of a octet sorts before a zero octet and strings where the absence of a octet sorts before a zero octet and
upper case letters are treated as lower case letters. Names are then upper case letters are treated as lower case letters. Names are then
sorted by sorting on the highest level label and then, within those sorted by sorting on the highest level label and then, within those
names with the same highest level label by the next lower label, etc. names with the same highest level label by the next lower label, etc.
Since we are talking about a zone, the zone name itself always exists Since we are talking about a zone, the zone name itself always exists
and all other names are the zone name with some prefix of lower level and all other names are the zone name with some prefix of lower level
labels. Thus the zone name itself always sorts first. labels. Thus the zone name itself always sorts first.
There is a problem with the last NXT in a zone as it wants to have an There is a problem with the last NXT in a zone as it wants to have an
owner name which is the last existing name in sort order, which is owner name which is the last existing name in sort order, which is
easy, but it is not obvious what name to put in its RDATA to indicate easy, but it is not obvious what name to put in its RDATA to indicate
the entire remainder of the name space. This is handled by treating the entire remainder of the name space. This is handled by treating
the name space as circular and putting the zone name in the RDATA of the name space as circular and putting the zone name in the RDATA of
the last NXT. the last NXT in a zone.
There are special considerations due to interaction with wildcards as There are special considerations due to interaction with wildcards as
explained below. explained below.
The NXT RRs for a zone should be automatically calculated and added The NXT RRs for a zone should be automatically calculated and added
to the zone by the same recommended off-line process that signs the to the zone by the same recommended off-line process that signs the
zone. The NXT RR's TTL should not exceed the zone minimum TTL. zone (see Section 7.2). The NXT RR's TTL should not exceed the zone
minimum TTL.
5.2 NXT RDATA Format 5.2 NXT RDATA Format
The RDATA for an NXT RR consists simply of a domain name followed by The RDATA for an NXT RR consists simply of a domain name followed by
a bit map. a bit map.
The type number for the NXT RR is 30. The type number for the NXT RR is 30.
1 1 1 1 1 1 1 1 1 1 2 2 2 2 2 2 2 2 2 2 3 3 1 1 1 1 1 1 1 1 1 1 2 2 2 2 2 2 2 2 2 2 3 3
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
skipping to change at page 28, line 36 skipping to change at page 29, line 39
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
The NXT RR type bit map is one bit per RR type present for the owner The NXT RR type bit map is one bit per RR type present for the owner
name similar to the WKS socket bit map. The first bit represents RR name similar to the WKS socket bit map. The first bit represents RR
type zero (an illegal type which should not be present.) A one bit type zero (an illegal type which should not be present.) A one bit
indicates that at least one RR of that type is present for the owner indicates that at least one RR of that type is present for the owner
name. A zero indicates that no such RR is present. All bits not name. A zero indicates that no such RR is present. All bits not
specified because they are beyond the end of the bit map are assumed specified because they are beyond the end of the bit map are assumed
to be zero. Note that bit 30, for NXT, will always be on so the to be zero. Note that bit 30, for NXT, will always be on so the
minimum bit map length is actually four octets. The NXT bit map minimum bit map length is actually four octets. The NXT bit map
should be printed as a list of type mnemonics or decimal numbers should be printed as a list of RR type mnemonics or decimal numbers
similar to the WKS RR. similar to the WKS RR.
The size of the bit map can be inferred from the RDLENGTH and the The domain name may be compressed with standard DNS name compression
length of the next domain name. when being transmitted over the network. 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 zone foo.tld has entries for Assume zone foo.tld has entries for
big.foo.tld, big.foo.tld,
medium.foo.tld. medium.foo.tld.
small.foo.tld. small.foo.tld.
tiny.foo.tld. tiny.foo.tld.
Then a query to a security aware server for huge.foo.tld would Then a query to a security aware server for huge.foo.tld would
produce an error reply with the authority section data including produce an error reply with the authority section data including
something like the following: something like the following:
big.foo.tld. NXT medium.foo.tld. A MX SIG NXT big.foo.tld. NXT medium.foo.tld. A MX SIG NXT
skipping to change at page 29, line 41 skipping to change at page 30, line 45
very ugly and long like \255\255\255....X.zone. So the NXT for the very ugly and long like \255\255\255....X.zone. So the NXT for the
interval following is simply given the owner name *.X.ZONE. This "*" interval following is simply given the owner name *.X.ZONE. This "*"
type name is not expanded when the NXT is returned as authority type name is not expanded when the NXT is returned as authority
information in connection with a query for a non-existent name. information in connection with a query for a non-existent name.
If there could be any wildcard RRs in a zone and thus wildcard NXTs, If there could be any wildcard RRs in a zone and thus wildcard NXTs,
care must be taken in interpreting the results of explicit NXT care must be taken in interpreting the results of explicit NXT
retrievals as the owner name may be a wildcard expansion. retrievals as the owner name may be a wildcard expansion.
The existence of one or more wildcard RRs covering a name interval The existence of one or more wildcard RRs covering a name interval
makes it possible for a malicious server to hide any more specificly makes it possible for a malicious server to hide any more
named RRs in the internal. The server can just falsely return the specifically named RRs in the internal. The server can just falsely
wildcard match NXT instead of the more specificly named RRs. If return the wildcard match NXT instead of the more specifically named
there is a zone wide wildcard, there will be an NXT RR whose owner RRs. If there is a zone wide wildcard, there will be an NXT RR whose
name is the wild card and whose RDATA is the zone name. In this case owner name is the wild card and whose RDATA is the zone name. In
a server could conceal the existence of any more specific RRs in the this case a server could conceal the existence of any more specific
zone. (It would be possible to design a more strict NXT feature RRs in the zone. (It would be possible to design a more strict NXT
which would eliminate this possibility. But it would be more complex feature which would eliminate this possibility. But it would be more
and might be so constraining as to make any dynamic update feature complex and might be so constraining as to make any dynamic update
that could create new names very difficult (see Section 3.2).) feature that could create new names very difficult.)
What name should be put into the RDATA of an NXT RR with an owner What name should be put into the RDATA of an NXT RR with an owner
name that is within a wild card scope? Since the "next" existing name that is within a wild card scope? Since the "next" existing
name will be one that matches the wild card, the wild card name name will be one that matches the wild card, the wild card name
should be used. Inclusion of such NXTs within a wild card scope is should be used. Inclusion of such NXTs for names interior to a wild
optional. card scope is optional.
5.5 Blocking NXT Pseudo-Zone Transfers 5.5 Blocking NXT Pseudo-Zone Transfers
In a secure zone, a resolver can query for the initial NXT associated In a secure zone, a resolver can query for the initial NXT associated
with the zone name. Using the next domain name RDATA field from that with the zone name. Using the next domain name RDATA field from that
RR, it can query for the next NXT RR. By repeating this, it can walk RR, it can query for the next NXT RR. By repeating this, it can walk
through all the NXTs in the zone. If there are no wildcards, it can through all the NXTs in the zone. If there are no wildcards, it can
use this technique to find all names in a zone. If it does type ANY use this technique to find all names in a zone. If it does type ANY
queries, it can incrementally get all information in the zone and queries, it can incrementally get all information in the zone and
perhaps defeat attempts to administratively block zone transfers. perhaps defeat attempts to administratively block zone transfers.
skipping to change at page 30, line 40 skipping to change at page 31, line 45
real names exist in the zone. This protection from pseudo-zone real names exist in the zone. This protection from pseudo-zone
transfers is bought at the expense of eliminating the data origin transfers is bought at the expense of eliminating the data origin
authentication of the non-existence of names that NXT RRs can authentication of the non-existence of names that NXT RRs can
provide. If an entire zone is covered by a wildcard, a malicious provide. If an entire zone is covered by a wildcard, a malicious
server can return an RR produced by matching the resulting wildcard server can return an RR produced by matching the resulting wildcard
NXT and can thus hide all the real data and delegations with more NXT and can thus hide all the real data and delegations with more
specific names in the zone. specific names in the zone.
5.6 Special Considerations at Delegation Points 5.6 Special Considerations at Delegation Points
A name other than root which is the head of a zone also appears as A name (other than root) which is the head of a zone also appears as
the leaf in a superzone. If both are secure, there will always be the leaf in a superzone. If both are secure, there will always be
two different NXT RRs with the same name. They can be distinguished two different NXT RRs with the same name. They can be distinguished
by their signers and next domain name fields. Security aware servers by their signers and next domain name fields. Security aware servers
should return the correct NXT automatically when required to should return the correct NXT automatically when required to
authenticate the non-existence of a name and both NXTs, if available, authenticate the non-existence of a name and both NXTs, if available,
on explicit query for type NXT. on explicit query for type NXT.
Insecure servers will never automatically return an NXT and may only Insecure servers will never automatically return an NXT and some
return the NXT from the subzone on explicit queries. implementations may only return the NXT from the subzone on explicit
queries.
6. The AD and CD Bits and How to Resolve Securely 6. The AD and CD Bits and How to Resolve Securely
Retrieving or resolving authentic data from the Domain Name System Retrieving or resolving authentic data from the Domain Name System
(DNS) involves starting with one or more trusted public keys. With (DNS) involves starting with one or more trusted public keys for one
trusted keys, a resolver willing to perform cryptography can progress or more zones. With trusted keys, a resolver willing to perform
securely through the secure DNS zone structure to the zone of cryptography can progress securely through the secure DNS zone
interest as described in Section 6.3. Such trusted public keys would structure to the zone of interest as described in Section 6.3. Such
normally be configured in a manner similar to that described in trusted public keys would normally be configured in a manner similar
Section 6.2. However, as a practical matter, a security aware to that described in Section 6.2. However, as a practical matter, a
resolver would still gain some confidence in the results it returns security aware resolver would still gain some confidence in the
even if it was not configured with any keys but trusted what it got results it returns even if it was not configured with any keys but
from a local well known server as a starting point. trusted what it got from a local well known server as a starting
point.
Data stored at a server needs security labels of Authenticated, Data stored at a security aware server needs to be internally
Pending, or Insecure. There is also a fourth transient state of Bad categorized as Authenticated, Pending, or Insecure. There is also a
which indicates that SIG checks have explicitly failed on the data. fourth transient state of Bad which indicates that all SIG checks
Such Bad data is not retained at a security aware server. have explicitly failed on the data. Such Bad data is not retained at
Authenticated means that the data has a valid SIG under a KEY a security aware server. Authenticated means that the data has a
traceable via a chain of zero or more SIG and KEY RRs to a KEY valid SIG under a KEY traceable via a chain of zero or more SIG and
configured at the resolver via its boot file. Pending data has no KEY RRs to a KEY configured at the resolver via its boot file.
authenticated SIGs and at least one additional SIG the resolver is Pending data has no authenticated SIGs and at least one additional
still trying to authenticate. Insecure data is data which it is SIG the resolver is still trying to authenticate. Insecure data is
known can never be either Authenticated or found Bad because it is in data which it is known can never be either Authenticated or found Bad
a zone with no key or an experimental key. Behavior in terms of because it is in or has been reached via a non-secured zone. Behavior
control of and flagging based on such data labels is described in in terms of control of and flagging based on such data labels is
Section 6.1. described in Section 6.1.
The proper validation of signatures requires a reasonably secure The proper validation of signatures requires a reasonably secure
shared opinion of the absolute time between resolvers and servers as shared opinion of the absolute time between resolvers and servers as
described in Section 6.4. described in Section 6.4.
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 6.1 The AD and CD Header Bits
Two unused bits are allocated out of the DNS query/response format Two unused bits are allocated out of the DNS query/response format
header. The AD (authentic data) bit indicates in a response that the header. The AD (authentic data) bit indicates in a response that the
data included has been verified by the server providing it. The CD data included has been verified by the server providing it. The CD
(checking disabled) bit indicates in a query that non-verified data (checking disabled) bit indicates in a query that non-verified data
is acceptable to the resolver sending the query. is acceptable to the resolver sending the query.
These bits are allocated from the must-be-zero Z field as follows: These bits are allocated from the must-be-zero Z field as follows:
skipping to change at page 32, line 27 skipping to change at page 34, line 27
+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+ +--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+
| ARCOUNT | | ARCOUNT |
+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+ +--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+
These bits are zero in old servers and resolvers. Thus the responses These bits are zero in old servers and resolvers. Thus the responses
of old servers are not flagged as authenticated to security aware of old servers are not flagged as authenticated to security aware
resolvers and queries from non-security aware resolvers do not assert resolvers and queries from non-security aware resolvers do not assert
the checking disabled bit and thus will be answered by security aware the checking disabled bit and thus will be answered by security aware
servers only with authenticated data. Of course security aware servers only with authenticated data. Of course security aware
resolvers can not trust the AD bit unless they trust the server they resolvers can not trust the AD bit unless they trust the server they
are talking to and have a secure path to it. are talking to and either have a secure path to it or use DNS
transaction security.
Any security aware resolver willing to do cryptography should assert Any security aware resolver willing to do cryptography SHOULD assert
the CD bit on all queries to reduce DNS latency time by allowing the CD bit on all queries to reduce DNS latency time by allowing
security aware servers to answer before they have resolved the security aware servers to answer before they have resolved the
validity of data. validity of data.
Security aware servers never return Bad data. For non-security aware Security aware servers NEVER return Bad data. For non-security aware
resolvers or security aware resolvers requesting service by having resolvers or security aware resolvers requesting service by having
the CD bit clear, security aware servers return only Authenticated or the CD bit clear, security aware servers return only Authenticated or
Insecure data with the AD bit set in the response. Security aware Insecure data with the AD bit set in the response. Security aware
resolvers will know that if data is Insecure versus Authentic by the resolvers will know that if data is Insecure versus Authentic by the
absence of SIG RRs. Security aware servers may return Pending data absence of SIG RRs. Security aware servers may return Pending data
to security aware resolvers requesting the service by clearing the AD 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 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. RRs in the response are either Authenticated or Insecure.
6.2 Boot File Format 6.2 Boot File Format
The format for a boot file directive to configure a starting zone key The format for a boot file directive to configure a starting zone key
is as follows: is as follows:
pubkey name flags protocol algorithm key-data pubkey name flags protocol algorithm key-data
for a public key. "name" is the owner name (if the line is for a public key. "name" is the owner name (if the line is
translated into a KEY RR). Flags indicates the type of key and is translated into a KEY RR). Flags indicates the type of key and is
the same as the flag octet in the KEY RR. Algorithm is the algorithm the same as the flag octet in the KEY RR. Protocol and algorithm
in use where one is the MD5/RSA algorithm and 254 indicates a private also have the same meaning as they do in the KEY RR. The material
algorithm. The material after the algorithm is algorithm dependent after the algorithm is algorithm dependent and, for private
and, for private algorithms, starts with the algorithm's identifying algorithms (algorithm 254), starts with the algorithm's identifying
OID. If the "no key" bit is on in flags or the algorithm is OID. If the "no key" bit is on in flags or the algorithm is
specified as 253, then the key-data after algorithm may be omitted. specified as 253, then the key-data after algorithm is null. It is
It is treated as an octet stream and encoded in base 64 (see treated as an octet stream and encoded in base 64 (see Appendix).
Appendix).
A file of keys for cross certification or other purposes can be A file of keys for cross certification or other purposes can be
configured though the keyfile directive as follows: configured though the keyfile directive as follows:
keyfile filename keyfile filename
The file looks like a master file except that it can only contain KEY The file looks like a master file except that it can only contain KEY
and SIG RRs with the SIGs signed under a key configured with the and SIG RRs with the SIGs signed under a key configured with the
pubkey directive. pubkey directive.
While it might seem logical for everyone to start with the key for While it might seem logical for everyone to start with the key for
the root zone, this has problems. The logistics of updating every the root zone, this has problems. The logistics of updating every
DNS resolver in the world when the root key changes would be DNS resolver in the world when the root key changes would be
excessive. It may be some time before there even is a root key. excessive. It may be some time before there even is a root key.
Furthermore, many organizations will explicitly wish their "interior" Furthermore, many organizations will explicitly wish their "interior"
DNS implementations to completely trust only their own zone. These DNS implementations to completely trust only their own zone. These
interior resolvers can then go through the organization's zone server interior resolvers can then go through the organization's zone
to access data outsize the organization's domain. servers to access data outsize the organization's domain.
6.3 Chaining Through Zones 6.3 Chaining Through Zones
Starting with one or more trusted keys for a zone, it should be Starting with one or more trusted keys for a zone, it should be
possible to retrieve signed keys for its subzones which have a key possible to retrieve signed keys for its subzones which have a key
and, if the zone is not root, for some superzone. Every authoritative and, if the zone is not root, for its superzone. Every authoritative
secure zone server should also include the KEY RR for a super-zone secure zone server MUST also include the KEY RR for a super-zone
signed by the secure zone via a keyfile directive. This makes it signed by the secure zone via a keyfile directive. This makes it
possible to climb the tree of zones if one starts below root. A possible to climb the tree of zones if one starts below root. A
secure sub-zone is indicated by a KEY RR appearing with the NS RRs secure sub-zone is indicated by a KEY RR with non-null key
for the sub-zone. These make it possible to descend within the tree information appearing with the NS RRs for the sub-zone. These make
of zones. it possible to descend within the tree of zones.
A resolver should keep track of the number of successive secure zones A resolver should keep track of the number of successive secure zones
traversed from a starting point to any secure zone it can reach. In traversed from a starting point to any secure zone it can reach. In
general, the lower such a distance number is, the greater the general, the lower such a distance number is, the greater the
confidence in the data. Data configured via a boot file directive confidence in the data. Data configured via a boot file directive
should be given a distance number of zero. Should a query encounter should be given a distance number of zero. Should a query encounter
different data for the same query with different distance values, different data for the same query with different distance values,
that with a larger value should be ignored. that with a larger value should be ignored.
A security conscious resolver should completely refuse to step from a A security conscious resolver should completely refuse to step from a
secure zone into a non-secure zone unless the non-secure zone is secure zone into a non-secure zone unless the non-secure zone is
certified to be non-secure, or only experimentally secure, by the certified to be non-secure, or only experimentally secure, by the
presence of an authenticated KEY RR for the non-secure zone with 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 algorithm 253 or the presence of a KEY RR with the
Otherwise the resolver is probably getting completely bogus or experimental bit set. Otherwise the resolver is probably getting
spoofed data. bogus or 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 is a good practice and will, as a
some increase in security. practical matter, provide some small increase in security.
6.4 Secure Time 6.4 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 MUST 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 the Domain Name System (DNS) using these proposed operation of the Domain Name System (DNS) using these protocol
protocol extensions. 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 zone key usually do not all point in the same direction. Choice of zone key
size should generally be made by the zone administrator depending on size should generally be made by the zone administrator depending on
their local conditions. their local conditions.
For most schemes, larger keys are more secure but slower. Given a For most schemes, larger keys are more secure but slower. Given a
small public exponent, verification (the most common operation) for small public exponent, verification (the most common operation) for
the MD5/RSA algorithm will vary roughly with the square of the the MD5/RSA algorithm will vary roughly with the square of the
modulus length, signing will vary with the cube of the modulus modulus length, signing will vary with the cube of the modulus
length, and key generation (the least common operation) will vary length, and key generation (the least common operation) will vary
with the fourth power of the modulus length. The current best with the fourth power of the modulus length. The current best
algorithms for factoring a modulus and breaking RSA security vary algorithms for factoring a modulus and breaking RSA security vary
roughly with the square of the modulus itself. Thus going from a 640 roughly with the 1.6 power of the modulus itself. Thus going from a
bit modulus to a 1280 bit modulus only increases the verification 640 bit modulus to a 1280 bit modulus only increases the verification
time by a factor of 4 but increases the work factor of breaking the 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 key by over 2^900. An upper bound of 2552 bit has been established
established for the MD4/RSA DNS security algorithm for for the MD5/RSA DNS security algorithm for interoperability purposes.
interoperability purposes.
However, larger keys increase the size of the KEY and SIG RRs. This However, larger keys increase the size of the KEY and SIG RRs. This
increases the chance of DNS UDP packet overflow and the possible increases the chance of DNS UDP packet overflow and the possible
necessity for using higher overhead TCP in responses. 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 but high level
but high level zones in the DNS tree may wish to set a higher zones in the DNS tree may wish to set a higher minimum, perhaps 1000
minimum, perhaps 1000 bits, for security reasons. (Since the United bits, for security reasons. (Since the United States National
States National Security Agency generally permits export of Security Agency generally permits export of encryption systems using
encryption systems using an RSA modulus of up to 512 bits, use of an RSA modulus of up to 512 bits, use of that small a modulus, i.e.
that small a modulus, i.e. n, must be considered weak.) n, must be considered weak.)
For a key used only to secure data and not to secure other keys, 640 For a key used only to secure data and not to secure other keys, 640
bits should be entirely adequate. bits should be adequate.
7.2 Key Storage 7.2 Key Storage
It is strongly recommended that zone private keys and the zone file It is recommended that zone private keys and the zone file master
master copy be kept and used in off-line non-network connected copy be kept and used in off-line non-network connected physically
physically secure machines only. Periodically an application can be secure machines only. Periodically an application can be run to add
run to re-sign the RRs in a zone by adding NXT and SIG RRs. Then the authentication to a zone by adding SIG and NXT RRs and adding no-key
KEY RRs for subzones where a real KEY RR is not provided. Then the
augmented file can be transferred, perhaps by sneaker-net, to the augmented file can be transferred, perhaps by sneaker-net, to the
networked zone primary server machine. networked zone primary server machine.
The idea is to have a one way information flow to the network to The idea is to have a one way information flow to the network to
avoid the possibility of tampering from the network. Keeping the avoid the possibility of tampering from the network. Keeping the
zone master file on-line on the network and simply cycling it through zone master file on-line on the network and simply cycling it through
an off-line signer does not do this. The on-line version could still an off-line signer does not do this. The on-line version could still
be tampered with if the host it resides on is compromised. For be tampered with if the host it resides on is compromised. For
maximum security, the master copy of the zone file should be off net maximum security, the master copy of the zone file should be off net
and should not be updated based on an unsecured network mediated and should not be updated based on an unsecured network mediated
communication. communication.
Note, however, that secure resolvers need to be configured with some Note, however, that secure resolvers need to be configured with some
trusted on-line public key information (or a secure path to such a trusted on-line public key information (or a secure path to such a
resolver). resolver).
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, generally have to
on line to be used for real-time purposes such as DNS transaction be kept on line to be used for real-time purposes such as DNS
security, IPSEC session set-up, or secure mail. transaction security, IPSEC session set-up, or secure mail.
7.3 Key Generation 7.3 Key Generation
Careful key generation is a sometimes overlooked but absolutely Careful key generation is a sometimes overlooked but absolutely
essential element in any cryptographically secure system. The essential element in any cryptographically secure system. The
strongest algorithms used with the longest keys are still of no use strongest algorithms used with the longest keys are still of no use
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 RFC 1750. found in RFC 1750.
skipping to change at page 39, line 7 skipping to change at page 41, line 7
A fully compliant resolver (1) understands KEY, SIG, and NXT A fully compliant resolver (1) understands KEY, SIG, and NXT
RRs, (2) maintains appropriate information in its local caches and RRs, (2) maintains appropriate information in its local caches and
database to indicate which RRs have been authenticated and to what database to indicate which RRs have been authenticated and to what
extent they have been authenticated, (3) performs additional queries extent they have been authenticated, (3) performs additional queries
as necessary to attempt to obtain KEY, SIG, or NXT RRs from non- 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 security aware servers, (4) normally sets the CD query header bit on
its queries. its queries.
9. Security Considerations 9. Security Considerations
This document concerns technical details of extensions to the Domain This document describes technical details of extensions to the Domain
Name System (DNS) protocol to provide data integrity and origin Name System (DNS) protocol to provide data integrity and origin
authentication, public key distribution, and optional transaction authentication, public key distribution, and optional transaction
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,
retrieved from the DNS. They do not magically solve other security retrieved from the DNS. They do not magically solve other security
problems. For example, using secure DNS you can have high confidence problems. For example, using secure DNS you can have high confidence
in the IP address you retrieve for a host name; however, this does in the IP address you retrieve for a host name; however, this does
not stop someone for substituting an unauthorized host at that not stop someone for substituting an unauthorized host at that
skipping to change at page 40, line 5 skipping to change at page 42, line 35
[RFC1321] - The MD5 Message-Digest Algorithm, R. Rivest, April 16 [RFC1321] - The MD5 Message-Digest Algorithm, R. Rivest, April 16
1992. 1992.
[RFC1530] - Principles of Operation for the TPC.INT Subdomain: [RFC1530] - Principles of Operation for the TPC.INT Subdomain:
General Principles and Policy, C. Malamud, M. Rose, October 6 1993. General Principles and Policy, C. Malamud, M. Rose, October 6 1993.
[RFC1750] - Randomness Requirements for Security, D. Eastlake, S. [RFC1750] - Randomness Requirements for Security, D. Eastlake, S.
Crocker, J. Schiller, December 1994. Crocker, J. Schiller, December 1994.
[RFC1825] - Security Architecture for the Internet Protocol, R.
Atkinson,
August 9 1995.
[RSA FAQ] - RSADSI Frequently Asked Questions periodic posting. [RSA FAQ] - RSADSI Frequently Asked Questions periodic posting.
Authors Addresses Authors Addresses
Donald E. Eastlake, 3rd Donald E. Eastlake, 3rd
CyberCash, Inc. CyberCash, Inc.
318 Acton Street 318 Acton Street
Carlisle, MA 01741 USA Carlisle, MA 01741 USA
Telephone: +1 508 287 4877 Telephone: +1 508-287-4877
FAX: +1 508-371-7148
EMail: dee@cybercash.com EMail: dee@cybercash.com
Charles W. Kaufman Charles W. Kaufman
Iris Associates Iris Associates
1 Technology Park Drive 1 Technology Park Drive
Westford, MA 01886 USA Westford, MA 01886 USA
Telephone: +1 508-392-5276 Telephone: +1 508-392-5276
EMail: charlie_kaufman@iris.com EMail: charlie_kaufman@iris.com
Expiration and File Name Expiration and File Name
This draft expires 10 April 1995. This draft expires 27 June 1996.
Its file name is draft-ietf-dnssec-secext-06.txt. Its file name is draft-ietf-dnssec-secext-07.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 N. Borenstein
and Freed. It is reproduced here in an edited form for convenience. and N. Freed. It is reproduced here in an edited form for convenience.
A 65-character subset of US-ASCII is used, enabling 6 bits to be A 65-character subset of US-ASCII is used, enabling 6 bits to be
represented per printable character. (The extra 65th character, "=", represented per printable character. (The extra 65th character, "=",
is used to signify a special processing function.) is used to signify a special processing function.)
The encoding process represents 24-bit groups of input bits as output The encoding process represents 24-bit groups of input bits as output
strings of 4 encoded characters. Proceeding from left to right, a strings of 4 encoded characters. Proceeding from left to right, a
24-bit input group is formed by concatenating 3 8-bit input groups. 24-bit input group is formed by concatenating 3 8-bit input groups.
These 24 bits are then treated as 4 concatenated 6-bit groups, each These 24 bits are then treated as 4 concatenated 6-bit groups, each
of which is translated into a single digit in the base64 alphabet. of which is translated into a single digit in the base64 alphabet.
skipping to change at page 42, line 50 skipping to change at page 44, line 50
13 N 30 e 47 v 13 N 30 e 47 v
14 O 31 f 48 w (pad) = 14 O 31 f 48 w (pad) =
15 P 32 g 49 x 15 P 32 g 49 x
16 Q 33 h 50 y 16 Q 33 h 50 y
Special processing is performed if fewer than 24 bits are available Special processing is performed if fewer than 24 bits are available
at the end of the data being encoded. A full encoding quantum is at the end of the data being encoded. A full encoding quantum is
always completed at the end of a quantity. When fewer than 24 input always completed at the end of a quantity. When fewer than 24 input
bits are available in an input group, zero bits are added (on the bits are available in an input group, zero bits are added (on the
right) to form an integral number of 6-bit groups. Padding at the right) to form an integral number of 6-bit groups. Padding at the
end of the data is performed using the '=' character. Since all end of the data is performed using the '=' character. Since all base
base64 input is an integral number of octets, only the following 64 input is an integral number of octets, only the following cases
cases can arise: (1) the final quantum of encoding input is an can arise: (1) the final quantum of encoding input is an integral
integral multiple of 24 bits; here, the final unit of encoded output multiple of 24 bits; here, the final unit of encoded output will be
will be an integral multiple of 4 characters with no "=" padding, (2) an integral multiple of 4 characters with no "=" padding, (2) the
the final quantum of encoding input is exactly 8 bits; here, the final quantum of encoding input is exactly 8 bits; here, the final
final unit of encoded output will be two characters followed by two unit of encoded output will be two characters followed by two "="
"=" padding characters, or (3) the final quantum of encoding input is padding characters, or (3) the final quantum of encoding input is
exactly 16 bits; here, the final unit of encoded output will be three exactly 16 bits; here, the final unit of encoded output will be three
characters followed by one "=" padding character. characters followed by one "=" padding character.
 End of changes. 141 change blocks. 
385 lines changed or deleted 446 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/