own CVS tree will help minimize CVS conflicts. Maybe not. Blame Graff for getting me to trim all trailing whitespace.
649 lines
21 KiB
Plaintext
649 lines
21 KiB
Plaintext
INTERNET-DRAFT DNSIND Key Rollover
|
|
UPDATES RFC 1996 April 1999
|
|
Expires October 1999
|
|
draft-ietf-dnsind-rollover-00.txt
|
|
|
|
|
|
|
|
Domain Name System (DNS) Security Key Rollover
|
|
------ ---- ------ ----- -------- --- --------
|
|
|
|
Donald E. Eastlake 3rd, Mark Andrews
|
|
|
|
|
|
|
|
Status of This Document
|
|
|
|
This draft, file name draft-ietf-dnsind-rollover-00.txt, is intended
|
|
to be become a Proposed Standard RFC. Distribution of this document
|
|
is unlimited. Comments should be sent to the DNS working group
|
|
mailing list <namedroppers@internic.net> or to the authors.
|
|
|
|
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. Internet-Drafts may be updated, replaced, or obsoleted by
|
|
other documents at any time. It is not appropriate to use Internet-
|
|
Drafts as reference material or to cite them other than as a
|
|
``working draft'' or ``work in progress.''
|
|
|
|
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.
|
|
|
|
|
|
|
|
Abstract
|
|
|
|
Deployment of Domain Name System (DNS) security with good cryptologic
|
|
practice will involve large volumes of key rollover traffic. A
|
|
standard format and protocol for such messages will be necessary for
|
|
this to be practical and is specified herein.
|
|
|
|
[Note: this draft has been moved to dnsind from dnssec as part of the
|
|
ongoing combination of these working groups. It would have been
|
|
draft-ietf-dnssec-rollover-01.txt otherwise.]
|
|
|
|
|
|
|
|
|
|
D. Eastlake 3rd, M. Andrews [Page 1]
|
|
|
|
|
|
|
|
INTERNET-DRAFT April 1999 DNSSEC Key Rollover
|
|
|
|
|
|
Table of Contents
|
|
|
|
Status of This Document....................................1
|
|
Abstract...................................................1
|
|
|
|
Table of Contents..........................................2
|
|
|
|
1. Introduction............................................3
|
|
2. Key Rollover Scenario...................................3
|
|
3. Rollover Operation......................................5
|
|
3.1 Rollover to Parent.....................................5
|
|
3.2 Rollover to Children...................................6
|
|
4. Secure Zone Cuts and Joinders...........................7
|
|
5. Security Considerations.................................8
|
|
6. IANA Considerations.....................................9
|
|
|
|
References................................................10
|
|
Authors Address...........................................10
|
|
Expiration and File Name..................................11
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
D. Eastlake 3rd, M. Andrews [Page 2]
|
|
|
|
|
|
|
|
INTERNET-DRAFT April 1999 DNSSEC Key Rollover
|
|
|
|
|
|
1. Introduction
|
|
|
|
The Domain Name System (DNS) [RFC 1034, 1035] is the global
|
|
hierarchical replicated distributed database system for Internet
|
|
addressing, mail proxy, and other information. The DNS has been
|
|
extended to include digital signatures and cryptographic keys as
|
|
described in [RFC 2535].
|
|
|
|
The principle security service provided for DNS data is data origin
|
|
authentication. The owner of each zone signs the data in that zone
|
|
with a private key known only to the zone owner. Anyone that knows
|
|
the corresponding public key can then authenticate that zone data is
|
|
from the zone owner. To avoid having to preconfigure resolvers with
|
|
all zone's public keys, keys are stored in the DNS with each zone's
|
|
key signed by its parent (if the parent is secure).
|
|
|
|
To obtain high levels of security, keys must be periodically changed,
|
|
or "rolled over". The longer a private key is used, the more likely
|
|
it is to be compromised due to cryptanalysis, accident, or treachery
|
|
[RFC 2541].
|
|
|
|
In a widely deployed DNS security system, the volume of update
|
|
traffic will be large. Just consider the .com zone. If only 10% of
|
|
its children are secure and change their keys only once a year, you
|
|
are talking about hundreds of thousands of new child public keys that
|
|
must be securely sent to the .com manager to sign and return with
|
|
their new parent signature. And when .com rolls over its private
|
|
key, it will needs to send hundred of thousands of new signatures on
|
|
the existing child public keys to the child zones.
|
|
|
|
It will be impractical to handle such update volumes manually on a
|
|
case by case basis. The bulk of such key rollover updates must be
|
|
automated.
|
|
|
|
The key words "MUST", "REQUIRED", "SHOULD", "RECOMMENDED", and "MAY"
|
|
in this document are to be interpreted as described in [RFC 2119].
|
|
|
|
|
|
|
|
2. Key Rollover Scenario
|
|
|
|
Although DNSSEC provides for the storage of other keys in the DNS for
|
|
other purposes, DNSSEC zone keys are included solely for the purpose
|
|
of being retrieved to authenticate DNSSEC signatures. Thus, when a
|
|
zone key is being rolled over, the old public key should be left in
|
|
the zone, along with the addition of the new public key, for as long
|
|
as it will reasonably be needed to authenticate old signatures that
|
|
have been cached or are held by applications. Similarly, old parent
|
|
SIGs should be retained for a short time after a parent KEY(s) roll
|
|
over and new parent SIGs have been installed.
|
|
|
|
|
|
D. Eastlake 3rd, M. Andrews [Page 3]
|
|
|
|
|
|
|
|
INTERNET-DRAFT April 1999 DNSSEC Key Rollover
|
|
|
|
|
|
If DNSSEC were universally deployed and all DNS server's clocks were
|
|
synchronized and zone transfers were instantaneous etc., it might be
|
|
possible to avoid ever having duplicate old/new KEY/SIG RRsets due to
|
|
simultaneous expiration of SIGs everywhere in the DNS. But these
|
|
assumptions do not hold. Security aware DNS servers decrease the TTL
|
|
of secure RRs served as the expiration of their authenticating SIG(s)
|
|
approaches but some dithered fudge must generally be left due to
|
|
clock skew, RR retention by applications, and the like. Retaining
|
|
old KEYs for a while after rolling over to new KEYs will be necessary
|
|
in practical cases.
|
|
|
|
Assume a middle zone with a secure parent and a secure child wishes
|
|
to role over its KEY RRset. This RRset would probably be one KEY RR
|
|
per crypto algorithm used to secure the zone, but for this scenario,
|
|
we will simply assume it is one KEY RR. The old KEY RR and two SIG
|
|
RRs will exist at the apex of the middle zone. (These RRs may also
|
|
exist at the leaf node for this zone in its parent if the parent
|
|
chooses to store them there.) The contents of the middle zone and the
|
|
zone KEY RRs of its secure child will have SIGs under the old key.
|
|
|
|
The middle zone owner needs to communicate with its parent to obtain
|
|
a new parental signature covering both the old and new KEY RRs and
|
|
covering just the new KEY RR. The signature on both is needed so the
|
|
old KEY can be retain for the period it might be needed to
|
|
authenticate old SIGs. The middle zone would probably want to obtain
|
|
these in advance so that it can install them at the right time along
|
|
with its new SIG RRs covering the content of its zone. Finally, it
|
|
needs to give new SIG RRs to its child that cover its KEY RRs so it
|
|
must signal its children to ask for such SIG RRs.
|
|
|
|
BEFORE ROLLOVER SHORTLY AFTER AFTER ROLLOVER
|
|
|
|
p.x KEY P1 p.x KEY P1 p.x KEY P1
|
|
p.x SIG(KEY) P1 p.x SIG(KEY) P1 p.x SIG(KEY) P1
|
|
p.x SIG(KEY) GP p.x SIG(KEY) GP p.x SIG(KEY) GP
|
|
|
|
m.p.x KEY M1 m.p.x KEY M2 m.p.x KEY M2
|
|
m.p.x SIG(KEY) P1 m.p.x KEY M1 m.p.x SIG(KEY) P1
|
|
m.p.x SIG(KEY) M1 m.p.x SIG(KEY) P1 m.p.x SIG(KEY) M2
|
|
m.p.x SIG(KEY) M2
|
|
|
|
c.m.p.x KEY C1 c.m.p.x KEY C1 c.m.p.x KEY C1
|
|
c.m.p.x SIG(KEY) M1 c.m.p.x SIG(KEY) M2 c.m.p.x SIG(KEY) M2
|
|
c.m.p.x SIG(KEY) C1 c.m.p.x SIG(KEY) M1 c.m.p.x SIG(KEY) C1
|
|
c.m.p.x SIG(KEY) C1
|
|
|
|
p = parent, m = middle, c = child, GP = grandparent key
|
|
P* = parent key, M* = middle zone key, C* = child key
|
|
|
|
|
|
|
|
|
|
D. Eastlake 3rd, M. Andrews [Page 4]
|
|
|
|
|
|
|
|
INTERNET-DRAFT April 1999 DNSSEC Key Rollover
|
|
|
|
|
|
3. Rollover Operation
|
|
|
|
Rollover operations use a DNS request syntactically identical to the
|
|
UPDATE request [RFC 2136] (except that the operation code is ROLLOVER
|
|
which is equal to (TBD)) and use a new form of NOTIFY [RFC 1996].
|
|
Considerations for such requests to the parent and children of a zone
|
|
are givens below.
|
|
|
|
All rollover operations involve significant amounts of cryptographic
|
|
calculations. Appropriate rate limiting SHOULD be applied to avoid
|
|
denial of service attacks.
|
|
|
|
[This draft does not consider cross-certification key rollover.]
|
|
|
|
|
|
|
|
3.1 Rollover to Parent
|
|
|
|
A zone rolling over its KEY RRset sends an upward ROLLOVER request to
|
|
its parent. Actually, it will normally do two upward ROLLOVERs, one
|
|
for a combined KEY RRset of its old and new KEYs and one for just its
|
|
new KEY RRset, as discussed above.
|
|
|
|
The server selection algorithm in [RFC 2136] section 4 should be
|
|
used. A child needs to be configured with or determine the name of
|
|
its parent but SHOULD NOT remember the location of its parent other
|
|
than via normal DNS caching of address RRs so that rollover will
|
|
continue to work if its parent servers are moved.
|
|
|
|
The ROLLOVER request Zone should be specified as the parent zone.
|
|
The request Update section has the new KEY RRset on which the parent
|
|
signature is requested along with the requesting zone's SIG(s) under
|
|
its old KEY(s) as RRs to be "added" to the parent zone. The
|
|
inception and expiration times in this child SIG or SIGs are the
|
|
requested inception and expiration times for the new parent SIG(s).
|
|
The "prerequisites" section has the old child KEY RRset with the
|
|
parent SIG (see next paragraph).
|
|
|
|
An upward ROLLOVER request MUST be signed and if not signed a BADAUTH
|
|
response generated. The signature MUST be under the previous zone
|
|
KEY, so the parent can validate it, or under a valid TSIG key
|
|
[draft-ietf-dnsind-tsig-*.txt] arranged with the parent. Including
|
|
the "prerequisite" section as specified above enables a parent that
|
|
keeps no record of its children's KEYs to still authenticate a
|
|
child's ROLLOVER request based on the old child KEY because the
|
|
parent is presented with its own SIG on the old KEY.
|
|
|
|
If the ROLLOVER command is erroneous or violates parental policy, an
|
|
Error response is returned. If a parent retains copies of its
|
|
children's KEYs, it may use that knowledge to validate ROLLOVER
|
|
|
|
|
|
D. Eastlake 3rd, M. Andrews [Page 5]
|
|
|
|
|
|
|
|
INTERNET-DRAFT April 1999 DNSSEC Key Rollover
|
|
|
|
|
|
request SIGs and ignore the "prerequisites" section.
|
|
|
|
If the ROLLOVER command is OK and the parent can sign online, its
|
|
response MAY include the new parent SIG(s) in the response Update
|
|
section. This response MUST be sent to the originator of the
|
|
request.
|
|
|
|
If the parent can not sign online, it should return a response with
|
|
an empty Update section and queue the SIG(s) calculation request.
|
|
This response MUST be sent to the originator of the request.
|
|
|
|
ROLLOVER response messages MUST always include the actual parent's
|
|
SOA signed with a key the child should recognize in the Additional
|
|
Information section (see section 4 below).
|
|
|
|
Regardless of whether the server has sent the new signatures above,
|
|
it MUST, once it has calculated the new SIG(s), send a ROLLOVER to
|
|
the child zone using the DNS port (53) and the server selection
|
|
algorithm defined in RFC 2136, Section 4. This ROLLOVER reqeust
|
|
contains the KEY RRset that triggered it and the new SIG(s). There
|
|
are several reasons for sending the ROLLOVER response regardless of
|
|
whether the new SIG RR(s) were sent in the original response. One is
|
|
to provide an indication to the operators of the zone in the event
|
|
someone is trying to hijack the zone. Another is that this maximizes
|
|
the probability of the response getting through.
|
|
|
|
Although the parent zone need not hold or serve the child's key, if
|
|
it does the ROLLOVER command REQUEST SHOULD NOT automatically update
|
|
the parent zone. A later UPDATE command can be used to actually put
|
|
the new KEY into the parent zone if desired and supported by parent
|
|
policy.
|
|
|
|
This document does not cover the question of parental policy on key
|
|
rollovers. Parents may have restrictions on how far into the future
|
|
they will sign KEY RRsets, what algorithms or key lengths they will
|
|
support, might require payment for the service, etc. The signing of
|
|
a future KEY by a parent is, to some extent, a granting of future
|
|
authoritative existence to the controller of the child private key
|
|
even if the child zone ownership should change. The only effective
|
|
way of invalidating such future signed child public keys would be for
|
|
the parent to roll over its key(s), which might be an expensive
|
|
operation.
|
|
|
|
|
|
|
|
3.2 Rollover to Children
|
|
|
|
When a secure zone is going to rollover its key(s), it needs to re-
|
|
sign the zone keys of any secure children under its new key(s). The
|
|
parent simply notifIES the child via a rollover NOTIFY [RFC 1996]
|
|
|
|
|
|
D. Eastlake 3rd, M. Andrews [Page 6]
|
|
|
|
|
|
|
|
INTERNET-DRAFT April 1999 DNSSEC Key Rollover
|
|
|
|
|
|
that the parent KEY(s) have changed. The child then proceeds to do
|
|
an upward ROLLOVER request, as described in 3.1 above to obtain the
|
|
new parental SIG(s).
|
|
|
|
A rollover NOTIFY is a NOTIFY request [RFC 1996] that has a QTYPE of
|
|
SIG and the owner name of the child zone. The answer section has the
|
|
current parent SOA signed by a key the child will know (see section
|
|
4).
|
|
|
|
A rollover NOTIFY MUST be signed and if not signed a BADAUTH response
|
|
generated. The signature MUST be under the previous parental zone
|
|
KEY, so the child can validate it, or under a valid TSIG key [draft-
|
|
ietf-dnsind-tsig-*.txt] negotiated between parent and child.
|
|
|
|
The rollover NOTIFY can be sent to any of the nameservers for the
|
|
child using the nameserver selection algorithm defined in RFC 2136,
|
|
Section 4. Nameservers for the child zone receiving a rollover
|
|
NOTIFY query will forward the rollover NOTIFY in the same manner as
|
|
an UPDATE is forwarded.
|
|
|
|
Unless the master server is configured to initiate an automatic
|
|
ROLLOVER it MUST seek to inform its operators that a rollover NOTIFY
|
|
request has been received. This could be done by a number of methods
|
|
including generating a log message, generating an email request to
|
|
the child zone's SOA RNAME or any other method defined in the
|
|
server's configuration for the zone. The default SHOULD be to send
|
|
mail to the zone's SOA RNAME. As with all rollover operations, care
|
|
should be taken to rate limit these messages so prevent them being
|
|
used to facilitate a denial of service attack.
|
|
|
|
Once the message has been sent (or suppressed if so configured) to
|
|
the child zone's administrator the master server for the child zone
|
|
is free to respond to the rollover NOTIFY request.
|
|
|
|
|
|
|
|
4. Secure Zone Cuts and Joinders
|
|
|
|
There are two other events that have some similarity to key rollover.
|
|
|
|
The first is when a secure zone the is more than one level deep has a
|
|
zone cut introduced inside it. For example, assume zone example.com
|
|
has a.b.c.example.com, d.b.c.example.com and e.example.com in it. A
|
|
zone cut could be introduced such that b.c.example.com became a
|
|
separate child zone of example.com. A real world exampe would be a
|
|
company that structures its DNS as host.branch.company.example. It
|
|
might start out will all of these names in one zone but later decide
|
|
to delegate all or some of the branches to branch zone file
|
|
maintainers.
|
|
|
|
|
|
|
|
D. Eastlake 3rd, M. Andrews [Page 7]
|
|
|
|
|
|
|
|
INTERNET-DRAFT April 1999 DNSSEC Key Rollover
|
|
|
|
|
|
The second is when a secure zone absorbs a child zone eliminating a
|
|
zone cut. This is simply the inverse of the previous paragraph.
|
|
|
|
From the point of view of the parent zone above the splitting zone or
|
|
above the upper of the two combining zones, there is no change.
|
|
|
|
When a zone is split by introducing a cut, the newly created child
|
|
must be properly configured.
|
|
|
|
However, from the point of view of a child of the splitting zone
|
|
which becomes a grandchild or a grandchild that becomes a child due
|
|
to joinder, there is a change in parent name. Therefore, in general,
|
|
there is a change in parent KEY(s). Unless the entity that handles
|
|
rollovers for the zone whose parent name has changed is appropriately
|
|
updated, future automated rollover will fail because it will be sent
|
|
to the old parent.
|
|
|
|
For this reason and so that other consistency checks can be made, the
|
|
parent SOA and SIG(SOA) are always included in the Answer section of
|
|
rollover NOTIFY requests and in ROLLOVER responsess. For automated
|
|
rollover to the new cut or joined state to work, these SOAs must be
|
|
signed with old KEY(s) of the former parent so the signatures can be
|
|
validated by the zone whose parent name is changing. In the case of
|
|
a joinder, if the private key of the pinched out middle zone is not
|
|
available, then manual update of the former grandchild, now child,
|
|
will be necessary. In the case of introducing a cut, operational
|
|
coordination with the former parent, now grandparent, signing the
|
|
initial updates to the former child, now grandchild, will be needed
|
|
to automate the reconfiguration of the zones.
|
|
|
|
|
|
|
|
5. Security Considerations
|
|
|
|
The security of ROLLOVER or UPDATE requests is essential, otherwise
|
|
false children could steal parental authorization or a false parent
|
|
could cause a child to install an invalid signature on its zone key,
|
|
etc.
|
|
|
|
A ROLLOVER request can be authenticated by request SIG(s)under the
|
|
old zone KEY(s) of the requestor [RFC 2535]. The response SHOULD
|
|
have transaction SIG(s) under the old zone KEY(s) of the responder.
|
|
(This public key security could be used to rollover a zone to the
|
|
unsecured state but at that point it would generally not be possible
|
|
to roll back without manual intervention.)
|
|
|
|
Alternatively, if there is a prior arrangement between a child and a
|
|
parent, ROLLOVER requests and responses can be secured and
|
|
authenticated using TSIG [draft-ietf-dnsind-tsig-*.txt]. (TSIG
|
|
security could be used to rollover a zone to unsecured and to
|
|
|
|
|
|
D. Eastlake 3rd, M. Andrews [Page 8]
|
|
|
|
|
|
|
|
INTERNET-DRAFT April 1999 DNSSEC Key Rollover
|
|
|
|
|
|
rollover an unsecured zone to the secured state.)
|
|
|
|
A server that implements online signing SHOULD have the ability to
|
|
black list a zone and force manual processing or demand that a
|
|
particular signature be used to generate the ROLLOVER request. This
|
|
it to allow ROLLOVER to be used even after a private key has been
|
|
compromised.
|
|
|
|
|
|
|
|
6. IANA Considerations
|
|
|
|
The DNS operation code (TBD) is assigned to ROLLOVER. There are no
|
|
other IANA considerations in this document.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
D. Eastlake 3rd, M. Andrews [Page 9]
|
|
|
|
|
|
|
|
INTERNET-DRAFT April 1999 DNSSEC Key Rollover
|
|
|
|
|
|
References
|
|
|
|
[RFC 1034] - "Domain names - concepts and facilities", P.
|
|
Mockapetris, 11/01/1987.
|
|
|
|
[RFC 1035] - "Domain names - implementation and specification", P.
|
|
Mockapetris, 11/01/1987.
|
|
|
|
[RFC 1996] - "A Mechanism for Prompt Notification of Zone Changes
|
|
(DNS NOTIFY)", P. Vixie, August 1996.
|
|
|
|
[RFC 2119] - "Key words for use in RFCs to Indicate Requirement
|
|
Levels", S. Bradner. March 1997.
|
|
|
|
[RFC 2136] - "Dynamic Updates in the Domain Name System (DNS
|
|
UPDATE)", P. Vixie, Ed., S. Thomson, Y. Rekhter, J. Bound. April
|
|
1997.
|
|
|
|
[draft-ietf-dnsind-tsig-*.txt]
|
|
|
|
[RFC 2535] - "Domain Name System Security Extensions", D. Eastlake.
|
|
March 1999.
|
|
|
|
[RFC 2541] - "DNS Security Operational Considerations", D. Eastlake.
|
|
March 1999.
|
|
|
|
|
|
|
|
Authors Address
|
|
|
|
Donald E. Eastlake 3rd
|
|
IBM
|
|
65 Sindegan Hill Road, RR #1
|
|
Carmel, NY 10512
|
|
|
|
Telephone: +1 914-276-2668 (h)
|
|
+1 914-784-7913 (w)
|
|
FAX: +1 914-784-3833 (w)
|
|
EMail: dee3@us.ibm.com
|
|
|
|
|
|
Mark Andrews
|
|
Internet Software Consortium
|
|
1 Seymour Street
|
|
Dundas Valley, NSW 2117
|
|
AUSTRALIA
|
|
|
|
Telephone: +61-2-9871-4742
|
|
Email: marka@isc.org
|
|
|
|
|
|
|
|
D. Eastlake 3rd, M. Andrews [Page 10]
|
|
|
|
|
|
|
|
INTERNET-DRAFT April 1999 DNSSEC Key Rollover
|
|
|
|
|
|
Expiration and File Name
|
|
|
|
This draft expires in October 1999.
|
|
|
|
Its file name is draft-ietf-dnsind-rollover-00.txt.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
D. Eastlake 3rd, M. Andrews [Page 11]
|
|
|
|
|