mirror of
https://github.com/isc-projects/bind9.git
synced 2026-03-02 13:30:44 -05:00
new revs
This commit is contained in:
parent
5c898d95dc
commit
bbc985b36e
4 changed files with 1193 additions and 957 deletions
|
|
@ -1,618 +0,0 @@
|
|||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
DNSEXT Working Group Olafur Gudmundsson
|
||||
INTERNET-DRAFT July 2001
|
||||
<draft-ietf-dnsext-delegation-signer-01.txt>
|
||||
|
||||
Updates: RFC 1035, RFC 2535, RFC 3008.
|
||||
|
||||
|
||||
Delegation Signer record in parent.
|
||||
|
||||
|
||||
Status of this Memo
|
||||
|
||||
This document is an Internet-Draft and is in full conformance with all
|
||||
provisions of Section 10 of RFC2026.
|
||||
|
||||
Internet-Drafts are working documents of the Internet Engineering Task
|
||||
Force (IETF), its areas, and its working groups. Note that other
|
||||
groups may also distribute working documents as Internet-Drafts.
|
||||
|
||||
Internet-Drafts are draft documents valid for a maximum of six months
|
||||
and may be updated, replaced, or obsoleted by other documents at any
|
||||
time. It is inappropriate to use Internet-Drafts as reference
|
||||
material or to cite them other than as ``work in progress.''
|
||||
|
||||
The list of current Internet-Drafts can be accessed at
|
||||
http://www.ietf.org/ietf/1id-abstracts.txt
|
||||
|
||||
The list of Internet-Draft Shadow Directories can be accessed at
|
||||
http://www.ietf.org/shadow.html
|
||||
|
||||
Comments should be sent to the authors or the DNSEXT WG mailing list
|
||||
namedroppers@ops.ietf.org
|
||||
|
||||
This draft expires on January 15, 2002.
|
||||
|
||||
Copyright Notice
|
||||
|
||||
Copyright (C) The Internet Society (2001). All rights reserved.
|
||||
|
||||
|
||||
|
||||
Abstract
|
||||
|
||||
One of the biggest problems in DNS occur when records of the same type
|
||||
can appear on both sides of an delegation. If the contents of these
|
||||
sets differs clients can get confused. RFC2535 KEY records follows
|
||||
the same model as for NS records, parent is responsible for the
|
||||
records but the child is responsible for the contents. This document
|
||||
|
||||
|
||||
|
||||
Gudmundsson Expires January 2002 [Page 1]
|
||||
|
||||
INTERNET-DRAFT Delegation Signer Record July 2001
|
||||
|
||||
|
||||
proposes to store a different record in the parent that specifies
|
||||
which one of the child's keys are authorized to sign the child's KEY
|
||||
set. This change is not backwards compatible with RFC2535 but
|
||||
simplifies DNSSEC operation.
|
||||
|
||||
|
||||
1 - Introduction
|
||||
|
||||
Familiarity with the DNS system [RFC1035], DNS security extensions
|
||||
[RFC2535] and DNSSEC terminology [RFC3090] is important.
|
||||
|
||||
When the same data can reside in two administratively different DNS
|
||||
zones sources it is common that the data gets out of sync. NS record
|
||||
in a zone indicates that there is a delegation at this name and the NS
|
||||
record lists the authorative servers for the real zone. Based on
|
||||
actual measurements 10-30% of all delegations in the Internet have
|
||||
differing NS sets at parent and child. There are number of reasons for
|
||||
this, including lack of communication between parent and child and
|
||||
bogus name-servers being listed to meet registrar requirements.
|
||||
|
||||
DNSSEC [RFC2535,RFC3008,RFC3090] specifies that child must have its
|
||||
KEY set signed by the parent to create a verifiable chain of KEYs.
|
||||
There is some debate, where the signed KEY set should reside,
|
||||
parent[Parent] or child[RFC2535]. If the KEY set resides at the child,
|
||||
frequent communication is needed between the two parties, to transmit
|
||||
key sets up to parent and then the signed set or signatures down to
|
||||
child. If the KEY set resides at the parent[Parent] the communication
|
||||
is reduced having only child send updated key sets to parent.
|
||||
DNSSEC[RFC2535] requires that the parent store NULL key set for
|
||||
unsecure children, this complicates resolution process as in many
|
||||
cases as servers for both parent and child need to be queried for KEY
|
||||
set the [Parent] proposal simplifies this.
|
||||
|
||||
Further complication of the DNSSEC KEY model is that KEY record is
|
||||
used to store DNS zone keys and public keys for other protocols. This
|
||||
can lead to large key sets at delegation points. There are number of
|
||||
potential problems with this including:
|
||||
1. KEY set may become quite large if many applications/protocols store
|
||||
their keys at the zone apex. Example of protocols are IPSEC, HTTP,
|
||||
SMTP, SSH etc.
|
||||
2. Key set may require frequent updates.
|
||||
3. Probability of compromised/lost keys increases and triggers
|
||||
emergency key rollover.
|
||||
4. Parent may refuse sign key sets with NON DNS zone keys.
|
||||
5. Parent may not have QoS on key changes that meets child's
|
||||
expectations.
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
Gudmundsson Expires January 2002 [Page 2]
|
||||
|
||||
INTERNET-DRAFT Delegation Signer Record July 2001
|
||||
|
||||
|
||||
Given these and other reasons there is good reason to explore
|
||||
alternatives to using only KEY records to create chain of trust.
|
||||
|
||||
Some of these problems can be reduced or eliminated by operational
|
||||
rules or protocol changes. To reduce the number of keys at apex, rule
|
||||
to require applications to store their KEY records at the SRV name for
|
||||
that application is one possibility. Another is to restrict KEY record
|
||||
to DNS keys only and create a new type for all non DNS keys. Third
|
||||
possible solution is to ban the storage of non DNS related keys at
|
||||
zone apex. There are other possible solutions but they are outside the
|
||||
scope of this document.
|
||||
|
||||
1.1 - Delegation Signer Record model
|
||||
|
||||
This document proposes an alternative to the KEY record chain of
|
||||
trust, that uses a special record that can only reside at the parent.
|
||||
This record will identify the key(s) that child will use to self sign
|
||||
its own KEY set.
|
||||
|
||||
The chain of trust is now established by verifying the parent KEY set,
|
||||
the DS set from the parent and then the KEY set at the child. This is
|
||||
cryptographically equivalent to just using KEY records.
|
||||
|
||||
Communication between the parent and child is reduced as the parent
|
||||
only needs to know of changes in DNS zone KEY(s) used to sign the apex
|
||||
KEY set. If other KEY records are stored at the zone apex, the parent
|
||||
does not need to be aware of them.
|
||||
|
||||
This approach has the advantage that it minimizes the communication
|
||||
between the parent and child and the child is the authority for the
|
||||
KEY set with full control over the contents. This enables each to
|
||||
operate and maintain each zone independent of each other. Thus if
|
||||
child wants to have frequent key rollover for its DNS keys parent does
|
||||
not need to be aware of it as the child can use one key to only sign
|
||||
its apex KEY set and other keys to sign the other record sets in the
|
||||
zone. The child can just as well use the same key to sign all records
|
||||
in its zone.
|
||||
|
||||
Another advantage is that this model fits well with slow rollout of
|
||||
DNSSEC and islands of security model. In the islands of security model
|
||||
someone that trusts "good.example." preconfigures a key from
|
||||
"good.example." as a trusted keys and from then on trusts any data
|
||||
that is signed by that key or has a chain of trust to that key. If
|
||||
"example." starts advertising DS records "good.example." does not have
|
||||
to change operations, by suspending self-signing. If DS records can
|
||||
also be used to identify trusted keys instead of KEY records.
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
Gudmundsson Expires January 2002 [Page 3]
|
||||
|
||||
INTERNET-DRAFT Delegation Signer Record July 2001
|
||||
|
||||
|
||||
The main disadvantage of this approach is double the number of
|
||||
signatures that need to be verified for the each delegation KEY set.
|
||||
There is no impact on verifying other record sets.
|
||||
|
||||
|
||||
1.2 - Reserved words
|
||||
|
||||
The key words "MUST", "MUST NOT", "SHOULD", and "MAY" in this document
|
||||
are to be interpreted as described in RFC2119.
|
||||
|
||||
|
||||
|
||||
2 - DS (Delegation KEY signer) record:
|
||||
|
||||
2.1 Protocol change
|
||||
|
||||
DS record MUST only appear at secure delegations in the parent zone.
|
||||
The record lists the child's keys that SHOULD sign the child's key
|
||||
set. Insecure delegation MUST NOT have a DS record, the presence of
|
||||
DS record SHOULD be considered a hint that the child might be secure.
|
||||
Resolver MUST only trust KEY records that match a DS record.
|
||||
NOTE: It has been suggested that NULL DS record for insecure children
|
||||
is better than no record. The advantage is to have authenticated
|
||||
denial of child's security status, the drawback is for large
|
||||
delegating zones there will be many NULL DS records. If parent uses
|
||||
NXT records adding NXT record to the authority section in the cases
|
||||
when no DS record exists at delegation will give the same result as
|
||||
NULL DS record.
|
||||
WG please comment on which approach is better.
|
||||
|
||||
Updates RFC2535 sections 2.3.4 and 3.4, as well as RFC3008 section
|
||||
2.7: Delegating zones MUST NOT store KEY records for delegations. The
|
||||
only records that can appear at delegation in parent are NS, SIG, NXT
|
||||
and DS.
|
||||
|
||||
Zone MUST self sign its apex KEY set, it SHOULD sign it with a key
|
||||
that corresponds to a DS record in the parent. The KEY used to sign
|
||||
the apex KEY RRset CAN sign other RRsets in the zone.
|
||||
|
||||
If child apex KEY RRset is not signed with one of the keys specified
|
||||
in the DS record the child is locally secure[RFC3090] and SHOULD only
|
||||
be considered secure the resolver has been instructed to trust the key
|
||||
used, via preconfiguration.
|
||||
|
||||
Authorative server answering a query, that has the OK bit set[OKbit],
|
||||
MUST include the DS set in the additional section if the answer is a
|
||||
referral and there is space. Caching servers SHOULD return the DS
|
||||
record in the additional section under the same condition.
|
||||
|
||||
|
||||
|
||||
Gudmundsson Expires January 2002 [Page 4]
|
||||
|
||||
INTERNET-DRAFT Delegation Signer Record July 2001
|
||||
|
||||
|
||||
2.1.1 - Comments on protocol change
|
||||
|
||||
Over the years there has been various discussions on that the
|
||||
delegation model in DNS is broken as there is no real good way to
|
||||
assert if delegation exists. In RFC2535 version of DNSSEC the
|
||||
authentication of a delegation is the NS bit in the NXT bitmap at the
|
||||
delegation point. Something more explicit is needed and the DS record
|
||||
addresses this for secure delegations.
|
||||
|
||||
DS record is the first DNS record to be only stored at the upper side
|
||||
of a delegation. NS records appear at both sides as do SIG and NXT.
|
||||
All other records can only appear at the lower side. This will cause
|
||||
some problems as servers authorative for parent may reject DS record
|
||||
even if the server understands unknown types, or not hand them out
|
||||
unless explicitly asked. Similarly a nameserver acting as a
|
||||
authorative for child and as a caching recursive server may never
|
||||
return the DS record. A caching server does not care from which side
|
||||
DS record comes from and thus should not have to be changed if it
|
||||
supports unknown types. Different TTL values on the childs NS set and
|
||||
parents DS set may cause the DS set to expire before the NS set. In
|
||||
this case an non-DS aware server would ask the child server for the DS
|
||||
set and get NXDOMAIN answer. DS aware server will know to ask the
|
||||
parent for the DS record.
|
||||
|
||||
Secure resolvers need to know about the DS record and how to interpret
|
||||
it. In the worst case, introducing the DS record, doubles the
|
||||
signatures that need to be checked to validate a KEY set.
|
||||
Note: The working group must determine if the tradeoff between more
|
||||
work in resolvers is justified by the operational simplification of
|
||||
this model. The author think this is a small price to pay to have a
|
||||
cleaner delegations structure. One argument put forward is that DNS
|
||||
should be optimized for read when ever possible, and on the face of it
|
||||
adding the DS record makes reading data from DNS more expensive. The
|
||||
operational complexities and legal hurdles that KEY records in parents
|
||||
or children make prevent DNSSEC to ever get deployed.
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
Gudmundsson Expires January 2002 [Page 5]
|
||||
|
||||
INTERNET-DRAFT Delegation Signer Record July 2001
|
||||
|
||||
|
||||
2.2 Wire format of DS record
|
||||
|
||||
The DS record consists of algorithm, size, key tag and SHA-1 digest of
|
||||
the public key KEY record allowed to sign the child's delegation.
|
||||
|
||||
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
|
||||
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|
||||
| key tag | size |
|
||||
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|
||||
| algorithm | SHA-1 digest |
|
||||
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|
||||
| (20 bytes) |
|
||||
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|
||||
| |
|
||||
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-|
|
||||
| |
|
||||
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-|
|
||||
| |
|
||||
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-|
|
||||
| |
|
||||
+-+-+-+-+-+-+-+-+
|
||||
|
||||
The key tag is calculated as specified in RFC2535, the size is the
|
||||
size of the public key in bits as specified in the document specifying
|
||||
the algorithm. Algorithm MUST be an algorithm number assigned in the
|
||||
range 1..251. The SHA-1 digest is calculated over the canonical name
|
||||
of the delegation followed by the RDATA of the KEY record.
|
||||
The size of the DS RDATA is 25 bytes, regardless of the key size.
|
||||
NOTE: if 160 bits is to large the SHA-1 digest can be shortened but
|
||||
that weakens the overall security of the system.
|
||||
|
||||
2.2.1 Justifications for fields
|
||||
|
||||
The algorithm and size fields are here to allow resolvers to quickly
|
||||
identify the candidate KEY records to examine. Key Tag is to allow
|
||||
quick check if this is a good candidate. The key tag is redundant but
|
||||
provides some greater assurance than SHA-1 digest on its own. SHA-1 is
|
||||
a strong cryptographic checksum, it is hard for attacker to generate a
|
||||
KEY record that has the same SHA-1 digest. Making sure that the KEY
|
||||
record is a valid public key is much harder. Combining the name of the
|
||||
key and the key data as input to the digest provides stronger
|
||||
assurance of the binding. Combining the SHA-1 with the other fields
|
||||
makes the task of the attacker is as hard breaking the public key.
|
||||
Even if someone creates a database of all SHA-1 key hashes seen so
|
||||
far, the addition of the name renders that database useless for
|
||||
attacks against random zones.
|
||||
|
||||
|
||||
|
||||
|
||||
Gudmundsson Expires January 2002 [Page 6]
|
||||
|
||||
INTERNET-DRAFT Delegation Signer Record July 2001
|
||||
|
||||
|
||||
2.3 Presentation format of DS record
|
||||
|
||||
The presentation format of DS record consists of 2 numbers, followed
|
||||
by either the name of the signature algorithm or the algorithm number.
|
||||
The digest is to be presented in hex.
|
||||
|
||||
2.4 Justifications for compact format
|
||||
|
||||
This format allows concise representation of the keys that child will
|
||||
use, thus keeping down the size of the answer for the delegation,
|
||||
reducing the probability of packet overflow. The SHA-1 hash is strong
|
||||
enough to uniquely identify the key. This is similar to the PGP
|
||||
footprint.
|
||||
|
||||
Each DS record has RDATA size of 25, regardless of the size of the
|
||||
keys, keeping the answers from the parent smaller than if public key
|
||||
was used. The smallest currently defined KEY record RDATA is 70 bytes.
|
||||
|
||||
Compact DS format is also better suited to list trusted keys for
|
||||
islands of security in configuration files.
|
||||
|
||||
2.5 Transition issues for installed base
|
||||
|
||||
RFC2535 compliant resolver will assume that all DS secured delegations
|
||||
are locally secure. This is a bad thing, thus it might be necessary
|
||||
for a transition period to support both DS and SIG@Child. The cost is
|
||||
one more signatures in the answer and that early adopters have to
|
||||
cumbersome communications that DS is supposed to solve.
|
||||
|
||||
Resolvers will not get confused as they will select signatures with
|
||||
the KEY they trust and ignore the other one.
|
||||
|
||||
3 Resolver Example
|
||||
|
||||
To create a chain of trust resolver goes from trusted KEY to DS to
|
||||
KEY.
|
||||
|
||||
Assume the key for domain example. is trusted. In zone "example." we
|
||||
have
|
||||
example. KEY <stuff>
|
||||
secure.example. DS tag=12345 size=1024 alg=dsa <foofoo>
|
||||
secure.example. NS ns1.secure.example.
|
||||
NS ns1.secure.example. s
|
||||
secure.example. NXT NS SIG NXT DS tail.example.
|
||||
secure.example. SIG(NXT)
|
||||
secure.example. SIG(DS)
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
Gudmundsson Expires January 2002 [Page 7]
|
||||
|
||||
INTERNET-DRAFT Delegation Signer Record July 2001
|
||||
|
||||
|
||||
In zone "secure.example." we have
|
||||
secure.example. SOA <soa stuff>
|
||||
secure.example. NS ns1.secure.example.
|
||||
NS ns1.secure.example.
|
||||
secure.example. KEY <tag=12345 size=1024 alg=dsa>
|
||||
KEY <tag=54321 size=512 alg=rsa/sha1>
|
||||
KEY <tag=32145 size=1024 alg=dsa>
|
||||
secure.example. SIG(KEY) <key-tag=12345 size=1024 alg=dsa>
|
||||
secure.example. SIG(SOA) <key-tag=54321 size=512 alg=rsa/sha1>
|
||||
secure.example. SIG(NS) <key-tag=54321 size=512 alg=rsa/sha1>
|
||||
|
||||
In this example the trusted key for example signs the DS record for
|
||||
"secure.example.", making that a trusted record. The DS record states
|
||||
what key is supposed to sign the KEY record at secure.example. In
|
||||
this example "secure.example." has three different KEY records and the
|
||||
one corresponding to the KEY identified in the DS record signs the KEY
|
||||
set, thus the key set is validated and trusted. Note that one of the
|
||||
other keys in the keyset actually signs the zone data, and resolvers
|
||||
will trust the signatures as the key appears in the KEY set.
|
||||
|
||||
This example has only one DS record for the child but there no reason
|
||||
to outlaw multiple DS records. More than one DS record is needed
|
||||
during signing key rollover. It is strongly recommended that the DS
|
||||
set be kept small.
|
||||
|
||||
3.1 Resolver cost estimates for DS records
|
||||
|
||||
From a RFC2535 resolver point of view for each delegation followed to
|
||||
chase down an answer one KEY record has to be verified and possibly
|
||||
some other records based on policy, for example the contents of the NS
|
||||
set. Once the resolver gets to the appropriate delegation validating
|
||||
the answer may require verifying one or more signatures. For a simple
|
||||
A record lookup requires at least N delegations to be verified and 1
|
||||
RRset. For a DS enabled resolver the cost is 2N+1. For MX record the
|
||||
cost where the target of the MX record is in the same zone as the MX
|
||||
record the costs are N+2 and 2N+2. In the case of negative answer the
|
||||
same holds ratios hold true.
|
||||
Resolver may require an extra query to get the DS record but and this
|
||||
may add to the overall cost of the query, but this is never worse than
|
||||
chasing down NULL KEY records from the parent in RFC2535 DNSSEC.
|
||||
DS adds processing overhead on resolvers, increases the size of
|
||||
delegation answers. DS requires much less storage in large delegation
|
||||
zones than SIG@Parent.
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
Gudmundsson Expires January 2002 [Page 8]
|
||||
|
||||
INTERNET-DRAFT Delegation Signer Record July 2001
|
||||
|
||||
|
||||
4 Acknowledgments
|
||||
|
||||
|
||||
Number of people have over the last few years contributed number of
|
||||
ideas that are captured in this document. The core idea of using one
|
||||
key to that has only the role of signing a key set, comes from
|
||||
discussions with Bill Manning and Perry Metzger on how to put in a
|
||||
single root key in all resolver that lives for a long time. Brian
|
||||
Wellington, Dan Massey, Edward Lewis, Havard Eidnes, Jakob Schlyter,
|
||||
Mark Kosters, Miek Gieben, Roy Arens, Scott Rosen have provided
|
||||
usefull comments.
|
||||
|
||||
4 - Security Considerations:
|
||||
|
||||
This document proposes a change to the validation chain of KEY records
|
||||
in DNS. The change in is not believed to reduce security in the
|
||||
overall system, in RFC2535 DNSSEC child must communicate keys to
|
||||
parent and prudent parents will require some authentication on that
|
||||
handshake. The modified protocol will require same authentication but
|
||||
allows the child to exert more local control over its own KEY set.
|
||||
|
||||
In the representation of DS record, there is a possibility that an
|
||||
attacker can generate an valid KEY that matches all the checks thus
|
||||
starting to forge data from the child. This is considered impractical
|
||||
as on average more than 2**80 keys must be generated before one is
|
||||
found that will match.
|
||||
|
||||
DS record is a change to DNSSEC protocol and there is some installed
|
||||
base of implementations, as well as text books on how to set up
|
||||
secured delegations. Implementations that do not understand DS record
|
||||
will not be able to follow the KEY to DS to KEY chain and consider all
|
||||
zone secured that way insecure.
|
||||
|
||||
5 - IANA Considerations:
|
||||
|
||||
IANA needs to allocate RR type code for DS from the standard RR type
|
||||
space.
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
Gudmundsson Expires January 2002 [Page 9]
|
||||
|
||||
INTERNET-DRAFT Delegation Signer Record July 2001
|
||||
|
||||
|
||||
References:
|
||||
|
||||
[RFC1035] P. Mockapetris, ``Domain Names - Implementation and
|
||||
Specification'', STD 13, RFC 1035, November 1987.
|
||||
|
||||
|
||||
[RFC2535] D. Eastlake, ``Domain Name System Security Extensions'', RFC
|
||||
2535, March 1999.
|
||||
|
||||
[RFC3008] B. Wellington, ``Domain Name System Security (DNSSEC) Signing
|
||||
Authority'', RFC 3008, November 2000.
|
||||
|
||||
[RFC3090] E. Lewis `` DNS Security Extension Clarification on Zone
|
||||
Status'', RFC 3090, March 2001.
|
||||
|
||||
[OKbit] D. Conrad, ``Indicating Resolver Support of DNSSEC'', work in
|
||||
progress <draft-ietf-dnsext-dnssec-okbit-02.txt>, April 2001.
|
||||
|
||||
[Parent] R. Gieben, T. Lindgreen, ``Parent stores the child's zone
|
||||
KEYs'', work in progress <draft-ietf-dnsext-parent-stores-
|
||||
zones-keys-01.txt>, May 2001.
|
||||
|
||||
Author Address
|
||||
|
||||
Olafur Gudmundsson
|
||||
3826 Legation Street, NW
|
||||
Washington, DC, 20015
|
||||
USA
|
||||
<ogud@ogud.com>
|
||||
|
||||
Appendix A: Changes from Prior versions
|
||||
|
||||
Changes from version 00
|
||||
Changed name from DK to DS based on working group comments.
|
||||
Dropped verbose format based on WG comments.
|
||||
Added text about TTL issue/problem in caching servers.
|
||||
Added text about islands of security and clarified the cost impact.
|
||||
Major editing of arguments and some reordering of text for clarity.
|
||||
Added section on transition issues.
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
Gudmundsson Expires January 2002 [Page 10]
|
||||
|
||||
INTERNET-DRAFT Delegation Signer Record July 2001
|
||||
|
||||
|
||||
Full Copyright Statement
|
||||
|
||||
Copyright (C) The Internet Society (2001). All Rights Reserved.
|
||||
|
||||
This document and translations of it may be copied and furnished to
|
||||
others, and derivative works that comment on or otherwise explain it
|
||||
or assist in its implementation may be prepared, copied, published and
|
||||
distributed, in whole or in part, without restriction of any kind,
|
||||
provided that the above copyright notice and this paragraph are
|
||||
included on all such copies and derivative works. However, this
|
||||
document itself may not be modified in any way, such as by removing
|
||||
the copyright notice or references to the Internet Society or other
|
||||
Internet organizations, except as needed for the purpose of developing
|
||||
Internet standards in which case the procedures for copyrights defined
|
||||
in the Internet Standards process must be followed, or as required to
|
||||
translate it into languages other than English.
|
||||
|
||||
The limited permissions granted above are perpetual and will not be
|
||||
revoked by the Internet Society or its successors or assigns.
|
||||
|
||||
This document and the information contained herein is provided on an
|
||||
"AS IS" basis and THE INTERNET SOCIETY AND THE INTERNET ENGINEERING
|
||||
TASK FORCE DISCLAIMS ALL WARRANTIES, EXPRESS OR IMPLIED, INCLUDING BUT
|
||||
NOT LIMITED TO ANY WARRANTY THAT THE USE OF THE INFORMATION HEREIN
|
||||
WILL NOT INFRINGE ANY RIGHTS OR ANY IMPLIED WARRANTIES OF
|
||||
MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE."
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
Gudmundsson Expires January 2002 [Page 11]
|
||||
674
doc/draft/draft-ietf-dnsext-delegation-signer-04.txt
Normal file
674
doc/draft/draft-ietf-dnsext-delegation-signer-04.txt
Normal file
|
|
@ -0,0 +1,674 @@
|
|||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
DNSEXT Working Group Olafur Gudmundsson
|
||||
INTERNET-DRAFT November 2001
|
||||
<draft-ietf-dnsext-delegation-signer-04.txt>
|
||||
|
||||
Updates: RFC 1035, RFC 2535, RFC 3008.
|
||||
|
||||
|
||||
Delegation Signer record in parent.
|
||||
|
||||
|
||||
Status of this Memo
|
||||
|
||||
This document is an Internet-Draft and is in full conformance with all
|
||||
provisions of Section 10 of RFC2026.
|
||||
|
||||
Internet-Drafts are working documents of the Internet Engineering Task
|
||||
Force (IETF), its areas, and its working groups. Note that other
|
||||
groups may also distribute working documents as Internet-Drafts.
|
||||
|
||||
Internet-Drafts are draft documents valid for a maximum of six months
|
||||
and may be updated, replaced, or obsoleted by other documents at any
|
||||
time. It is inappropriate to use Internet-Drafts as reference
|
||||
material or to cite them other than as ``work in progress.''
|
||||
|
||||
The list of current Internet-Drafts can be accessed at
|
||||
http://www.ietf.org/ietf/1id-abstracts.txt
|
||||
|
||||
The list of Internet-Draft Shadow Directories can be accessed at
|
||||
http://www.ietf.org/shadow.html
|
||||
|
||||
Comments should be sent to the authors or the DNSEXT WG mailing list
|
||||
namedroppers@ops.ietf.org
|
||||
|
||||
This draft expires on May 20, 2002.
|
||||
|
||||
Copyright Notice
|
||||
|
||||
Copyright (C) The Internet Society (2001). All rights reserved.
|
||||
|
||||
|
||||
|
||||
Abstract
|
||||
|
||||
The Delegation Signer (DS) RR set is stored in a delegating (parent)
|
||||
zone at each delegation point, and indicates the keys used in the
|
||||
delegated (child) zone. The main design goal of the DS RR simplify the
|
||||
operation of secure delegations by eliminating the need to store the
|
||||
same RR in parent and child, as is done with the NS RR set and the KEY
|
||||
|
||||
|
||||
|
||||
Gudmundsson Expires May 2002 [Page 1]
|
||||
|
||||
INTERNET-DRAFT Delegation Signer Record November 2001
|
||||
|
||||
|
||||
set in RFC2535.
|
||||
Secure resolvers need to take an additional step with DS to verify a
|
||||
child's KEY RR set. Operationally this schema is much simpler as
|
||||
operation of the two zones at delegation is now decoupled to great
|
||||
extent.
|
||||
This document updates RFC1035, RFC2535 and RFC3008.
|
||||
|
||||
|
||||
1 - Introduction
|
||||
|
||||
Familiarity with the DNS system [RFC1035], DNS security extensions
|
||||
[RFC2535] and DNSSEC terminology [RFC3090] is important.
|
||||
|
||||
When the same data can reside in two administratively different DNS
|
||||
zones, the data frequently gets out of sync. NS record in a zone
|
||||
indicates that this name is a delegation and the NS record lists the
|
||||
authorative servers for the real zone. Based on actual measurements
|
||||
10-30% of all delegations in the Internet have differing NS sets at
|
||||
parent and child. There are number of reasons for this, including lack
|
||||
of communication between parent and child and bogus name-servers being
|
||||
listed to meet registrar requirements.
|
||||
|
||||
DNSSEC [RFC2535,RFC3008,RFC3090] specifies that child must have its
|
||||
KEY set signed by the parent to create a verifiable chain of KEYs.
|
||||
There is some debate, where the signed KEY set should reside,
|
||||
parent[Parent] or child[RFC2535]. If the KEY set resides at the child,
|
||||
frequent two way communication is needed between the two parties.
|
||||
First the child needs to transmit the key set to parent and then the
|
||||
parent sends the signed set or signatures to child. If the KEY set
|
||||
resides at the parent the communication is reduced as the child only
|
||||
sends changed key sets to parent.
|
||||
|
||||
DNSSEC[RFC2535] requires that the parent store NULL key set for
|
||||
unsecure children, this complicates resolution process in many cases
|
||||
as servers for both parent and child need to be queried for KEY set if
|
||||
the child server does not return a KEY set. Storing the KEY record
|
||||
only in the parent zone simplifies this and allows the elimination of
|
||||
the NULL key set.
|
||||
|
||||
Another complication of the DNSSEC KEY model is that KEY record is
|
||||
used to store DNS zone keys and public keys for other protocols.
|
||||
There are number of potential problems with this including:
|
||||
1. KEY set can become quite large if many applications/protocols
|
||||
store their keys at the zone apex. Possible protocols are IPSEC,
|
||||
HTTP, SMTP, SSH and others that use public key cryptography.
|
||||
2. Key set may require frequent updates.
|
||||
3. Probability of compromised/lost keys increases and triggers
|
||||
emergency key rollover procedures.
|
||||
|
||||
|
||||
|
||||
Gudmundsson Expires May 2002 [Page 2]
|
||||
|
||||
INTERNET-DRAFT Delegation Signer Record November 2001
|
||||
|
||||
|
||||
4. Parent may refuse sign key sets with NON DNS zone keys.
|
||||
5. Parent may not meet the child's expectations in turnaround time
|
||||
in resigning the key set.
|
||||
|
||||
Given these and other reasons there is good reason to explore
|
||||
alternatives to using only KEY records to create chain of trust.
|
||||
|
||||
Some of these problems can be reduced or eliminated by operational
|
||||
rules or protocol changes. To reduce the number of keys at apex, a
|
||||
rule to require applications to store their KEY records at the SRV
|
||||
name for that application is one possibility. Another is to restrict
|
||||
KEY record to DNS keys only and create a new type for all non DNS
|
||||
keys. Third possible solution is to ban the storage of non DNS related
|
||||
keys at zone apex. There are other possible solutions but they are
|
||||
outside the scope of this document.
|
||||
|
||||
|
||||
1.2 - Reserved words
|
||||
|
||||
The key words "MAY","MAY NOT", "MUST", "MUST NOT", "REQUIRED",
|
||||
"RECOMMENDED", "SHOULD", and "SHOULD NOT" in this document are to be
|
||||
interpreted as described in RFC2119.
|
||||
|
||||
2 - DS (Delegation KEY Signer)
|
||||
|
||||
2.1 - Delegation Signer Record model
|
||||
|
||||
This document proposes an alternative to the KEY record chain of
|
||||
trust, that uses a special record that can only reside at the parent.
|
||||
This record will identify the key(s) that child are allowed to self
|
||||
sign its own KEY set.
|
||||
|
||||
The chain of trust is now established by verifying the parent KEY set,
|
||||
the DS set from the parent and the KEY set at the child. This is
|
||||
cryptographically equivalent to just using KEY records.
|
||||
|
||||
Communication between the parent and child is greatly reduced, since
|
||||
the child only needs to notify parent about changes in keys that sign
|
||||
its apex KEY RRset. Parent is ignorant of all other keys in the
|
||||
child's apex KEY RRset, and the child maintains full control over the
|
||||
apex KEY set and its content. Child can maintain any policies over
|
||||
its DNS and other KEY usage with minimal impact on parent. Thus if
|
||||
child wants to have frequent key rollover for its DNS keys parent does
|
||||
not need to be aware of it as the child can use one key to only sign
|
||||
its apex KEY set and other keys to sign the other record sets in the
|
||||
zone.
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
Gudmundsson Expires May 2002 [Page 3]
|
||||
|
||||
INTERNET-DRAFT Delegation Signer Record November 2001
|
||||
|
||||
|
||||
This model fits well with slow roll out of DNSSEC and islands of
|
||||
security model. In the islands of security model someone that trusts
|
||||
"good.example." can preconfigure a key from "good.example." as a
|
||||
trusted keys and from then on trusts any data that is signed by that
|
||||
key or has a chain of trust to that key. If "example." starts
|
||||
advertising DS records, "good.example." does not have to change
|
||||
operations, by suspending self-signing. DS records can also be used to
|
||||
identify trusted keys instead of KEY records. One further advantage
|
||||
is the information stored in the parent is minimized, as only records
|
||||
for secure delegations are needed.
|
||||
|
||||
The main disadvantage of this approach that verifying delegations KEY
|
||||
set requires twice as many signature verification operations. There
|
||||
is no impact on the number of signatures verified for other RR sets.
|
||||
|
||||
2.2 Protocol change
|
||||
|
||||
Each secure delegation in a secure zone MUST contain a DS RR set. If
|
||||
a DS RR set accompanies the NS RR set, the intent is to state that the
|
||||
child zone is secured. If an NS RR set exists without a DS RR set the
|
||||
intent is to state that the child zone is unsecure. DS sets MUST NOT
|
||||
appear at non delegations or at zone APEX.
|
||||
|
||||
In a zone that uses DS, insecure delegations MUST have the NODS[TBD]
|
||||
bit set in the NXT record. This is required to differenciate this
|
||||
delegation from Secure RFC2535 delegation.
|
||||
|
||||
Updates RFC2535 sections 2.3.4 and 3.4, as well as RFC3008 section
|
||||
2.7:
|
||||
Delegating zones MUST NOT store KEY records for delegations. The only
|
||||
records that can appear at delegation in parent are NS, SIG, NXT and
|
||||
DS.
|
||||
|
||||
Zone MUST self sign its apex KEY set, it SHOULD sign it with a key
|
||||
that corresponds to a DS record in the parent. The KEY used to sign
|
||||
the apex KEY RRset MAY sign other RRsets in the zone.
|
||||
|
||||
If child apex KEY RRset is not signed with one of the keys specified
|
||||
in the DS record the child is locally secure[RFC3090] and SHOULD only
|
||||
be considered secure if the resolver has been configured to trust the
|
||||
key used.
|
||||
|
||||
Authorative server answering a query with the OK bit[OKbit] set, MUST
|
||||
include the DS records and NXT record along with signatures in answers
|
||||
for a delegation and space is available. DS and NXT records SHOULD
|
||||
have lower priority than address records but higher priority than KEY.
|
||||
Caching servers SHOULD return the DS and parent NXT record(s) in the
|
||||
additional section under the same condition.
|
||||
|
||||
|
||||
|
||||
Gudmundsson Expires May 2002 [Page 4]
|
||||
|
||||
INTERNET-DRAFT Delegation Signer Record November 2001
|
||||
|
||||
|
||||
2.2.1 - Comments on protocol change
|
||||
|
||||
Over the years there has been various discussions on that the
|
||||
delegation model in DNS is broken as there is no real good way to
|
||||
assert if delegation exists. In RFC2535 version of DNSSEC the
|
||||
authentication of a delegation is the NS bit in the NXT bitmap at the
|
||||
delegation point. Something more explicit is needed and the DS record
|
||||
addresses this for secure delegations.
|
||||
|
||||
DS record is the first DNS record that can only appear on the upper
|
||||
side of a delegation. NS records appear at both sides as do SIG and
|
||||
NXT. All other records can only appear at the lower side. This will
|
||||
cause some problems as servers authorative for parent, reject DS
|
||||
record even if the server understands unknown types, or will not hand
|
||||
them out unless explicitly asked. Similarly a nameserver acting as a
|
||||
authorative for child and as a caching recursive server may never
|
||||
return the DS record.
|
||||
|
||||
A caching server that supports unkown types, does not care from which
|
||||
side DS record comes from and thus does not have to be changed.
|
||||
Different TTL values on the child's NS set and parents DS set can
|
||||
cause the DS set to expire before the NS set.
|
||||
|
||||
Secure resolvers need to know about the DS record and how to interpret
|
||||
it. In the worst case, introducing the DS record, doubles the
|
||||
signatures that need to be checked to validate a KEY set.
|
||||
|
||||
2.3 Wire format of DS record
|
||||
|
||||
The DS (type=TDB) record consists of algorithm, key tag and SHA-1
|
||||
digest of the public key KEY record allowed to sign the child's
|
||||
delegation.
|
||||
|
||||
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
|
||||
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|
||||
| key tag | algorithm | |
|
||||
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|
||||
| SHA-1 digest |
|
||||
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|
||||
| (20 bytes) |
|
||||
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|
||||
| |
|
||||
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-|
|
||||
| |
|
||||
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-|
|
||||
| |
|
||||
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|
||||
|
||||
|
||||
|
||||
Gudmundsson Expires May 2002 [Page 5]
|
||||
|
||||
INTERNET-DRAFT Delegation Signer Record November 2001
|
||||
|
||||
|
||||
The key tag is calculated as specified in RFC2535, Algorithm MUST be
|
||||
an algorithm number assigned in the range 1..251 and the algorithm
|
||||
MUST be allowed to sign DNS data. The SHA-1 digest is calculated over
|
||||
the canonical name of the delegation followed by the RDATA of the KEY
|
||||
record.
|
||||
DS records MUST NOT point to a null KEY record, and the KEY records
|
||||
pointed to by DS records MUST have protocol value 3 (DNSSEC).
|
||||
DS records MUST NOT point to KEY records where flag field has folowing
|
||||
bit settings, bit 0 (no authentication) is set, bit 6 MUST be set to 0
|
||||
and bit 7 MUST be set to 1 (zone key). Settings of other bits are not
|
||||
important.
|
||||
The size of the DS RDATA is 23 bytes, regardless of key size.
|
||||
|
||||
2.3.1 Justifications for fields
|
||||
|
||||
The algorithm and key tag fields are here to allow resolvers to
|
||||
quickly identify the candidate KEY records to examine. The key tag
|
||||
adds some greater assurance than SHA-1 digest on its own. SHA-1 is a
|
||||
strong cryptographic checksum, it is real hard for attacker to
|
||||
generate a KEY record that has the same SHA-1 digest. Combining the
|
||||
name of the key and the key data as input to the digest provides
|
||||
stronger assurance of the binding.
|
||||
|
||||
This format allows concise representation of the keys that child will
|
||||
use, thus keeping down the size of the answer for the delegation,
|
||||
reducing the probability of packet overflow. The SHA-1 hash is strong
|
||||
enough to uniquely identify the key. This is similar to the PGP
|
||||
footprint.
|
||||
|
||||
DS record is also well suited to lists trusted keys for islands of
|
||||
security in configuration files.
|
||||
|
||||
2.4 Presentation format of DS record
|
||||
|
||||
The presentation format of DS record consists of 2 numbers followed by
|
||||
digest presented in hex.
|
||||
foo.example DS 12345 3 123456789abcdef67890
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
Gudmundsson Expires May 2002 [Page 6]
|
||||
|
||||
INTERNET-DRAFT Delegation Signer Record November 2001
|
||||
|
||||
|
||||
2.5 Transition issues for installed base
|
||||
|
||||
RFC2535 compliant resolver will assume that all DS secured delegations
|
||||
are locally secure. This is a bad thing, thus it might be necessary
|
||||
for a transition period to support both DS and SIG@Child. The cost is
|
||||
one or more signatures in the answer for KEY records and that early
|
||||
adopters have to use cumbersome communications that DS solves. #.bp
|
||||
|
||||
2.6 Backwards compatibilty with RFC2535 SIG@child and RFC1035
|
||||
|
||||
This section documents how a resolver determines the type of
|
||||
delegation.
|
||||
RFC1035 delegation has:
|
||||
|
||||
RFC1035 NS
|
||||
|
||||
RFC2535 adds the following two cases:
|
||||
|
||||
Secure RFC2535: NS + NXT + SIG(NXT)
|
||||
NXT bit map contains: NS SIG NXT
|
||||
Insecure RFC2535: NS + KEY + SIG(KEY) + NXT + SIG(NXT)
|
||||
NXT bit map contains: NS SIG KEY NXT
|
||||
KEY must be null-key.
|
||||
|
||||
DS adds the following two states:
|
||||
|
||||
Secure DS: NS + DS + SIG(DS) + NXT + SIG(NXT)
|
||||
NXT bit map contains: NS SIG NXT DS
|
||||
Insecure DS: NS + NXT + SIG(NXT)
|
||||
NXT bit map contains: NS SIG KEY NXT NODS
|
||||
|
||||
If the NODS bit is not used, a resover can not determine if this is a
|
||||
DS delegation zone. Thus is not able to determine if this delegtion is
|
||||
a secure RFC2535 or a insecure DS.
|
||||
|
||||
2.6.1 NODS support in servers
|
||||
|
||||
NODS is a virtual type, servers MUST refuse to store any record of
|
||||
this type. No special processing is required on answers.
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
Gudmundsson Expires May 2002 [Page 7]
|
||||
|
||||
INTERNET-DRAFT Delegation Signer Record November 2001
|
||||
|
||||
|
||||
3 Resolver Example
|
||||
|
||||
To create a chain of trust resolver goes from trusted KEY to DS to
|
||||
KEY.
|
||||
|
||||
Assume the key for domain "example." is trusted. In zone "example."
|
||||
we have
|
||||
example. KEY <stuff>
|
||||
secure.example. DS tag=10243 alg=3 <foofoo>
|
||||
secure.example. NS ns1.secure.example.
|
||||
NS ns2.secure.example.
|
||||
secure.example. NXT NS SIG NXT DS unsecure.example.
|
||||
secure.example. SIG(NXT)
|
||||
secure.example. SIG(DS)
|
||||
unsecure.example NS ns1.unsecure.example.
|
||||
unsecure.example NS ns2.unsecure.example.
|
||||
unsecure.example. NXT NS SIG NXT NODS .example.
|
||||
unsecure.example. SIG(NXT)
|
||||
|
||||
In zone "secure.example." we have
|
||||
secure.example. SOA <soa stuff>
|
||||
secure.example. NS ns1.secure.example.
|
||||
NS ns1.secure.example.
|
||||
secure.example. KEY <tag=12345 size=1024 alg=3>
|
||||
KEY <tag=54321 size=512 alg=5>
|
||||
KEY <tag=32145 size=1024 alg=3>
|
||||
secure.example. SIG(KEY) <key-tag=12345 alg=3>
|
||||
secure.example. SIG(SOA) <key-tag=54321 alg=5>
|
||||
secure.example. SIG(NS) <key-tag=54321 alg=5>
|
||||
|
||||
In this example the trusted key for "example." signs the DS record for
|
||||
"secure.example.", making that a trusted record. The DS record states
|
||||
what key is expected to sign the KEY RRset at "secure.example". Here
|
||||
"secure.example." has three different KEY records and the KEY
|
||||
identified in the DS record signs the KEY set, thus the KEY set is
|
||||
validated and trusted. Note that one of the other keys in the keyset
|
||||
actually signs the zone data, and resolvers will trust the signatures
|
||||
as the key appears in the KEY set.
|
||||
|
||||
This example has only one DS record for the child but there no reason
|
||||
to outlaw multiple DS records. More than one DS record is needed
|
||||
during signing key rollover. It is strongly recommended that the DS
|
||||
set be kept small.
|
||||
|
||||
Resolver determines the security status of "unsecure.example." by
|
||||
examining the parent size NXT for this name.
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
Gudmundsson Expires May 2002 [Page 8]
|
||||
|
||||
INTERNET-DRAFT Delegation Signer Record November 2001
|
||||
|
||||
|
||||
3.1 Resolver cost estimates for DS records
|
||||
|
||||
From a RFC2535 resolver point of view for each delegation followed to
|
||||
chase down an answer one KEY record has to be verified and possibly
|
||||
some other records based on policy, for example the contents of the NS
|
||||
set. Once the resolver gets to the appropriate delegation validating
|
||||
the answer may require verifying one or more signatures. A simple A
|
||||
record lookup requires at least N delegations to be verified and 1
|
||||
RRset. For a DS enabled resolver the cost is 2N+1. For MX record the
|
||||
cost where the target of the MX record is in the same zone as the MX
|
||||
record the costs are N+2 and 2N+2. In the case of negative answer the
|
||||
same ratios hold true.
|
||||
|
||||
Resolver may require an extra query to get the DS record and this may
|
||||
add to the overall cost of the query, but this is never worse than
|
||||
chasing down NULL KEY records from the parent in RFC2535 DNSSEC.
|
||||
|
||||
DS adds processing overhead on resolvers, increases the size of
|
||||
delegation answers but much less than SIG@Parent.
|
||||
|
||||
4 Acknowledgments
|
||||
|
||||
Number of people have over the last few years contributed number of
|
||||
ideas that are captured in this document. The core idea of using one
|
||||
key to only sign key set, comes from discussions with Bill Manning and
|
||||
Perry Metzger on how to put in a single root key in all resolvers.
|
||||
Alexis Yushin, Brian Wellington, Jakob Schlyter, Scott Rosen, Edward
|
||||
Lewis, Dan Massey, Lars-Johan Liman, Mark Kosters, Olaf Kolman, Miek
|
||||
Gieben, Havard Eidnes, Donald Eastlake 3rd., Randy Bush, David Blacka,
|
||||
Rob Austein, Derek Atkins, Roy Arends, and others have provided useful
|
||||
comments.
|
||||
|
||||
4 - Security Considerations:
|
||||
|
||||
This document proposes a change to the validation chain of KEY records
|
||||
in DNS. The change in is not believed to reduce security in the
|
||||
overall system, in RFC2535 DNSSEC child must communicate keys to
|
||||
parent and prudent parents will require some authentication on that
|
||||
handshake. The modified protocol will require same authentication but
|
||||
allows the child to exert more local control over its own KEY set.
|
||||
|
||||
There is a possibility that an attacker can generate an valid KEY that
|
||||
matches all the DS fields thus starting to forge data from the child.
|
||||
This is considered impractical as on average more than 2^80 keys must
|
||||
be generated before one is found that will match.
|
||||
|
||||
DS record is a change to DNSSEC protocol and there is some installed
|
||||
base of implementations, as well as text books on how to set up
|
||||
|
||||
|
||||
|
||||
Gudmundsson Expires May 2002 [Page 9]
|
||||
|
||||
INTERNET-DRAFT Delegation Signer Record November 2001
|
||||
|
||||
|
||||
secured delegations. Implementations that do not understand DS record
|
||||
will not be able to follow the KEY to DS to KEY chain and consider all
|
||||
zone secured that way insecure.
|
||||
|
||||
5 - IANA Considerations:
|
||||
|
||||
IANA needs to allocate RR type code for DS from the standard RR type
|
||||
space.
|
||||
|
||||
IANA needs to allocate RR type code for the virtual NODS record from
|
||||
the standard RR type space. Note: SINK (40) was never implemented and
|
||||
that type code can be reused for NODS.
|
||||
|
||||
References:
|
||||
|
||||
[RFC1035] P. Mockapetris, ``Domain Names - Implementation and
|
||||
Specification'', STD 13, RFC 1035, November 1987.
|
||||
|
||||
[RFC2535] D. Eastlake, ``Domain Name System Security Extensions'', RFC
|
||||
2535, March 1999.
|
||||
|
||||
[RFC3008] B. Wellington, ``Domain Name System Security (DNSSEC) Signing
|
||||
Authority'', RFC 3008, November 2000.
|
||||
|
||||
[RFC3090] E. Lewis `` DNS Security Extension Clarification on Zone
|
||||
Status'', RFC 3090, March 2001.
|
||||
|
||||
[OKbit] D. Conrad, ``Indicating Resolver Support of DNSSEC'', work in
|
||||
progress <draft-ietf-dnsext-dnssec-okbit-02.txt>, April 2001.
|
||||
|
||||
[Parent] R. Gieben, T. Lindgreen, ``Parent stores the child's zone
|
||||
KEYs'', work in progress <draft-ietf-dnsext-parent-stores-
|
||||
zones-keys-01.txt>, May 2001.
|
||||
|
||||
Author Address
|
||||
|
||||
Olafur Gudmundsson
|
||||
3826 Legation Street, NW
|
||||
Washington, DC, 20015
|
||||
USA
|
||||
<ogud@ogud.com>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
Gudmundsson Expires May 2002 [Page 10]
|
||||
|
||||
INTERNET-DRAFT Delegation Signer Record November 2001
|
||||
|
||||
|
||||
Appendix A: Changes from Prior versions
|
||||
|
||||
Changes from version 03
|
||||
Added strict rules on what KEY records can be pointed to by DS.
|
||||
|
||||
Changes from version 02
|
||||
Added text outlawing DS at non delegations.
|
||||
Added table showing the contents of DS, SIG@child, and RFC1034
|
||||
delegations.
|
||||
Added the NODS type/bit definition to distiguish insecure DS
|
||||
delegation from secure SIG@child one.
|
||||
Added the requirement that NXT be returned with referal answers.
|
||||
Minor text edits.
|
||||
|
||||
Changes from version 01
|
||||
Deleted KEY size field as it did not contribute anything but
|
||||
complexity.
|
||||
Number of wordsmith changes to make document more readable.
|
||||
The word CAN was used when SHOULD was intended.
|
||||
Deleted section 2.4 "Justifications for compact format" moved relevant
|
||||
text to section 2.2.
|
||||
Reverse alphabetized the acknowledgments section.
|
||||
Reorganized sections 1 and 2 for readability.
|
||||
|
||||
|
||||
Changes from version 00
|
||||
Changed name from DK to DS based on working group comments.
|
||||
Dropped verbose format based on WG comments.
|
||||
Added text about TTL issue/problem in caching servers.
|
||||
Added text about islands of security and clarified the cost impact.
|
||||
Major editing of arguments and some reordering of text for clarity.
|
||||
Added section on transition issues.
|
||||
|
||||
Full Copyright Statement
|
||||
|
||||
Copyright (C) The Internet Society (2001). All Rights Reserved.
|
||||
|
||||
This document and translations of it may be copied and furnished to
|
||||
others, and derivative works that comment on or otherwise explain it
|
||||
or assist in its implementation may be prepared, copied, published and
|
||||
distributed, in whole or in part, without restriction of any kind,
|
||||
provided that the above copyright notice and this paragraph are
|
||||
included on all such copies and derivative works. However, this
|
||||
document itself may not be modified in any way, such as by removing
|
||||
the copyright notice or references to the Internet Society or other
|
||||
Internet organizations, except as needed for the purpose of developing
|
||||
Internet standards in which case the procedures for copyrights defined
|
||||
in the Internet Standards process must be followed, or as required to
|
||||
|
||||
|
||||
|
||||
Gudmundsson Expires May 2002 [Page 11]
|
||||
|
||||
INTERNET-DRAFT Delegation Signer Record November 2001
|
||||
|
||||
|
||||
translate it into languages other than English.
|
||||
|
||||
The limited permissions granted above are perpetual and will not be
|
||||
revoked by the Internet Society or its successors or assigns.
|
||||
|
||||
This document and the information contained herein is provided on an
|
||||
"AS IS" basis and THE INTERNET SOCIETY AND THE INTERNET ENGINEERING
|
||||
TASK FORCE DISCLAIMS ALL WARRANTIES, EXPRESS OR IMPLIED, INCLUDING BUT
|
||||
NOT LIMITED TO ANY WARRANTY THAT THE USE OF THE INFORMATION HEREIN
|
||||
WILL NOT INFRINGE ANY RIGHTS OR ANY IMPLIED WARRANTIES OF
|
||||
MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE."
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
Gudmundsson Expires May 2002 [Page 12]
|
||||
|
|
@ -1,8 +1,8 @@
|
|||
|
||||
INTERNET-DRAFT Stuart Kwan
|
||||
<draft-ietf-dnsext-gss-tsig-03.txt> Praerit Garg
|
||||
September 20, 2001 James Gilroy
|
||||
Expires March 20, 2002 Levon Esibov
|
||||
<draft-ietf-dnsext-gss-tsig-04.txt> Praerit Garg
|
||||
November 19, 2001 James Gilroy
|
||||
Expires May 19, 2002 Levon Esibov
|
||||
Jeff Westhead
|
||||
Microsoft Corp.
|
||||
Randy Hall
|
||||
|
|
@ -54,9 +54,9 @@ Application Program Interface (GSS-API) (RFC2743).
|
|||
|
||||
|
||||
|
||||
Expires March 20, 2002 [Page 1]
|
||||
Expires May 19, 2002 [Page 1]
|
||||
|
||||
INTERNET-DRAFT GSS-TSIG September 20, 2001
|
||||
INTERNET-DRAFT GSS-TSIG November 19, 2001
|
||||
|
||||
Table of Contents
|
||||
|
||||
|
|
@ -91,12 +91,12 @@ Table of Contents
|
|||
1. Introduction
|
||||
|
||||
The Secret Key Transaction Signature for DNS (TSIG) [RFC2845] protocol
|
||||
was developed to provide a lightweight end to end authentication and
|
||||
integrity of messages between two DNS entities, such as client and
|
||||
server or server and server. TSIG can be used to protect dynamic update
|
||||
messages, authenticate regular message or to off-load complicated
|
||||
DNSSEC [RFC2535] processing from a client to a server and still allow
|
||||
the client to be assured of the integrity off the answers.
|
||||
was developed to provide a lightweight authentication and integrity of
|
||||
messages between two DNS entities, such as client and server or server
|
||||
and server. TSIG can be used to protect dynamic update messages,
|
||||
authenticate regular message or to off-load complicated DNSSEC
|
||||
[RFC2535] processing from a client to a server and still allow the
|
||||
client to be assured of the integrity off the answers.
|
||||
|
||||
The TSIG protocol [RFC2845] is extensible through the definition of new
|
||||
algorithms. This document specifies an algorithm based on the Generic
|
||||
|
|
@ -108,13 +108,13 @@ include authentication, integrity, and confidentiality.
|
|||
The GSS-API framework has several benefits:
|
||||
* Mechanism and protocol independence. The underlying mechanisms that
|
||||
realize the security services can be negotiated on the fly and varied
|
||||
over time. For example, a client and server may use Kerberos [RFC1964]
|
||||
for one transaction, whereas that same server may use SPKM [RFC2025]
|
||||
over time. For example, a client and server MAY use Kerberos [RFC1964]
|
||||
for one transaction, whereas that same server MAY use SPKM [RFC2025]
|
||||
with a different client.
|
||||
|
||||
Expires March 20, 2002 [Page 2]
|
||||
Expires May 19, 2002 [Page 2]
|
||||
|
||||
INTERNET-DRAFT GSS-TSIG September 20, 2001
|
||||
INTERNET-DRAFT GSS-TSIG November 19, 2001
|
||||
|
||||
* The protocol developer is removed from the responsibility of
|
||||
creating and managing a security infrastructure. For example, the
|
||||
|
|
@ -130,9 +130,9 @@ of [RFC2743] before examining this protocol in detail. It is also
|
|||
assumed that the reader is familiar with [RFC2845], [RFC2930], [RFC1034]
|
||||
and [RFC1035].
|
||||
|
||||
The key words "MUST", "REQUIRED", "SHOULD", "RECOMMENDED", and
|
||||
"MAY" in this document are to be interpreted as described in RFC 2119
|
||||
[RFC2119].
|
||||
The key words "MUST", "MUST NOT", "REQUIRED", "SHOULD", "SHOULD NOT",
|
||||
"RECOMMENDED", and "MAY" in this document are to be interpreted as
|
||||
described in RFC 2119 [RFC2119].
|
||||
|
||||
|
||||
2. Algorithm Overview
|
||||
|
|
@ -170,9 +170,9 @@ states of a context associated with a connection:
|
|||
| |
|
||||
+----------+
|
||||
|
||||
Expires March 20, 2002 [Page 3]
|
||||
Expires May 19, 2002 [Page 3]
|
||||
|
||||
INTERNET-DRAFT GSS-TSIG September 20, 2001
|
||||
INTERNET-DRAFT GSS-TSIG November 19, 2001
|
||||
|
||||
|
||||
Every connection begins in the uninitialized state.
|
||||
|
|
@ -211,6 +211,13 @@ the owner name of the TKEY and TSIG records sent between a client and a
|
|||
server to indicate to each other which context MUST be used to process
|
||||
the current request.
|
||||
|
||||
DNS client and server MAY use various underlying security mechanisms to
|
||||
establish security context as described in sections 3 and 4. At the
|
||||
same time, in order to guarantee interoperability between DNS clients
|
||||
and servers that support GSS-TSIG it is required that security
|
||||
mechanism used by client enables use of Kerberos v5 (see Section 9
|
||||
for more information).
|
||||
|
||||
|
||||
3.1 Negotiating Context
|
||||
|
||||
|
|
@ -220,6 +227,11 @@ initial token and sends it to the server. The server processes the
|
|||
token and if necessary, returns a subsequent token to the client. The
|
||||
client processes this token, and so on, until the negotiation is
|
||||
complete. The number of times the client and server exchange tokens
|
||||
|
||||
Expires May 19, 2002 [Page 4]
|
||||
|
||||
INTERNET-DRAFT GSS-TSIG November 19, 2001
|
||||
|
||||
depends on the underlying security mechanism. A completed negotiation
|
||||
results in a context handle.
|
||||
|
||||
|
|
@ -228,11 +240,6 @@ tokens between client and server. The TKEY record is a general
|
|||
mechanism for establishing secret keys for use with TSIG. For more
|
||||
information, see [RFC2930].
|
||||
|
||||
Expires March 20, 2002 [Page 4]
|
||||
|
||||
INTERNET-DRAFT GSS-TSIG September 20, 2001
|
||||
|
||||
|
||||
|
||||
3.1.1 Call GSS_Init_sec_context
|
||||
|
||||
|
|
@ -278,19 +285,17 @@ indicated with the output values below. Consult Sections 2.2.1
|
|||
BOOLEAN deleg_state
|
||||
BOOLEAN sequence_state
|
||||
BOOLEAN anon_state
|
||||
|
||||
Expires May 19, 2002 [Page 5]
|
||||
|
||||
INTERNET-DRAFT GSS-TSIG November 19, 2001
|
||||
|
||||
BOOLEAN trans_state
|
||||
BOOLEAN prot_ready_state
|
||||
BOOLEAN conf_avail
|
||||
BOOLEAN integ_avail
|
||||
INTEGER lifetime_rec
|
||||
|
||||
|
||||
|
||||
Expires March 20, 2002 [Page 5]
|
||||
|
||||
INTERNET-DRAFT GSS-TSIG September 20, 2001
|
||||
|
||||
|
||||
The client MUST abandon the algorithm if returned major_status is set to
|
||||
one of the following errors:
|
||||
|
||||
|
|
@ -339,14 +344,9 @@ context to both the client and server, and thus the client SHOULD use
|
|||
a value which is globally unique as described in [RFC2930]. To achieve
|
||||
global uniqueness, the name MAY contain a UUID/GUID [ISO11578].
|
||||
|
||||
Expires May 19, 2002 [Page 6]
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
Expires March 20, 2002 [Page 6]
|
||||
|
||||
INTERNET-DRAFT GSS-TSIG September 20, 2001
|
||||
INTERNET-DRAFT GSS-TSIG November 19, 2001
|
||||
|
||||
|
||||
TKEY Record
|
||||
|
|
@ -394,17 +394,17 @@ signature in the TSIG record MUST be verified using the procedure
|
|||
detailed in section 5, Sending and Verifying Signed Messages. If the
|
||||
response is not signed, OR if the response is signed but signature is
|
||||
invalid, then an attacker has tampered with the message in transit or
|
||||
has attempted to send the client a false response. The client MUST
|
||||
has attempted to send the client a false response. The client MAY
|
||||
continue waiting for a response to its last TKEY query until the time
|
||||
period since the client sent last TKEY query expires. Such a time period
|
||||
is specified by the policy local to the client.
|
||||
is specified by the policy local to the client. This is a new option
|
||||
that allows DNS client to accept multiple answers for one query ID and
|
||||
select one (not necessarily the first one) based on some criteria.
|
||||
|
||||
|
||||
Expires May 19, 2002 [Page 7]
|
||||
|
||||
|
||||
|
||||
Expires March 20, 2002 [Page 7]
|
||||
|
||||
INTERNET-DRAFT GSS-TSIG September 20, 2001
|
||||
INTERNET-DRAFT GSS-TSIG November 19, 2001
|
||||
|
||||
|
||||
If the signature is verified the context state is advanced to Context
|
||||
|
|
@ -423,7 +423,7 @@ context by calling GSS_Delete_sec_context providing the associated
|
|||
context_handle. The client MAY repeat the negotiation sequence starting
|
||||
with the uninitialized state as described in section 3.1. To prevent
|
||||
infinite looping the number of attempts to establish a security context
|
||||
must be limited.
|
||||
MUST be limited to ten or less.
|
||||
|
||||
If the DNS message error is NO_ERROR and error filed in the TKEY record
|
||||
is 0 (i.e. no error), then the client MUST pass a token specified in the
|
||||
|
|
@ -460,9 +460,9 @@ If OUTPUT major_status is set to one of the following values
|
|||
GSS_S_BAD_MECH
|
||||
GSS_S_FAILURE
|
||||
|
||||
Expires March 20, 2002 [Page 8]
|
||||
Expires May 19, 2002 [Page 8]
|
||||
|
||||
INTERNET-DRAFT GSS-TSIG September 20, 2001
|
||||
INTERNET-DRAFT GSS-TSIG November 19, 2001
|
||||
|
||||
|
||||
the client MUST abandon this negotiation sequence. The client MUST
|
||||
|
|
@ -470,7 +470,7 @@ delete an active context by calling GSS_Delete_sec_context providing
|
|||
the associated context_handle. The client MAY repeat the negotiation
|
||||
sequence starting with the uninitialized state as described in section
|
||||
3.1. To prevent infinite looping the number of attempts to establish a
|
||||
security context must be limited.
|
||||
security context MUST be limited to ten or less.
|
||||
|
||||
If OUTPUT major_status is GSS_S_CONTINUE_NEEDED OR GSS_S_COMPLETE then
|
||||
client MUST act as described below.
|
||||
|
|
@ -483,8 +483,8 @@ negotiation sequence. The client MUST delete an active context by
|
|||
calling GSS_Delete_sec_context providing the associated context_handle.
|
||||
The client MAY repeat the negotiation sequence starting with the
|
||||
uninitialized state as described in section 3.1. To prevent infinite
|
||||
looping the number of attempts to establish a security context must be
|
||||
limited.
|
||||
looping the number of attempts to establish a security context MUST be
|
||||
limited to ten or less.
|
||||
|
||||
If major_status is GSS_S_CONTINUE_NEEDED the negotiation is not yet
|
||||
finished. The token output_token MUST be passed to the server in a TKEY
|
||||
|
|
@ -518,9 +518,9 @@ in section 5, Sending and Verifying Signed Messages.
|
|||
|
||||
|
||||
|
||||
Expires March 20, 2002 [Page 9]
|
||||
Expires May 19, 2002 [Page 9]
|
||||
|
||||
INTERNET-DRAFT GSS-TSIG September 20, 2001
|
||||
INTERNET-DRAFT GSS-TSIG November 19, 2001
|
||||
|
||||
|
||||
3.2.1 Terminating a Context
|
||||
|
|
@ -576,9 +576,9 @@ context negotiation.
|
|||
|
||||
|
||||
|
||||
Expires March 20, 2002 [Page 10]
|
||||
Expires May 19, 2002 [Page 10]
|
||||
|
||||
INTERNET-DRAFT GSS-TSIG September 20, 2001
|
||||
INTERNET-DRAFT GSS-TSIG November 19, 2001
|
||||
|
||||
|
||||
4.1.2 Call GSS_Accept_sec_context
|
||||
|
|
@ -634,9 +634,9 @@ RCODE = NOERROR, that contains a TKEY record in the answer section.
|
|||
|
||||
|
||||
|
||||
Expires March 20, 2002 [Page 11]
|
||||
Expires May 19, 2002 [Page 11]
|
||||
|
||||
INTERNET-DRAFT GSS-TSIG September 20, 2001
|
||||
INTERNET-DRAFT GSS-TSIG November 19, 2001
|
||||
|
||||
If OUTPUT major_status is one of the following errors the error field
|
||||
in the TKEY record set to BADKEY.
|
||||
|
|
@ -692,9 +692,9 @@ Error, Other Size and Data Fields, MUST be set according to [RFC2930].
|
|||
|
||||
|
||||
|
||||
Expires March 20, 2002 [Page 12]
|
||||
Expires May 19, 2002 [Page 12]
|
||||
|
||||
INTERNET-DRAFT GSS-TSIG September 20, 2001
|
||||
INTERNET-DRAFT GSS-TSIG November 19, 2001
|
||||
|
||||
|
||||
|
||||
|
|
@ -750,9 +750,9 @@ call" of the RFC 2743[RFC2743] for syntax definitions.
|
|||
|
||||
|
||||
|
||||
Expires March 20, 2002 [Page 13]
|
||||
Expires May 19, 2002 [Page 13]
|
||||
|
||||
INTERNET-DRAFT GSS-TSIG September 20, 2001
|
||||
INTERNET-DRAFT GSS-TSIG November 19, 2001
|
||||
|
||||
INPUTS
|
||||
CONTEXT HANDLE context_handle = context_handle for key_name
|
||||
|
|
@ -808,9 +808,9 @@ For the GSS algorithm, a signature is verified by using GSS_VerifyMIC:
|
|||
INTEGER minor_status
|
||||
INTEGER qop_state
|
||||
|
||||
Expires March 20, 2002 [Page 14]
|
||||
Expires May 19, 2002 [Page 14]
|
||||
|
||||
INTERNET-DRAFT GSS-TSIG September 20, 2001
|
||||
INTERNET-DRAFT GSS-TSIG November 19, 2001
|
||||
|
||||
If major_status is GSS_S_COMPLETE, the signature is authentic and the
|
||||
message was delivered intact. Per [RFC2845], the timer values of the
|
||||
|
|
@ -866,9 +866,9 @@ to the algorithm described above.
|
|||
|
||||
|
||||
|
||||
Expires March 20, 2002 [Page 15]
|
||||
Expires May 19, 2002 [Page 15]
|
||||
|
||||
INTERNET-DRAFT GSS-TSIG September 20, 2001
|
||||
INTERNET-DRAFT GSS-TSIG November 19, 2001
|
||||
|
||||
Client verifies that replay_det_state and mutual_state values are
|
||||
TRUE. Since the major_status is GSS_S_CONTINUE_NEEDED, which is a
|
||||
|
|
@ -924,9 +924,9 @@ INTERNET-DRAFT GSS-TSIG September 20, 2001
|
|||
|
||||
|
||||
|
||||
Expires March 20, 2002 [Page 16]
|
||||
Expires May 19, 2002 [Page 16]
|
||||
|
||||
INTERNET-DRAFT GSS-TSIG September 20, 2001
|
||||
INTERNET-DRAFT GSS-TSIG November 19, 2001
|
||||
|
||||
V. Server responds to the TKEY query
|
||||
Since the major_status = GSS_S_CONTINUE_NEEDED in the last server's
|
||||
|
|
@ -982,9 +982,9 @@ INTERNET-DRAFT GSS-TSIG September 20, 2001
|
|||
|
||||
|
||||
|
||||
Expires March 20, 2002 [Page 17]
|
||||
Expires May 19, 2002 [Page 17]
|
||||
|
||||
INTERNET-DRAFT GSS-TSIG September 20, 2001
|
||||
INTERNET-DRAFT GSS-TSIG November 19, 2001
|
||||
|
||||
VIII. Server receives a TKEY query
|
||||
When the server receives a TKEY query, the server verifies that Mode
|
||||
|
|
@ -1040,9 +1040,9 @@ INTERNET-DRAFT GSS-TSIG September 20, 2001
|
|||
|
||||
Signature field in the TSIG record is set to per_msg_token.
|
||||
|
||||
Expires March 20, 2002 [Page 18]
|
||||
Expires May 19, 2002 [Page 18]
|
||||
|
||||
INTERNET-DRAFT GSS-TSIG September 20, 2001
|
||||
INTERNET-DRAFT GSS-TSIG November 19, 2001
|
||||
|
||||
|
||||
XI. Client processes token returned by server
|
||||
|
|
@ -1074,6 +1074,9 @@ This document describes a protocol for DNS security using GSS-API.
|
|||
The security provided by this protocol is only as effective as the
|
||||
security provided by the underlying GSS mechanisms.
|
||||
|
||||
All the security considerations from RFC2845, RFC2930 and RFC 2743
|
||||
apply to the protocol described in this document.
|
||||
|
||||
|
||||
8. IANA Considerations
|
||||
|
||||
|
|
@ -1095,12 +1098,9 @@ mech_type in their GSS API calls. At the same time, in order to
|
|||
guarantee interoperability between DNS clients and servers that support
|
||||
GSS-TSIG it is required that
|
||||
|
||||
Expires May 19, 2002 [Page 19]
|
||||
|
||||
|
||||
|
||||
Expires March 20, 2002 [Page 19]
|
||||
|
||||
INTERNET-DRAFT GSS-TSIG September 20, 2001
|
||||
INTERNET-DRAFT GSS-TSIG November 19, 2001
|
||||
|
||||
|
||||
- DNS servers specify SPNEGO mech_type
|
||||
|
|
@ -1156,9 +1156,9 @@ Ram Viswanathan, Olafur Gudmundsson and Donald E. Eastlake 3rd.
|
|||
[RFC2478] Baize, E., Pinkas, D., "The Simple and Protected GSS-API
|
||||
Negotiation Mechanism", RFC 2478, Bull, December 1998.
|
||||
|
||||
Expires March 20, 2002 [Page 20]
|
||||
Expires May 19, 2002 [Page 20]
|
||||
|
||||
INTERNET-DRAFT GSS-TSIG September 20, 2001
|
||||
INTERNET-DRAFT GSS-TSIG November 19, 2001
|
||||
|
||||
|
||||
[ISO11578]"Information technology", "Open Systems
|
||||
|
|
@ -1175,14 +1175,14 @@ Microsoft Corporation Microsoft Corporation
|
|||
One Microsoft Way One Microsoft Way
|
||||
Redmond, WA 98052 Redmond, WA 98052
|
||||
USA USA
|
||||
skwan@microsoft.com
|
||||
skwan@microsoft.com praeritg@microsoft.com
|
||||
|
||||
James Gilroy Levon Esibov
|
||||
Microsoft Corporation Microsoft Corporation
|
||||
One Microsoft Way One Microsoft Way
|
||||
Redmond, WA 98052 Redmond, WA 98052
|
||||
USA USA
|
||||
levone@microsoft.com
|
||||
jamesg@microsoft.com levone@microsoft.com
|
||||
|
||||
|
||||
Randy Hall Jeff Westhead
|
||||
|
|
@ -1190,8 +1190,8 @@ Lucent Technologies Microsoft Corporation
|
|||
400 Lapp Road One Microsoft Way
|
||||
Malvern PA 19355 Redmond, WA 98052
|
||||
USA USA
|
||||
randyhall@lucent.com
|
||||
randyhall@lucent.com jwesth@microsoft.com
|
||||
|
||||
|
||||
|
||||
Expires March 20, 2002 [Page 21]
|
||||
Expires May 19, 2002 [Page 21]
|
||||
|
|
@ -7,14 +7,14 @@
|
|||
DNSEXT Working Group Levon Esibov
|
||||
INTERNET-DRAFT Bernard Aboba
|
||||
Category: Standards Track Dave Thaler
|
||||
<draft-ietf-dnsext-mdns-01.txt> Microsoft
|
||||
6 July 2001
|
||||
<draft-ietf-dnsext-mdns-07.txt> Microsoft
|
||||
15 November 2001
|
||||
|
||||
|
||||
Multicast DNS
|
||||
|
||||
This document is an Internet-Draft and is in full conformance with all
|
||||
provisions of Section 10 of RFC2026.
|
||||
provisions of Section 10 of RFC 2026.
|
||||
|
||||
Internet-Drafts are working documents of the Internet Engineering Task
|
||||
Force (IETF), its areas, and its working groups. Note that other groups
|
||||
|
|
@ -61,28 +61,28 @@ Esibov, Aboba & Thaler Standards Track [Page 1]
|
|||
|
||||
|
||||
|
||||
INTERNET-DRAFT Multicast DNS 6 July 2001
|
||||
INTERNET-DRAFT Multicast DNS 15 November 2001
|
||||
|
||||
|
||||
Table of Contents
|
||||
|
||||
1. Introduction .......................................... 3
|
||||
2. Name resolution using multicast DNS ................... 3
|
||||
2.1 Behavior of the sender and responder ............ 3
|
||||
3. Usage model ........................................... 4
|
||||
4. Sequence of events .................................... 8
|
||||
5. Conflict resolution ................................... 8
|
||||
5.1 Considerations for multiple interfaces .......... 10
|
||||
6. IANA considerations ................................... 11
|
||||
7. ARPA domain considerations ............................ 11
|
||||
8. References ............................................ 12
|
||||
9. Security considerations ............................... 13
|
||||
ACKNOWLEDGMENTS .............................................. 13
|
||||
AUTHORS' ADDRESSES ........................................... 14
|
||||
Intellectual Property Statement .............................. 14
|
||||
Full Copyright Statement ..................................... 15
|
||||
|
||||
|
||||
2.1 Behavior of the sender and responder ............ 4
|
||||
3. Usage model ........................................... 7
|
||||
3.1 mDNS configuration .............................. 8
|
||||
4. Sequence of events .................................... 9
|
||||
5. Conflict resolution ................................... 9
|
||||
5.1 Considerations for multiple interfaces .......... 11
|
||||
5.2 API issues ...................................... 12
|
||||
6. IANA considerations ................................... 13
|
||||
7. ARPA domain considerations ............................ 13
|
||||
8. References ............................................ 14
|
||||
9. Security considerations ............................... 15
|
||||
Acknowledgments .............................................. 16
|
||||
Authors' Addresses ........................................... 16
|
||||
Intellectual Property Statement .............................. 16
|
||||
Full Copyright Statement ..................................... 17
|
||||
|
||||
|
||||
|
||||
|
|
@ -121,7 +121,7 @@ Esibov, Aboba & Thaler Standards Track [Page 2]
|
|||
|
||||
|
||||
|
||||
INTERNET-DRAFT Multicast DNS 6 July 2001
|
||||
INTERNET-DRAFT Multicast DNS 15 November 2001
|
||||
|
||||
|
||||
1. Introduction
|
||||
|
|
@ -145,33 +145,33 @@ Service discovery in general as well as discovery of DNS servers using
|
|||
mDNS in particular is outside of the scope of this document, as is name
|
||||
resolution over non-multicast capable media.
|
||||
|
||||
In this document, the key words "MAY", "MUST, "MUST NOT", "optional",
|
||||
"recommended", "SHOULD", and "SHOULD NOT", are to be interpreted as
|
||||
described in [1].
|
||||
In this document, the key words "MAY", "MUST, "MUST NOT", "OPTIONAL",
|
||||
"RECOMMENDED", "SHOULD", and "SHOULD NOT", are to be interpreted as
|
||||
described in RFC 2119 [1].
|
||||
|
||||
2. Name resolution using Multicast DNS
|
||||
|
||||
This extension to the DNS protocol consists of a single change to the
|
||||
method of use, and no change to the current format of DNS packets.
|
||||
Namely, this extension allows multicast DNS queries to be sent to and
|
||||
received on port 53.
|
||||
method of use, and no change to the current format of DNS packets, It
|
||||
allows multicast DNS queries to be sent to and received on port 53 using
|
||||
a LINKLOCAL address as specified in "Administratively Scoped IP
|
||||
Multicast" [2] for IPv4 and the "solicited name" LINKLOCAL multicast
|
||||
addresses for IPv6. The mDNS LINKLOCAL address to be used for IPv4 is
|
||||
<TBD>. LINKLOCAL addresses are used to prevent propagation of multicast
|
||||
DNS traffic across routers, potentially flooding the network.
|
||||
|
||||
The messages are sent using the LINKLOCAL addresses [2] for IPv4 and
|
||||
IPv6 (below referred as the LINKLOCAL address), which are yet to be
|
||||
assigned by IANA. LINKLOCAL addresses are used to prevent propagation of
|
||||
multicast DNS traffic across routers, potentially flooding the network.
|
||||
Propagation of multicast DNS packets on the local link is considered
|
||||
sufficient to enable DNS name resolution in small adhoc networks. The
|
||||
assumption is that if a network has a router, then the network either
|
||||
has a DNS server or the router can function as a DNS proxy.
|
||||
|
||||
By implementing DHCPv4 as well as a DNS proxy and dynamic DNS, routers
|
||||
can provide name resolution for the names of IPv4 hosts on the local
|
||||
network. Where all IPv6 hosts also support IPv4, and the DNS proxy
|
||||
supports AAAA RRs, resolution for the names of dual stack IPv6 hosts on
|
||||
the local network can also be provided using this mechanism.
|
||||
|
||||
Propagation of multicast DNS packets within the local subnet is
|
||||
considered sufficient to enable DNS name resolution in small adhoc
|
||||
networks. The assumption is that if a network has a router, then the
|
||||
network either has a DNS server or the router can function as a DNS
|
||||
proxy, possibly implementing dynamic DNS.
|
||||
|
||||
In the future, mDNS may be defined to support greater than LINKLOCAL
|
||||
multicast scope. This would occur if LINKLOCAL mDNS deployment is
|
||||
successful, the assumption that mDNS is not needed in multiple subnets
|
||||
proves incorrect, and multicast routing becomes ubiquitous. For
|
||||
example, it is not clear that this assumption will be valid in large
|
||||
|
||||
|
||||
|
||||
|
|
@ -181,9 +181,24 @@ Esibov, Aboba & Thaler Standards Track [Page 3]
|
|||
|
||||
|
||||
|
||||
INTERNET-DRAFT Multicast DNS 6 July 2001
|
||||
INTERNET-DRAFT Multicast DNS 15 November 2001
|
||||
|
||||
|
||||
Within small adhoc IPv6 networks, stateful autoconfiguration is the most
|
||||
likely configuration mechanism. If DHCPv6 is not present, then in order
|
||||
to support resolution of names of IPv6-only hosts on the local network,
|
||||
the DNS proxy will need to support dynamic client update as well as DNS
|
||||
over IPv6.
|
||||
|
||||
Given the above mechanisms enabling DNS name resolution in small
|
||||
networks with a router, it is assumed that multicast DNS need not be
|
||||
enabled by default.
|
||||
|
||||
In the future, mDNS may be defined to support greater than LINKLOCAL
|
||||
multicast scope. This would occur if LINKLOCAL mDNS deployment is
|
||||
successful, the assumption that mDNS is not needed on multiple links
|
||||
proves incorrect, and multicast routing becomes ubiquitous. For
|
||||
example, it is not clear that this assumption will be valid in large
|
||||
adhoc networking scenarios.
|
||||
|
||||
Once we have experience in mDNS deployment in terms of administrative
|
||||
|
|
@ -206,6 +221,31 @@ LINKLOCAL address. The RD (Recursion Desired) bit MUST NOT be set. If a
|
|||
responder receives a query with the header containing RD set bit, the
|
||||
responder MUST ignore the RD bit.
|
||||
|
||||
The IPv6 LINKLOCAL address a given responder listens to, and to which a
|
||||
sender sends, is a link-local multicast address formed as follows: The
|
||||
name of the resource record in question is expressed in its canonical
|
||||
form (see RFC 2535 [15], section 8.1), which is uncompressed with all
|
||||
alphabetic characters in lower case. The first label of the resource
|
||||
record name is then hashed using the MD5 algorithm (see RFC 1321 [16]).
|
||||
The first 32 bits of the resultant 128-bit hash is then appended to the
|
||||
prefix FF02:0:0:0:0:2::/96 to yield the 128-bit "solicited name
|
||||
multicast address". (Note: this procedure is intended to be the same as
|
||||
that specified in section 3 of "IPv6 Node Information Queries" [14]). A
|
||||
responder that listens for queries for multiple names will necessarily
|
||||
|
||||
|
||||
|
||||
Esibov, Aboba & Thaler Standards Track [Page 4]
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
INTERNET-DRAFT Multicast DNS 15 November 2001
|
||||
|
||||
|
||||
listen to multiple of these solicited name multicast addresses.
|
||||
|
||||
If the multicast query is not positively resolved ("positively resolved"
|
||||
refers in this document to a response with the RCODE set to 0) during a
|
||||
limited amount of time, then a sender MAY repeat the transmission of a
|
||||
|
|
@ -214,14 +254,14 @@ a host capable of responding to the query.
|
|||
|
||||
Repetition MUST NOT be attempted more than 3 times and SHOULD NOT be
|
||||
repeated more often than once per second to reduce unnecessary network
|
||||
traffic. The delay between attempts should be randomised so as to avoid
|
||||
synchronisation effects.
|
||||
traffic. The delay between attempts should be randomized so as to avoid
|
||||
synchronization effects.
|
||||
|
||||
2.1.2. Behavior of responders
|
||||
|
||||
A responder listens on port 53 on the LINKLOCAL address. Responders MUST
|
||||
respond to multicast queries to those and only those names for which
|
||||
they are authoritative. As an example, computer
|
||||
A responder listens on port 53 on the LINKLOCAL address. Responders
|
||||
MUST respond to multicast queries to those and only those names for
|
||||
which they are authoritative. As an example, computer
|
||||
"host.example.com.local.arpa." is authoritative for the domain
|
||||
"host.example.com.local.arpa.". On receiving a multicast DNS A record
|
||||
query for the name "host.example.com.local.arpa." such a host responds
|
||||
|
|
@ -232,18 +272,6 @@ authoritative for all the domain names under the zone root except for
|
|||
the branches delegated into separate zones. Contrary to conventional DNS
|
||||
terminology, a responder is authoritative only for the zone root. For
|
||||
example the host "host.example.com.local.arpa." is not authoritative for
|
||||
|
||||
|
||||
|
||||
Esibov, Aboba & Thaler Standards Track [Page 4]
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
INTERNET-DRAFT Multicast DNS 6 July 2001
|
||||
|
||||
|
||||
the name "child.host.example.com.local.arpa." unless the host is
|
||||
configured with multiple names, including "host.example.com.local.arpa."
|
||||
and "child.host.example.com.local.arpa.". The purpose of limiting the
|
||||
|
|
@ -265,12 +293,24 @@ for the NS and glue A record to "host.example.com.local.arpa.", but this
|
|||
approach significantly complicates implementation of multicast DNS and
|
||||
would not be acceptable for lightweight hosts.
|
||||
|
||||
|
||||
|
||||
Esibov, Aboba & Thaler Standards Track [Page 5]
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
INTERNET-DRAFT Multicast DNS 15 November 2001
|
||||
|
||||
|
||||
A response to a multicast query is composed in exactly the same manner
|
||||
as a response to the unicast DNS query as specified in [4]. Responders
|
||||
MUST never respond using cached data, and the AA (Authoritative Answer)
|
||||
bit MUST be set. The response is sent to the sender via unicast. A
|
||||
response to an mDNS query MUST have RCODE set to zero, since mDNS
|
||||
responders MUST NOT send error replies in response to mDNS queries.
|
||||
as a response to the unicast DNS query as specified in RFC 1035 [4].
|
||||
Responders MUST never respond using cached data, and the AA
|
||||
(Authoritative Answer) bit MUST be set. The response is sent to the
|
||||
sender via unicast. A response to an mDNS query MUST have RCODE set to
|
||||
zero. mDNS responders may respond only to queries which they can resolve
|
||||
positively.
|
||||
|
||||
If a TC (truncation) bit is set in the response, then the sender MAY use
|
||||
the response if it contains all necessary information, or the sender MAY
|
||||
|
|
@ -282,28 +322,17 @@ it.
|
|||
|
||||
2.1.3. mDNS addressing
|
||||
|
||||
For IPv4 LINKLOCAL addressing, section 2.4 of [6] lays out the rules
|
||||
with respect to source address selection, TTL settings, and acceptable
|
||||
For IPv4 LINKLOCAL addressing, section 2.4 of "Dynamic Configuration of
|
||||
IPv4 Link-Local Addresses" [18] lays out the rules with respect to
|
||||
source address selection, TTL settings, and acceptable
|
||||
source/destination address combinations. IPv6 LINKLOCAL addressing is
|
||||
described in [9]. mDNS queries and responses MUST obey the rules laid
|
||||
out in these documents.
|
||||
described in RFC 2373 [9]. mDNS queries and responses MUST obey the
|
||||
rules laid out in these documents.
|
||||
|
||||
In composing an mDNS response, the responder MUST set the Hop Limit
|
||||
field in the IPv6 header and the TTL field in IPv4 header of the
|
||||
multicast DNS response to 255. The sender MUST verify that the Hop Limit
|
||||
field in IPv6 header and TTL field in IPv4 header of each response to
|
||||
|
||||
|
||||
|
||||
Esibov, Aboba & Thaler Standards Track [Page 5]
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
INTERNET-DRAFT Multicast DNS 6 July 2001
|
||||
|
||||
|
||||
the multicast DNS query is set to 255. If it is not, then sender MUST
|
||||
ignore the response.
|
||||
|
||||
|
|
@ -313,16 +342,28 @@ ignore the response.
|
|||
options are used to specify the TTL of outgoing unicast and multicast
|
||||
packets. The IP_RECVTTL socket option is available on some platforms
|
||||
to receive the IPv4 TTL of received packets with recvmsg(). RFC 2292
|
||||
specifies similar options for specifying and receiving the IPv6 Hop
|
||||
Limit.
|
||||
[20] specifies similar options for specifying and receiving the IPv6
|
||||
Hop Limit.
|
||||
|
||||
2.1.4. Use of DNS TTL
|
||||
|
||||
The responder should use a pre-configured TTL [5] value in the records
|
||||
The responder should use a pre-configured TTL value in the records
|
||||
returned in the multicast DNS query response. Due to the TTL
|
||||
minimalization necessary when caching an RRset, all TTLs in an RRset
|
||||
MUST be set to the same value. In the additional and authority section
|
||||
of the response the responder includes the same records as a DNS server
|
||||
|
||||
|
||||
|
||||
Esibov, Aboba & Thaler Standards Track [Page 6]
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
INTERNET-DRAFT Multicast DNS 15 November 2001
|
||||
|
||||
|
||||
would insert in the response to the unicast DNS query.
|
||||
|
||||
2.1.5. No/multiple responses
|
||||
|
|
@ -348,29 +389,12 @@ ordinarily.
|
|||
A host configured to be an mDNS "responder" MUST also be configured as a
|
||||
"sender". A host not configured as a "responder" MUST NOT be a "sender".
|
||||
|
||||
Multicast DNS usage is determined by the domain search configuration as
|
||||
well as by special treatment of the ".local.arpa." namespace. Any host
|
||||
whose domain search configuration contains the ".local.arpa." domain is
|
||||
configured to behave as "responder". The sender treats queries for
|
||||
Multicast DNS usage is determined by special treatment of the
|
||||
".local.arpa." namespace. The sender treats queries for ".local.arpa."
|
||||
as a special case. A sender MUST NOT send a unicast query for names
|
||||
ending with the ".local.arpa." suffix except when:
|
||||
|
||||
|
||||
|
||||
Esibov, Aboba & Thaler Standards Track [Page 6]
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
INTERNET-DRAFT Multicast DNS 6 July 2001
|
||||
|
||||
|
||||
".local.arpa." as a special case. The domain search list can be
|
||||
configured manually or automatically via a DHCP option [3].
|
||||
|
||||
A sender MUST NOT send a unicast query for names ending with the
|
||||
".local.arpa." suffix except when:
|
||||
|
||||
a. A sender repeats a query over TCP after it received a response
|
||||
a. A sender repeats a query after it received a response
|
||||
to the previous multicast query with the TC bit set, or
|
||||
|
||||
b. The sender's cache contains an NS resource record that enables
|
||||
|
|
@ -387,30 +411,6 @@ when a responder with the name "host.example.com." receives an A type
|
|||
query for the name "host.example.com.local.arpa." it authoritatively
|
||||
responds to the query.
|
||||
|
||||
If ".local.arpa" is not in the domain search list, then multicast DNS
|
||||
MUST NOT be used. This implies that the host will neither listen on the
|
||||
DNS LINKLOCAL multicast address, nor will it send queries to that
|
||||
address. An auto-configured host will typically have ".local.arpa" first
|
||||
in its search list so that it will be enabled to use multicast DNS.
|
||||
Typically an enterprise host will not have ".local.arpa" in its search
|
||||
list at all so that it will not use multicast DNS.
|
||||
|
||||
The same host MAY use multicast DNS queries for the resolution of names
|
||||
ending with ".local.arpa.", and unicast DNS queries for resolution of
|
||||
all other names. When a user or application requests a DNS client to
|
||||
resolve a dot-terminated name that contains a ".local.arpa" suffix, the
|
||||
query for such a name MUST be multicast and the name SHOULD NOT be
|
||||
concatenated with any suffix.
|
||||
|
||||
If a DNS server is running on a host, the host MUST NOT listen for
|
||||
multicast DNS queries, to prevent the host from listening on port 53 and
|
||||
intercepting DNS queries directed to a DNS server. By default, a DNS
|
||||
server MUST NOT listen to multicast DNS queries. For a DNS server, the
|
||||
presence of ".local.arpa." in the domain search list MUST NOT enable
|
||||
multicast DNS.
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
|
@ -421,9 +421,81 @@ Esibov, Aboba & Thaler Standards Track [Page 7]
|
|||
|
||||
|
||||
|
||||
INTERNET-DRAFT Multicast DNS 6 July 2001
|
||||
INTERNET-DRAFT Multicast DNS 15 November 2001
|
||||
|
||||
|
||||
The same host MAY use multicast DNS queries for the resolution of names
|
||||
ending with ".local.arpa.", and unicast DNS queries for resolution of
|
||||
all other names. When a user or application requests a DNS client to
|
||||
resolve a dot-terminated name that contains a ".local.arpa" suffix, the
|
||||
query for such a name MUST be multicast and the name SHOULD NOT be
|
||||
concatenated with any suffix.
|
||||
|
||||
If a DNS server is running on a host, then responder MUST NOT listen for
|
||||
the multicast DNS queries on the same IP addresses on which the DNS
|
||||
server listens, since otherwise they would intercept DNS queries
|
||||
directed to a DNS server. The DNS server MUST respond to the multicast
|
||||
DNS queries only for the RRSets owned by the host on which the server is
|
||||
running, but MUST NOT respond for the records for which the server is
|
||||
authoritative.
|
||||
|
||||
3.1. mDNS configuration
|
||||
|
||||
Multicast DNS usage can be configured manually or automatically. On
|
||||
interfaces where no manual or automatic configuration has been performed
|
||||
for a given protocol (IPv4 or IPv6), multicast DNS SHOULD be enabled by
|
||||
default for that protocol.
|
||||
|
||||
For IPv6, the stateless DNS discovery mechanisms described in "IPv6
|
||||
Stateless DNS Discovery" [19] can be used to discover whether multicast
|
||||
DNS should be enabled or disabled on a per-interface basis.
|
||||
|
||||
Where DHCPv4 or DHCPv6 is implemented, DHCP options can be used to
|
||||
configure multicast DNS on an interface. The mDNS Enable Option,
|
||||
described in [6], can be used to explicitly enable or disable use of
|
||||
multicast DNS on an interface for a given protocol, as well as to
|
||||
specify the order in which DNS and multicast DNS is used on that
|
||||
interface.
|
||||
|
||||
The mDNS Enable Option affects only DNS resolver behavior, that is, how
|
||||
DNS resolution is performed, and whether multicast DNS is used. The
|
||||
mDNS Enable Option does not determine whether or in which order DNS
|
||||
itself is used for name resolution. This can be specified, for example,
|
||||
using the Name Service Search Option for DHCP, RFC 2937 [3], which can
|
||||
be used to globally determine where DNS is used within the name service
|
||||
search order.
|
||||
|
||||
If an interface has been configured for a given protocol via any
|
||||
automatic configuration mechanism which is able to supply DNS
|
||||
configuration information, then multicast DNS SHOULD NOT be used on that
|
||||
interface for that protocol unless it has been explicitly enabled,
|
||||
whether via that mechanism or any other. This ensures that upgraded
|
||||
hosts do not change their default behavior, without requiring the source
|
||||
of the configuration information to be simultaneously updated. This
|
||||
|
||||
|
||||
|
||||
Esibov, Aboba & Thaler Standards Track [Page 8]
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
INTERNET-DRAFT Multicast DNS 15 November 2001
|
||||
|
||||
|
||||
implies that on the interface, the host will neither listen on the DNS
|
||||
LINKLOCAL multicast address, nor will it send queries to that address.
|
||||
|
||||
Note that it is possible for mDNS to be enabled for use with IPv6 at the
|
||||
same time it is disabled for IPv4, and vice versa. For example, where a
|
||||
home gateway implements a DNS proxy and DHCPv4, but not DHCPv6 or DNS
|
||||
autoconfiguration, there may be no mechanism for allowing IPv6 hosts to
|
||||
resolve the names of other IPv6 hosts on the home network. In this
|
||||
situation, mDNS is useful for resolution of dynamic names, and it will
|
||||
be enabled for use with IPv6, even though it is disabled for use with
|
||||
IPv4.
|
||||
|
||||
4. Sequence of events
|
||||
|
||||
The sequence of events for multicast DNS usage is as follows:
|
||||
|
|
@ -438,11 +510,12 @@ The sequence of events for multicast DNS usage is as follows:
|
|||
|
||||
3. Upon the reception of the response, the sender verifies that the Hop
|
||||
Limit field in IPv6 header or TTL field in IPv4 header (depending on
|
||||
the protocol used) of the response is set to 255. If the destination
|
||||
address is a LINKLOCAL address, then the sender verifies use of a
|
||||
LINKLOCAL source address. If these conditions are met, then the sender
|
||||
uses and caches the returned response. If not, then the sender ignores
|
||||
the response and continues waiting for the response.
|
||||
the protocol used) of the response is set to 255. The sender then
|
||||
verifies compliance with the addressing requirements for IPv4,
|
||||
described in [18], and IPv6, described in RFC 2373 [9]. If these
|
||||
conditions are met, then the sender uses and caches the returned
|
||||
response. If not, then the sender ignores the response and continues
|
||||
waiting for the response.
|
||||
|
||||
5. Conflict resolution
|
||||
|
||||
|
|
@ -459,6 +532,18 @@ query and type of the query. For example it is expected that:
|
|||
- only a single host may respond to a query for an A type record for
|
||||
a hostname.
|
||||
|
||||
|
||||
|
||||
|
||||
Esibov, Aboba & Thaler Standards Track [Page 9]
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
INTERNET-DRAFT Multicast DNS 15 November 2001
|
||||
|
||||
|
||||
Every responder that responds to a multicast DNS query and/or dynamic
|
||||
update request AND includes a UNIQUE record in the response:
|
||||
|
||||
|
|
@ -472,18 +557,6 @@ Where a host is configured to respond to multicast DNS queries on more
|
|||
than one interface, the host MUST verify resource record uniqueness on
|
||||
each interface for each UNIQUE resource record that could be used on
|
||||
that interface. To accomplish this, the host MUST multicast a dynamic
|
||||
|
||||
|
||||
|
||||
Esibov, Aboba & Thaler Standards Track [Page 8]
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
INTERNET-DRAFT Multicast DNS 6 July 2001
|
||||
|
||||
|
||||
DNS update request as specified in RFC 2136 [11] for each new UNIQUE
|
||||
resource record. Uniqueness verification is carried out when the host:
|
||||
|
||||
|
|
@ -497,7 +570,7 @@ Below we describe the data to be specified in the dynamic update
|
|||
request:
|
||||
|
||||
Header section
|
||||
contains values according to [RFC 2136].
|
||||
contains values according to RFC 2136 [11].
|
||||
|
||||
Zone section
|
||||
The zone name in the zone section MUST be set to the name of the
|
||||
|
|
@ -519,31 +592,34 @@ Additional section
|
|||
|
||||
When a host that owns a UNIQUE record receives a dynamic update request
|
||||
that requests that the UNIQUE resource record set does not exist, the
|
||||
|
||||
|
||||
|
||||
Esibov, Aboba & Thaler Standards Track [Page 10]
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
INTERNET-DRAFT Multicast DNS 15 November 2001
|
||||
|
||||
|
||||
host MUST respond via unicast with the YXRRSET error, according to the
|
||||
rules described in Section 3 of RFC 2136 [11].
|
||||
|
||||
After client receives an YXRRSET response to its dynamic update request
|
||||
that a UNIQUE resource record does not exist, the host MUST not use the
|
||||
UNIQUE resource record in responses to multicast queries and dynamic
|
||||
update requests.
|
||||
that a UNIQUE resource record does not exist, the host MUST check
|
||||
whether the response arrived on another interface. If this is the case,
|
||||
then the client can use the UNIQUE resource record in response to
|
||||
multicast queries and dynamic update requests. If not, then it MUST NOT
|
||||
use the UNIQUE resource record in response to multicast queries and
|
||||
dynamic update requests.
|
||||
|
||||
Note that this name conflict detection mechanism doesn't prevent name
|
||||
conflicts when previously partitioned segments are connected by a
|
||||
bridge. In such a situation, name conflicts are detected when a sender
|
||||
receives more than one response to its multicast DNS query. In this
|
||||
case, the sender sends the first response that it received to all
|
||||
|
||||
|
||||
|
||||
Esibov, Aboba & Thaler Standards Track [Page 9]
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
INTERNET-DRAFT Multicast DNS 6 July 2001
|
||||
|
||||
|
||||
responders that responded to this query except the first one, using
|
||||
unicast. A host that receives a query response containing a UNIQUE
|
||||
resource record that it owns, even if it didn't send such a query, MUST
|
||||
|
|
@ -564,9 +640,7 @@ take. Implementers who are not planning to support multicast DNS on
|
|||
multiple interfaces simultaneously may skip this section.
|
||||
|
||||
A multi-homed host checks the uniqueness of UNIQUE records as described
|
||||
in Section 5.
|
||||
|
||||
The situation is illustrated in figure 1 below:
|
||||
in Section 5. The situation is illustrated in figure 1 below:
|
||||
|
||||
---------- ----------
|
||||
| | | |
|
||||
|
|
@ -576,8 +650,22 @@ The situation is illustrated in figure 1 below:
|
|||
|
||||
In this situation, the multi-homed myhost will probe for, and defend,
|
||||
its host name on both interfaces. A conflict will be detected on one
|
||||
interface, but not the other, and as a result, the multi-homed myhost
|
||||
will not be able to respond with a host RR for "myhost".
|
||||
interface, but not the other. The multi-homed myhost will not be able to
|
||||
respond with a host RR for "myhost" on the interface on the right (see
|
||||
|
||||
|
||||
|
||||
Esibov, Aboba & Thaler Standards Track [Page 11]
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
INTERNET-DRAFT Multicast DNS 15 November 2001
|
||||
|
||||
|
||||
Figure 1). The multi-homed host may, however, be configured to use the
|
||||
"myhost" name on the interface on the left.
|
||||
|
||||
Since names are only unique per-link, hosts on different links could be
|
||||
using the same name. If an mDNS client sends requests over multiple
|
||||
|
|
@ -592,35 +680,70 @@ illustrated in figure 2 below.
|
|||
|
||||
Figure 2. Off-segment name conflict
|
||||
|
||||
|
||||
|
||||
|
||||
Esibov, Aboba & Thaler Standards Track [Page 10]
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
INTERNET-DRAFT Multicast DNS 6 July 2001
|
||||
|
||||
|
||||
If host myhost is configured to use mDNS on both interfaces, it will
|
||||
send mDNS queries on both interfaces. When host myhost sends a query
|
||||
for the host RR for name "A" it will receive a response from hosts on
|
||||
both interfaces. Host myhost will then forward a response from the
|
||||
first responder to the second responder, who will attempt to verify the
|
||||
uniqueness of host RR for its name, but will not discover a conflict,
|
||||
since the conflicting host resides on a different subnet. Therefore it
|
||||
will continue using its name. This illustrates that the proposed name
|
||||
conflict resolution mechanism does not support resolution of conflicts
|
||||
between hosts on different subnets. This problem can also occur with
|
||||
unicast DNS when a multi-homed host is connected to two different
|
||||
networks with separated name spaces. It is not the intent of this
|
||||
document to address the issue of uniqueness of names within DNS.
|
||||
since the conflicting host resides on a different link. Therefore it
|
||||
will continue using its name.
|
||||
|
||||
Indeed, host myhost cannot distinguish between the situation shown in
|
||||
Figure 2, and that shown in Figure 3 where no conflict exists:
|
||||
|
||||
|
||||
[A]
|
||||
| |
|
||||
----- -----
|
||||
| |
|
||||
[myhost]
|
||||
|
||||
Figure 3. Multiple paths to same host
|
||||
|
||||
This illustrates that the proposed name conflict resolution mechanism
|
||||
does not support detection or resolution of conflicts between hosts on
|
||||
different links. This problem can also occur with unicast DNS when a
|
||||
multi-homed host is connected to two different networks with separated
|
||||
name spaces. It is not the intent of this document to address the issue
|
||||
of uniqueness of names within DNS.
|
||||
|
||||
5.2. API issues
|
||||
|
||||
RFC 2553 [13] provides an API which can partially solve the name
|
||||
ambiguity problem for applications written to use this API, since the
|
||||
|
||||
|
||||
|
||||
Esibov, Aboba & Thaler Standards Track [Page 12]
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
INTERNET-DRAFT Multicast DNS 15 November 2001
|
||||
|
||||
|
||||
sockaddr_in6 structure exposes the scope within which each scoped
|
||||
address exists, and this structure can be used for both IPv4 (using
|
||||
v4-mapped IPv6 addresses) and IPv6 addresses.
|
||||
|
||||
Following the example in Figure 2, an application on 'myhost' issues the
|
||||
request getaddrinfo("A", ...) with ai_family=AF_INET6 and
|
||||
ai_flags=AI_ALL|AI_V4MAPPED. mDNS requests will be sent from both
|
||||
interfaces and the resolver library will return a list containing
|
||||
multiple addrinfo structures, each with an associated sockaddr_in6
|
||||
structure. This list will thus contain the IPv4 and IPv6 addresses of
|
||||
both hosts responding to the name 'A'. Link-local addresses will have a
|
||||
sin6_scope_id value that disambiguates which interface is used to reach
|
||||
the address. Of course, to the application, Figures 2 and 3 are still
|
||||
indistinguishable, but this API allows the application to communicate
|
||||
successfully with any address in the list.
|
||||
|
||||
6. IANA Considerations
|
||||
|
||||
Authors will contact IANA to reserve LINKLOCAL IPv4 and IPv6 addresses.
|
||||
This specification requires allocation of a link scope IPv4 multicast
|
||||
addresses for use by multicast DNS.
|
||||
|
||||
7. ARPA domain considerations
|
||||
|
||||
|
|
@ -637,10 +760,10 @@ namespace differs from others in the following respects:
|
|||
scope of authority, not extending to sub-domains of
|
||||
domain they are authoritative for.
|
||||
|
||||
- DNS servers SHOULD NOT forward queries for domain names
|
||||
in the local.arpa domain - if the server cannot answer
|
||||
the query from its own database, it should reply with a
|
||||
non-authoritative NXDOMAIN.
|
||||
- DNS servers SHOULD NOT forward or recursively resolve
|
||||
queries for domain names in the local.arpa domain - if the
|
||||
server cannot answer the query from its own database,
|
||||
it MUST NOT reply.
|
||||
|
||||
- Hosts may derive their own names in this namespace,
|
||||
independent of centralized authorization and registration
|
||||
|
|
@ -649,21 +772,21 @@ namespace differs from others in the following respects:
|
|||
- There is no delegation or administrative structure to
|
||||
sub-domains of '.local.arpa'.
|
||||
|
||||
|
||||
|
||||
|
||||
Esibov, Aboba & Thaler Standards Track [Page 13]
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
INTERNET-DRAFT Multicast DNS 15 November 2001
|
||||
|
||||
|
||||
How protocol objects are mapped into lookup keys:
|
||||
|
||||
Names are associated with resources which can be requested
|
||||
|
||||
|
||||
|
||||
Esibov, Aboba & Thaler Standards Track [Page 11]
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
INTERNET-DRAFT Multicast DNS 6 July 2001
|
||||
|
||||
|
||||
according to the DNS protocol. However, recursive lookup
|
||||
is impossible. Further, mDNS specifies only the use of
|
||||
multicast to transmit these requests.
|
||||
|
|
@ -676,8 +799,8 @@ INTERNET-DRAFT Multicast DNS 6 July 2001
|
|||
[2] Meyer, D., "Administratively Scoped IP Multicast", BCP 23, RFC
|
||||
2365, July 1998.
|
||||
|
||||
[3] Aboba, B., "DHCP Domain Search Option", Internet draft (work in
|
||||
progress), draft-aboba-dhc-domsearch-02.txt, June 2001.
|
||||
[3] Smith, C., "The Name Service Search Option for DHCP", RFC 2937,
|
||||
September 2000.
|
||||
|
||||
[4] Mockapetris, P., "Domain Names - Implementation and Specification",
|
||||
RFC 1035, November 1987.
|
||||
|
|
@ -685,9 +808,8 @@ INTERNET-DRAFT Multicast DNS 6 July 2001
|
|||
[5] Mockapetris, P., "DOMAIN NAMES - CONCEPTS AND FACILITIES", RFC
|
||||
1034, November, 1987.
|
||||
|
||||
[6] Cheshire, S., Aboba, B., "Dynamic Configuration of IPv4 Link-Local
|
||||
Addresses", Internet draft (work in progress), draft-ietf-zeroconf-
|
||||
ipv4-linklocal-03.txt, June 2001.
|
||||
[6] Guttman, E., "DHCP mDNS Enable Option", Internet draft (work in
|
||||
progress), draft-guttman-mdns-enable-01.txt, July 2001.
|
||||
|
||||
[7] Alvestrand, H. and T. Narten, "Guidelines for Writing an IANA
|
||||
Considerations Section in RFCs", BCP 26, RFC 2434, October 1998.
|
||||
|
|
@ -709,20 +831,45 @@ INTERNET-DRAFT Multicast DNS 6 July 2001
|
|||
|
||||
[12] Huston, G., "Management Guidelines & Operational Requirements for
|
||||
the Internet Infrastructure Domain ("ARPA")", Internet draft (work
|
||||
in progress), draft-iab-arpa-02.txt, May 2001.
|
||||
in progress), draft-iab-arpa-03.txt, July 2001.
|
||||
|
||||
|
||||
|
||||
Esibov, Aboba & Thaler Standards Track [Page 14]
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
Esibov, Aboba & Thaler Standards Track [Page 12]
|
||||
INTERNET-DRAFT Multicast DNS 15 November 2001
|
||||
|
||||
|
||||
[13] Gilligan, R., Thomson, S., Bound, J., Stevens, W., "Basic Socket
|
||||
Interface Extensions for IPv6", RFC 2553, March 1999.
|
||||
|
||||
[14] Crawford, Matt, "IPv6 Node Information Queries", Internet draft
|
||||
(work in progress), draft-ietf-ipn-gwg-icmp-name-lookups-07.txt,
|
||||
August 2000.
|
||||
|
||||
[15] Eastlake, D., "Domain Name System Security Extensions", RFC 2535,
|
||||
March 1999.
|
||||
|
||||
INTERNET-DRAFT Multicast DNS 6 July 2001
|
||||
[16] Rivest, R., "The MD5 Message-Digest Algorithm", RFC 1321, April
|
||||
1992.
|
||||
|
||||
[17] Aboba, B., "DHCP Domain Search Option", Internet draft (work in
|
||||
progress), draft-aboba-dhc-domsearch-08.txt, November 2001.
|
||||
|
||||
[18] Cheshire, S., Aboba, B., "Dynamic Configuration of IPv4 Link-Local
|
||||
Addresses", Internet draft (work in progress), draft-ietf-zeroconf-
|
||||
ipv4-linklocal-05.txt, November 2001.
|
||||
|
||||
[19] Thaler, D., Hagino, I., "IPv6 Stateless DNS Discovery", Internet
|
||||
draft (work in progress), draft-ietf-ipngwg-dns-discovery-02.txt,
|
||||
July 2001.
|
||||
|
||||
[20] Stevens, W., Thomas, M., "Advanced Sockets API for IPv6", RFC 2292,
|
||||
February 1998.
|
||||
|
||||
9. Security Considerations
|
||||
|
||||
|
|
@ -739,51 +886,46 @@ In all received responses, the Hop Limit field in IPv6 and the TTL field
|
|||
in IPv4 are verified to contain 255, the maximum legal value. Since
|
||||
routers decrement the Hop Limit on all packets they forward, received
|
||||
packets containing a Hop Limit of 255 must have originated from a
|
||||
neighbor. Packets destined for a LINKLOCAL address are verified to have
|
||||
been sent from a LINKLOCAL source address.
|
||||
neighbor.
|
||||
|
||||
These threats are most serious in wireless networks such as 802.11,
|
||||
since attackers on a wired network will require physical access to the
|
||||
home network, while wireless attackers may reside outside the home.
|
||||
Link-layer security will serve to secure mDNS against the above threats
|
||||
|
||||
|
||||
|
||||
Esibov, Aboba & Thaler Standards Track [Page 15]
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
INTERNET-DRAFT Multicast DNS 15 November 2001
|
||||
|
||||
|
||||
if it is available. For example, where 802.11 "Wired Equivalency
|
||||
Privacy" (WEP) [10] is implemented, a casual attacker is likely to be
|
||||
deterred from gaining access to the home network.
|
||||
|
||||
The mechanism specified in this draft does not require use of the
|
||||
DNSSEC, which means that the responses to the multicast DNS queries may
|
||||
not be authenticated. If a network contains a "signed key distribution
|
||||
center" for all (or at least some) of the DNS zones that the responders
|
||||
are authoritative for, then hosts on such a network are configured with
|
||||
the key for the top zone, "local.arpa." (hosted by "signed keys
|
||||
distribution center") and may use DNSSEC for authentication of the
|
||||
responders using DNSSEC.
|
||||
The mechanism specified in this draft does not require use of DNSSEC.
|
||||
As a result, responses to multicast DNS queries MAY NOT be
|
||||
authenticated. If a network contains a "signed key distribution center"
|
||||
for some of the DNS zones that the responders are authoritative for, and
|
||||
senders on that network are configured with the key for the top zone
|
||||
"local.arpa." (hosted by "signed keys distribution center"), then
|
||||
senders MAY authenticate the responses using DNSSEC.
|
||||
|
||||
Acknowledgments
|
||||
|
||||
This work builds upon original work done on multicast DNS by Bill
|
||||
Manning and Bill Woodcock. The authors gratefully acknowledge their
|
||||
Manning and Bill Woodcock. Bill Manning's work was funded under DARPA
|
||||
grant #F30602-99-1-0523. The authors gratefully acknowledge their
|
||||
contribution to the current specification. Constructive input has also
|
||||
been received from Mark Andrews, Stuart Cheshire, Robert Elz, James
|
||||
Gilroy, Olafur Gudmundsson, Erik Guttman, Myron Hattig, Thomas Narten,
|
||||
Erik Nordmark, Sander Van-Valkenburg and Tomohide Nagashima.
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
Esibov, Aboba & Thaler Standards Track [Page 13]
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
INTERNET-DRAFT Multicast DNS 6 July 2001
|
||||
|
||||
|
||||
Authors' Addresses
|
||||
|
||||
Levon Esibov
|
||||
|
|
@ -798,7 +940,7 @@ Microsoft Corporation
|
|||
One Microsoft Way
|
||||
Redmond, WA 98052
|
||||
|
||||
Phone: +1 (425) 936-6605
|
||||
Phone: +1 425 936 6605
|
||||
EMail: bernarda@microsoft.com
|
||||
|
||||
Dave Thaler
|
||||
|
|
@ -806,9 +948,22 @@ Microsoft Corporation
|
|||
One Microsoft Way
|
||||
Redmond, WA 98052
|
||||
|
||||
Phone: +1 (425) 703-8835
|
||||
Phone: +1 425 703 8835
|
||||
EMail: dthaler@microsoft.com
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
Esibov, Aboba & Thaler Standards Track [Page 16]
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
INTERNET-DRAFT Multicast DNS 15 November 2001
|
||||
|
||||
|
||||
Intellectual Property Statement
|
||||
|
||||
The IETF takes no position regarding the validity or scope of any
|
||||
|
|
@ -831,19 +986,6 @@ which may cover technology that may be required to practice this
|
|||
standard. Please address the information to the IETF Executive
|
||||
Director.
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
Esibov, Aboba & Thaler Standards Track [Page 14]
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
INTERNET-DRAFT Multicast DNS 6 July 2001
|
||||
|
||||
|
||||
Full Copyright Statement
|
||||
|
||||
Copyright (C) The Internet Society (2001). All Rights Reserved.
|
||||
|
|
@ -869,8 +1011,21 @@ WARRANTIES OF MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE."
|
|||
|
||||
Expiration Date
|
||||
|
||||
This memo is filed as <draft-ietf-dnsext-mdns-01.txt>, and expires
|
||||
January 15, 2002.
|
||||
|
||||
|
||||
|
||||
|
||||
Esibov, Aboba & Thaler Standards Track [Page 17]
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
INTERNET-DRAFT Multicast DNS 15 November 2001
|
||||
|
||||
|
||||
This memo is filed as <draft-ietf-dnsext-mdns-07.txt>, and expires May
|
||||
22, 2002.
|
||||
|
||||
|
||||
|
||||
|
|
@ -895,6 +1050,31 @@ January 15, 2002.
|
|||
|
||||
|
||||
|
||||
Esibov, Aboba & Thaler Standards Track [Page 15]
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
Esibov, Aboba & Thaler Standards Track [Page 18]
|
||||
|
||||
|
||||
Loading…
Reference in a new issue