CSI Report
CSI Report
Contents
1 Introduction 3
1.1 Recommended reading . . . . . . . . . . . . . . . . . . . . . . . . 6
1.2 Examples used in this master thesis . . . . . . . . . . . . . . . . 6
1
2.1.2 Caching . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7
2.1.3 Zone files . . . . . . . . . . . . . . . . . . . . . . . . . . . 8
2.2 DNS lookups . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10
2.2.1 DNS answers in detail . . . . . . . . . . . . . . . . . . . . 10
2.2.2 Glue records and delegation points . . . . . . . . . . . . . 12
2.2.3 Lame delegations . . . . . . . . . . . . . . . . . . . . . . . 12
2.2.4 Wildcard delegations . . . . . . . . . . . . . . . . . . . . . 12
2.2.5 Apex . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13
2.3 Security . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13
6 Signing of zones 29
6.1 On-tree signing . . . . . . . . . . . . . . . . . . . . . . . . . . . . 29
6.2 Off-tree signing . . . . . . . . . . . . . . . . . . . . . . . . . . . . 29
6.3 Location of key signatures . . . . . . . . . . . . . . . . . . . . . . 30
6.3.1 NLnet Labs proposal . . . . . . . . . . . . . . . . . . . . . 30
6.4 Resigning a TLD . . . . . . . . . . . . . . . . . . . . . . . . . . . 31
6.5 Key rollovers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 31
6.5.1 Scheduled keyrollover . . . . . . . . . . . . . . . . . . . . 31
2
6.5.2 Unscheduled keyrollover . . . . . . . . . . . . . . . . . . . 32
6.5.3 Possible problems . . . . . . . . . . . . . . . . . . . . . . 33
7 Scalability 34
7.1 Signing of large zones . . . . . . . . . . . . . . . . . . . . . . . . 34
7.1.1 German TLD zone . . . . . . . . . . . . . . . . . . . . . . 35
7.1.2 The numbers . . . . . . . . . . . . . . . . . . . . . . . . . 35
7.1.3 Extrapolating the results . . . . . . . . . . . . . . . . . . 36
7.2 Signing Speeds . . . . . . . . . . . . . . . . . . . . . . . . . . . . 36
8 Implementing DNSSEC 38
8.1 Why BIND . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 38
8.2 Alternative DNS implementations . . . . . . . . . . . . . . . . . . 38
8.3 Case study .nl.nl . . . . . . . . . . . . . . . . . . . . . . . . . . . 38
8.4 Design . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 38
8.5 Current setup in .nl . . . . . . . . . . . . . . . . . . . . . . . . . 39
8.5.1 Problems encountered . . . . . . . . . . . . . . . . . . . . 40
8.6 Outstanding issues . . . . . . . . . . . . . . . . . . . . . . . . . . 40
8.6.1 Legal issues . . . . . . . . . . . . . . . . . . . . . . . . . . 40
8.6.2 Modifications to BIND . . . . . . . . . . . . . . . . . . . . 41
9 Conclusions 41
10 List of Acronyms 43
1 Introduction
In the early days the Internet was a place where friends and scientists could talk
to each other. It was used as a medium where they could exchange information
and ideas. Security was not much of an issue. Today, with more and more people
using the Internet for business, it is a much more hostile environment with email
viruses, denial of service (DoS) attacks, crackers, script kiddies, spoofing, etc,
etc. These threats aren’t merely an annoyance anymore; they could cost a lot
of money. It is already obvious that these trends are not going to stop. The
cash flow and the hacking/cracking on the Net are only going to increase.
One of such systems on the Internet that works great in a friendly environ-
ment, but is vulnerable now, is the domain name system (DNS). The primary
job of the DNS is to take care of the mapping between domain names (like
www.example.com) and IP numbers (like 192.168.1.1). This system has proven
to be highly scalable and the Internet would not have grown so big, so fast,
without it. There are however also some security problems with DNS. It has
been shown that it is possible to corrupt the system with false data. Instead
of having www.example.com mapping to 192.168.1.1 an attacker could make it
point to an arbitrary IP address under his control.
To address this and other shortcomings of the DNS an addition has been
proposed, called the secure domain name system (DNSSEC). DNSSEC uses
3
cryptographically signed responses to authenticate the results, thus detecting
falsified data. Although DNSSEC solves the security issues in DNS it creates
other problems:
CPU intensive DNSSEC uses public key encryption to sign data. This is very
computational so the less data you sign, the better.
zone file sizes DNS stores its information in zone files. Some of those file are
already very big. With DNSSEC these files may be six fold in size.
key management DNSSEC uses keys and signatures for authentication, and
it is yet unknown how to handle those (millions) of keys.
administrative issues there is no experience (yet) how to handle the extra
overhead DNSSEC is creating.
more involvement DNSSEC will need much more involvement from system
administrators.
how to start DNS was rolled out when the Internet was small. Today there
are millions of hosts that need to be converted to DNSSEC.
Most problems DNSSEC creates seem solvable, but the key management
issue could be a big problem. There are trials done with DNSSEC today, but
those haven’t reached the point yet to have problems with key management.
Either this issue is solved and DNSSEC is rolled out or it isn’t and an alter-
native must be found. This master thesis provides a possible solution to the
key management issue (see section 5) and also describes a number of procedures
that TLD can follow when implementing DNSSEC. All these procedures use old,
known keys to authenticate new requests from delegated zones, thus reducing
the problem on how to get the first key authenticated.
This “first key issue” is solved using DNS in the most secure means possible
and using the existing DNS infrastructure. When this key has been signed by
a TLD it must be sent back to the child for inclusion in the zonefile. This
extra step of sending the resulting signature back to the child is also something
I challenge. A large TLD wants to reduce to need to communicate with its
children. Inclusion of the signature in the parent’s zone is a way of solving this.
This is however still a very controversial thing to do and it is uncertain how the
rest of the DNSSEC community will react to this idea.
If DNSSEC is rolled out it also provides an infrastructure to publish public
keys or other certificates in a secure manner. Thus it will not only provide a
secure DNS, but also a worldwide database with public keys people can use to
encrypt, decrypt and authenticate digital communications. This is something a
lot of people and companies are eagerly awaiting. DNSSEC is a major step to
a more secure Internet.
The security problem with DNS was identified in 1990 [1]. After thinking
about solutions for almost 5 years the RFC describing DNSSEC was released
in 1995 [11]. It has taken another 5 years to complete the tools implementing
4
DNSSEC. Only now (2001) there are projects on the way to convert the DNS
tree to a DNSSEC tree. One such a project is .nl.nl. The purpose of that project
is to mirror the .nl (DNS)tree in a secure fashion. The project has revealed that
there are still problems left. The DNSSEC specification states that public key
encryption is used, but it does not specify how to manage those millions of keys,
nor does it specify the problems arising when (private) keys get compromised
or when child zones wish to use new keys for their zones.
This master thesis is a project for my work at NLnet Labs in order to
graduate from the University of Nijmegen, the main goal of this project will
be:
I. Define a set of procedures that implement a safe and secure com-
munication between the parent-child and keyholder-keysigner rela-
tion in DNSSEC.
Concretely I will look at the impact DNSSEC will have on large ccTLD’s and
gTLD’s. The procedures needed for .nl.nl are very much the same as the ones
in use now (getting a new domain, changing data concerning a domain, etc.),
but there are a few important new ones, concerning the administration of public
keys. A zone can now, for instance, decide they want to use a new keys. How
do you handle such an update? Another big issue is authentication. How do
you know that if somebody claims that a key belongs to a particular zone,
this really is the case? In this master thesis such procedures are described and
any additional problems are identified and possibly solved. The procedures are
detailed in sections 5 and 7.
Another, more concrete, goal is to:
II. Find a possibly solution for the key distribution problem and
specifically where the parent generated signatures should be located.
Generally the parent signs the key of the child and the child stores this signa-
ture in its zonefile. The results found when doing this research challenge this,
especially key management looks very difficult in such a setup. In section 7,
paragraph 6.3.1, a possible solution is given for this problem. This proposal is
currently an Internet draft [28].
Finally the following problems are looked at more closely.
• DNSSEC is much more CPU intensive than DNS. How to cope with this?
(Described in section 7)
• DNSSEC zonefiles are 3-6 times larger than a DNS zone file. How do you
handle this much data? (Section 7)
• there is not (yet) any experience with the extra overhead DNSSEC is
creating. (Section 4)
• how to start with deployment of DNSSEC? (Section 8)
5
1.1 Recommended reading
The reader of this document is assumed to have some basic knowledge of the
Domain Name System. The DNS & BIND book [2] is a good introduction and
the article from Steven M. Belovin [1] clearly explains a major loophole in DNS.
The following RFC’s are also relevant to the topic: [6, 7] and [11]. There is also
a heavy use of acronyms in this master thesis. In section 10 on page 43 the most
common ones are listed and explained.
6
2.1 DNS design and structure
In short, DNS is a distributed database constructed in a tree like fashion. In
this scheme there are servers (nameservers) and there are clients (resolvers).
Figure 1 shows a part of the DNS tree. The root of the tree is denoted as a
single dot (“.”). Each node is also the root of a sub tree and is called a domain.
A domain must have at least two authoritative nameservers. Although this is
more an implementation issue then something directly specified in the relevant
RFC’s.
com net cx nl
atoom nlnetlabs
www voordeur
2.1.2 Caching
The number one priority in the design of DNS was speed. If someone would ask
for information concerning a zone in the United States from Europe, a request
would have to travel across the ocean get the data and return back to Europe.
And if somebody else should want the same information the request is send
again. This not only generates this a lot of traffic, it also puts a strain on the
nameserver for the zone in the US. This is why DNS caches information. Suppose
we have a setup depicted below. When user A asks for information concerning
7
user A
caching only US
resolver nameserver nameserver
user B
the US zone, the request is send via the resolver, through the local nameserver
(usually a caching only nameserver) to the US. The information comes back
via the same route. The local nameserver will remember this information for
a specific time period. A short time later user B asks for exactly the same
information. Again it is send via the resolver to the local nameserver. The local
nameserver will not forward the request to the US, because it already knows the
answer from its cache. Thus bandwidth and time is saved. This is exactly like
the memory caching mechanisms found in computers. The users are the requests
for data. The resolver is the microcode on the CPU to handle these requests.
The local nameserver is the level 1 cache on the CPU, and the authoritative
nameserver in the US is comparable with the main memory (RAM).
IN NS ns.isi.edu.
IN NS venera.isi.edu.
IN MX 10 mail.example.com
IN MX 50 mail-backup.example.com
www.example.com. IN A 128.9.176.32
mail.example.com. IN A 128.9.176.32
mail-backup.example.com. IN A 128.10.176.32
8
This zone file contains several resource records (RR) for example.com. Re-
source records hold information about a specific domain. The file starts with
a SOA record, SOA stands for Start Of Authority, this means that the infor-
mation specified in the records is authoritative for that zone. All the resource
records are specified in [6], I will list the most important ones here briefly.
owner which is the domain name where the RR is found.
class for normal DNS operation only the IN (Internet) class is used.
type which is an encoded 16 bit value that specifies the type of the resource in
this resource record.
A a host address.
CNAME identifies the canonical name of an alias.
HINFO identifies the CPU and OS used by a host.
MX identifies a mail exchange for the domain. See [3] for details.
NS the authoritative name server for the domain.
PTR a pointer to another part of the domain name space.
SOA identifies the start of a zone of authority.
In the SOA you have the following:
serial A number to identify the version of the zonefile. Whenever
there is a change in the zonefile this number should be increased
so that secondary nameservers know that they must get the new
information. There is no basic format for this number, but a
widely used scheme is: YYYYMMDDxx, xx is used when
there is more than one update on the same day, so the second
update on June the second in 2004 is denoted as 20040602022 .
refresh this number is the time in seconds in which a secondary
nameserver must synchronize its data with the primary name-
server.
retry if a secondary nameserver can’t refresh, it will try it again
within this time.
expire this value is used by secondary nameservers. If the primary
nameserver is unavailable, the secondaries will be authoritative
for the zone for duration of this time.
minimum this was used as a time to live (TTL) value for cached
data. When this time expires the cached data is thrown away.
Today this value is used as a TTL for negative caching (see [9]).
Negative caching is used when a requested domain or a RR does
not exist.
In these two lines the nameserver resource records for example.com are de-
fined.
2 The serial for example.com does not use this format.
9
IN NS ns.isi.edu.
IN NS venera.isi.edu.
The MX record will advertise which host(s) will accept mail for the domain.
The numbers 10 and 50 specify the priority for the mail exchange servers. The
mailserver with the highest priority (the lowest number) will be tried first, if
that server is unavailable the other server(s) are tried in descending priority.
IN MX 10 mail.example.com.
IN MX 50 mail-backup.example.com.
These lines specify some ’A’ resource records for different hosts. Further
information on the precise format of this file, and DNS in general can be found
in [2].
www.example.com. IN A 128.9.176.32
mail.example.com. IN A 128.9.176.32
mail-backup.example.com. IN A 128.10.176.32
10
authority carries RR’s which describe the authoritative servers.
additional carries RR’s which may be helpful in using the RR’s in the other
sections.
Using the dig commando shipped with BIND8, the different sections are clearly
visible:
; <<>> DiG 8.2 <<>> www.example.com
;; res options: init recurs defnam dnsrch
;; got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 4
;; flags: qr rd ra ad; QUERY: 1, ANSWER: 2, AUTHORITY: 3, ADDITIONAL: 1
;; QUERY SECTION:
;; www.example.com, type = A, class = IN
;; ANSWER SECTION:
www.example.com. 1W IN CNAME VENERA.ISI.EDU.
VENERA.ISI.EDU. 23h44m55s IN A 128.9.176.32
;; AUTHORITY SECTION:
ISI.EDU. 23h44m55s IN NS east.ISI.EDU.
ISI.EDU. 23h44m55s IN NS VENERA.ISI.EDU.
ISI.EDU. 23h44m55s IN NS ns.ISI.EDU.
;; ADDITIONAL SECTION:
east.ISI.EDU. 4d1h56m5s IN A 38.245.76.2
second [is] something like 6000 [. . . ] sustained, last I check[ed] (but that was a while ago)”.
11
issue. Currently there is a draft proposal which allows for larger UDP packets
in DNS.[27]
12
2.2.5 Apex
Apex is the top of a zone. It consists of the SOA record, with the nameserver
records and possibly also glue records. The child’s zone contains and is author-
itative over this information. Some parts, notably the NS records and possibly
some glue also reside in the parent’s zone. Together these form the apex.
2.3 Security
DNS has worked very well for more than fifteen years, and thus far there has
been only one big problem with DNS:5 it is vulnerable to false data. To use
DNS in a reasonable secure fashion, one should direct all the queries directly to
an authoritative nameserver, and thus not use the caching mechanism of DNS.
While this is a security win it will wreck havoc on the performance of DNS.6
With IP rerouting a malicious person could fake an authoritative nameserver
all together, something DNS can’t prevent at all (DNSSEC will prevent this
attack).
Most lacking in DNS security is that there is no mechanism in place to
check the validity of the information a nameserver or resolver receives. It all
boils down to the caching mechanism and the additional answer sections in
DNS: a nameserver will “believe” everything that is sent to it and it will also
cache this information for the duration of the TTL. This in combination with
the additional data section is enough to break DNS in a very trivial way. I
anticipate that this attack can be done by one person in couple of hours.
The additional data section holds extra data. The problem with this data is
that a resolver, or for that matter another nameserver, has no way of telling if the
data is to be trusted or not. It may seem strange that a resolver asks for the MX
record of example.com and also get an A record for SecureBank.example.com,
but it is perfectly legal.
To start an attack, the attacker must have its own DNS in place, say he
owns hack.example.com. The attacker sets the TTL value of hack.example.com
to a very low value. This will make sure that no data of hack.example.com is
cached and that queries for hack.example.com will be handled by the name-
server that is under the attacker’s control. Then he chooses an victim, Se-
cureBank.example.com. Next the attacker will forge an A record for Secure-
Bank.example.com and hack his nameserver to return this information in the
additional section. The information in the additional section will have a large
TTL so that it will be cached.
Now the attacker queries an important nameserver on the Internet for in-
formation on the hack.example.com zone. Since the TTL for the attackers zone
is very low, it is likely that this information is not cached. This means that
the request will be forwarded to the attacker’s nameserver. This in turn means
that the answer the nameserver returns will have the bogus additional section,
5 There are more problems, like the error prone configuration files and the lack of dynamic
updates.
6 These performance and scalability issues were the exact reasons for DNS in the first place.
13
and since that TTL is large it will be cached for some time. The attacker will
query the important nameserver every few seconds until the TTL of Secure-
Bank.example.com expires. At that moment his bogus data will be considered
valid and the IP address of SecureBank is changed.
To create some financial reward for all the work the attacker has put in, he
also recreates a part of the site of the bank, so unsuspecting visitors will happily
supply there deepest banking secrets to the fake site. With this information he
can go to the real site of the bank and rob peoples accounts. The attacker would
probably get away with this attack, it is even possible that nobody would even
know that such an attack is taking place, because nothing has stopped working.
The only thing SecureBank would notice is a slight decrease in traffic. If system
administrators search the log files to see if they can find something strange they
will find nothing, because there are no errors.
This major flaw in DNS is documented in [1]. This report has been kept
secret for almost five years, because of the huge impact it would have. This
attack is still possible on the Internet of today. Electronic banking and e-
commerce are very dangerous things to do on an Internet without DNSSEC.
14
(root key)root key
com net nl
(.nlnetlabs.nl key)
.nl key
atoom (.atoom.net key)
CA key
nlnetlabs
Secure Entry Point
www voordeur
Figure 3: A small part of the DNSSEC-tree. The (x)y notation denotes that
key x is signed by key y.
The DNS Security extensions introduces a number of new records. These include
signature (SIG) resource record defined to store signatures in the DNS. It
provides a cryptographical binding of records in a resource record set being
signed to the signer and a validity interval. The signature is created using
public key cryptography. If a server supports DNSSEC and is thus security
aware, it will attempt to return the relevant RR’s and the corresponding
SIG records in an answer to a query.
The SIG resource record contains information about the algorithm used,
validity interval, the signer name and the actual signature. The algorithm
field specifies the algorithm to be used. Currently RSA and DSA can be
used for creating signatures. A special value is reserved for being able to
use private algorithms locally. A value is also reserved for use with elliptic
curve cryptography. The signer name is the domain name of the signer
that generates the signature. The actual signature ensures the integrity
of both the RRset signed and the fields in the signature record.[16, 11]
KEY resource record used to store the public part of a private/public key-
pair. The key is associated with the DNS name. The owner of the key
can be a DNS zone, a user, a host or some other end entity. A resource
record with the same name and same type can be associated with several
key records. The key RR is authenticated by a SIG RR like other DNS
resource records. The key resource record contains the key, the algorithm
the key is to be used with, and a value indicating the protocols the key
is to be used with. In addition to the algorithms used by the SIG RR,
Diffie-Hellman keys can be stored in a key RR. The protocol field currently
makes it possible to bind the key for use with TLS, e-mail, DNSSEC and
IPSEC. A range of values are reserved for new protocols to be added in
the future. The protocol field can also indicate that the key can be used
with all of the protocols.[16, 11]
NXT resource record the purpose is to be able to provide data origin au-
15
thentication of a non-existent name or the non-existence of a certain re-
source record type for a DNS name. The owner of a NXT record is an
existing DNS name in the zone. The NXT resource record contains the
name of the next name in the zone, thus stating that there can be no
resource records between the owner name and the next name. To be able
to use the concept of a next name in the DNS implies that the records
in a zone have to be canonically ordered. The last NXT record in a zone
will contain the zone name, treating the name space as circular. At a
delegation point, there will be two NXT records for the same name, one
residing above the zone cut and one residing below the zone cut. As with
all records, the NXT records are authenticated by a SIG record.[16, 11]
CERT resource record used to store certificates in the DNS. The CERT re-
source record contains information about the algorithm used, the type of
the certificate and the actual certificate. In addition to the algorithms used
in KEY and SIG records, the algorithm field can indicate that the certifi-
cate is to be used with an algorithm unknown to DNSSEC. This makes it
possible to use the certificate with algorithms that are not standardized
for DNSSEC. The types of certificates currently defined are X.509, SPKI
and PGP certificates. One type is reserved to indicate a certificate format
defined by an absolute URI. This URI will contain documentation about
the format of the certificate. Type values are reserved for future IANA
assignment of new types of certificates. The certificate section contains
the actual certificate data represented in base 64. The section can also
include a certificate revocation list.
As the CERT record can contain a certificate, it is possible to to use DNS
for storage of public keys. It is intended that personal public keys should
be stored in the DNS using the CERT record, and not by using the KEY
record.[16, 18]
As with all the other RR in the DNS these records are also cached. To start
using DNSSEC one must create a public and private key pair. The private key
is used to sign ones zonefile e.g.. example.com. The public key is signed by the
parent (in this case .com) and that signed key is then inserted in the apex of
example.com. In this way the parent will tell the world that it trusts it’s child.
If DNS is completely replaced by DNSSEC, there will be a few keys that
every resolver knows, comparable with the knowledge of the IP addresses of
the root servers. the rootservers and will use that as a starting point. The
resolver in DNSSEC is preconfigured with one or more root keys. Those keys
cannot be delivered with DNSSEC, they must come with the resolver and the
administrator should check if the keys are genuine. A SIG RR contains a field
(see paragraph 3.3) with information on whose key was used to create the SIG.
That key is also signed by someone else, and so on and so on. A resolver must
follow this chain up to a known key that is preconfigured. When it reaches
this point it will declare all the signatures it found valid and the information is
authenticated. In other words: ”The resolver walks the chain of trust”.
16
3.2 Key RR’s in detail
This is how the key RR is defined:
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
+---------------------------------------------------------------+
| flags | protocol | algorithm |
+---------------------------------------------------------------+
| /
/ public key /
/ /
+---------------------------------------------------------------|
The RR itself is defined in figure 5. The different fields are defined as:
type covered to which RR belongs this SIG to
algorithm the same as the algorithm field in the key RR
labels how many labels has the owner name; these can be calculated from a
domain name by counting the number of dots + 1, so example.com has
two labels
17
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
+---------------------------------------------------------------+
| type covered | algorithm | labels |
+---------------------------------------------------------------+
| original TTL |
+---------------------------------------------------------------+
| signature expiration |
+---------------------------------------------------------------+
| signature inception |
+---------------------------------------------------------------+
| key tag | |
+-------------------------------+ signer’s name +
| /
+---------------------------------------------------------------/
/ /
/ signature /
/ /
+---------------------------------------------------------------+
original TTL when verifying a signature the original TTL must be known,
which was used at the signature’s creation time
signature expiration a signature has a lifetime extending from the inception
time to the expiration time. When the expiration time is reached the
signature is no longer valid.
signature inception start date of the validity of a signature
key tag there may be multiple keys that can be used to check if the signature
is valid, with this key tag one can select which one is to be used.
18
If a resolver trusts a TLD, by having that key preconfigured, that point in
the DNSSEC tree is called a secure entry point (see figure 3 on page 15). In the
ideal case there is only one secure entry point, the rootservers (“.”).
If a resolver finds a signature made with a key it doesn’t know, it will go up
the chain to look for a key it does know. The resolvers eventually finds a key it
trust or it doesn’t. In the first case the results can be validated, and either be
found secure or insecure, in the latter case the results are considered bad. To
prevent loops from occurring, BIND9 only allows subsequent keys from zones
above the current zone, thus a search for a non existing key will end at “.”. This
was also something that was not clear from the DNSSEC specification.
It is this extension of trust that makes DNSSEC work. The main prob-
lem that remains is establishing an initial form of trust. If DNSSEC is widely
employed on the Internet it promises a universal key distribution mechanism,
something a lot of people eagerly await.
19
the signature is OK the resolver is finished, if not, example.com is marked bad
and all records are dropped.
20
3.6.2 More administrator work
DNSSEC would increase the amount of attention paid to the DNS. Authenti-
cated data would “expire” from the DNS and would need to be re-validated
on a regular basis. Not only would this require more resources (CPU, disk and
bandwidth), but the registries and registrars would have a recurring relationship
rather than the present “register and forget”. This will require new operating
procedures.
All of these parties must communicate with each other. For DNSSEC it is
crucial that the parent signs the right key and can not be tricked to sign a key
21
for a fake zone. It must be noted that the registry only wants to talk to the
registrars. This helps to reduce the load on the registry.
Although the zone administrator plays an important role is DNS and thus in
DNSSEC it is important to see that this role is purely technical. A zone admin-
istrator does technical work and assumes no formal responsibility for that work.
In the two figures below the zone administrator sits under another party, this
means that the party above it is formally responsible for the zone administrator.
In the Netherlands the parties involved can be mapped as follows. The
domain-holder is someone who owns a business.7 The registrar is an Internet
provider(ISP, the zone-administrator works for the same provider and the reg-
istry is SIDN. This is the configuration shown below. The second figure is a
different configuration, in which the holder does its own DNS administration,
although it may have been outsourced.
zone
administrator
Figure 6: Communication between the parties. The registrar does some techni-
cal work for the domainholder.
zone
administrator
Figure 7: Communication between the parties. The holder takes care of the
zone administration.
22
4.1 Overlapping parties
There are some situations in which parties overlap or are the same entity. In
both configurations shown above this overlap is possible. In this four party
model there are 4 possibilities:
23
1 4
I want DNSSEC sign my key
signed key
make key
5
key
2 3 6
zone
administrator
3 4
sign my key sign my key
6 5
1 2
7
key
zone
administrator
24
Then the public key must be sent to the registry. Because the registry only
wants to deal with its registrars, this request has to go through the registrar.
Depending on the configuration in use (see figure 9 or 8) this communication
either goes through the holder or is direct.
25
A scheme must be easy to implement, fast, scalable and reasonable secure
against attacks. Because of the sheer number of zones a typical TLD has to
deal with the level of out of band communication between the parties must also
be kept as low as possible. In the ideal case all communication will take place
using existing DNS(SEC) messaging techniques.
If initial trust is established and the parties involved are confident that every-
thing went all right, those keys can be used for the further communication
between the two.
Level 0 this is scheme 1. This could be useful for a large part of the .com
domain.
Level 1 the registrar or registry does not want to use a plain text email based
authentication. The email will be signed with PGP. It still will be neces-
sary to establish a starting point for trust. The registrar or registry can
26
put their public key on a website or store it in one of the PKI servers
around the world. Assuming that a registrar wants to setup a secure com-
munication with a domain holder. The domain holder can get to the key
of the registrar. Now the registrar wants to have the public key of the
holder. If the holder also has a PGP key in a PKI server the registrar can
check if it trusts someone that signed the PGP key of the holder. Other-
wise the holder has to submit its PGP key to the registry and the registry
must then take another step to verify the key. What they can do is for
instance call the domain holder by telephone and verify the PGP key in
this way.
When those PGP keys are exchanged they have authenticated each other
and can proceed with the securing of the holder’s domain.
Two things must be noted with this level. For one, some PKI’s are not
as secure as we think, see [26]. And second, calling someone to verify its
key is very expensive. Consider a large TLD, with 1 million soon to be
secured delegations. If they all want to use level 1, this could mean 1
million phone calls. Each call will take up to 5 minutes (checking keys
is tedious), so this will amount to 5 million minutes (some 83 thousand
hours or 500 man months) of phone calls. This problem could maybe be
solved by using a call center.
Level 2 essentially the same scheme as in level 1. The verifying step now
consists of the domain holder actually coming by at the holder to identify
himself and to bind his PGP key to holder’s identity. If a TLD has a lot
of holders that want to be secured and want to use level 2, this scheme
is going to be impracticable. Imagine 1 million people coming by the
registrar to prove their identity.
4. the parent
27
• looks up the IP numbers of the authoritative nameservers of the child.
This done by checking the TLD (zone)database8 , not by using the
DNS, which can be spoofed.
• then does a zone transfer of the child’s zone, directly using the au-
thoritative nameservers.
• does a traceroute to the child’s zone.
5. Depending on whether there is a key in the transferred zone, the parent
either drops the request or signs the key and informs the tech-c and admin-
c (e.g. registrant and domainholder) of this step.
6. the parent puts the signature over the child’s key in its zonefile.
7. the parent signals the child that it is now secure.
becoming secure
INSECURE
child.parent.top parent.top
actions config config actions
notify parent
parent uses DNS
to get the key from
the child
− parent now has
the child’s key
− oob security check
(c.key) (c.key) − parent signs
c.key p.key
child’s key
− put sig in zonefile
SECURE
now in the possession of the public key belonging to child’s zone. The parent’s
public key should be widely known. With these public keys all all further
communication can be signed.
The nice thing about this scheme is that is utilizes the DNS in the most secure
manner to allow a smooth upgrade to DNSSEC. It is however still susceptible for
IP rerouting attacks, with DNS it is impossible to defend against such attacks,
but with the traceroute information gathered step 4, it may be possible to find
the attacker.
8 This same database is used to create the zonefile.
28
text Displays the relevant parts of the DNSSEC configuration
Notifies send
BIND9 currently doesn’t support this model. With BIND9 a key is signed
with itself and the resulting keyset (the key and the signature of that key) is
send to the registry. This extra step is taken to uphold integrity of the key that
is send to the registry.
6 Signing of zones
With DNSSEC zones need to be signed in order to create the SIG resource
records. Every zone in DNSSEC is signed with the private key belonging to
that zone. The KEY RR of a zone is not signed with the private key belonging
to that but with a private key belonging to somebody else. This could be the
parent zone or a completely different domain somewhere on the Internet, like
for instance verisign.com. This record is then stored in that ”higher” zone.
Every zone signs its own zonefile. If .com signs its zone, it doesn’t drops
down to also sign the zones it is delegating, .com cannot even access the child
zonefiles.
29
which it trusts. With on-tree signing it simply follows the DNS structure down-
wards until the right zone is reached, which then is validated or invalidated.
With off-tree signing the resolver cannot simple follow down the DNS tree, be-
cause that structure is bypassed when using off-tree signing. Thus it has no way
of telling if the domain it is resolving is using DNSSEC or not. Thus DNSSEC
seems to be impossible with zones that are signed off-tree. Some companies
think there is big business in off-tree signing.
Off-tree signing seems only possible if the zone that is using it is also is a
well known secure entry point. This would mean that if off-tree signing ever
gets popular quite a number of keys should be preconfigured at the resolvers.
But it is advisable to limit the number of keys that should be preconfigured at
the resolver level. If those keys aren’t in sync with the actual keys used on the
Internet entire TLD’s may be marked bad by the resolver and are discarded.
The .nl.nl test bed should not allow for third party signed zones under its
delegation.
30
6.4 Resigning a TLD
Resigning a zone is necessary before the current signatures expire. When all the
SIG records, produced by the TLD’s zone key are kept in the TLD’s zonefile,
and only there, such a resign session is trivial, as only one party (the TLD) and
one zonefile is involved.
Note, when SIG records are (also) included in child zonefiles, special pro-
cedures are needed to take care of properly and timely updating also these
zonefiles to prevent these children from being (temporarily) bad. As one can
see in figure 12 resigning a TLD using our scheme is rather trivial.
resigning
child.parent.top parent.top
actions config config actions
(c1.key) (c1.key)
c1.key p.key
resign
(c1.key) (c1.key)
c1.key p.key
the private key from the public using the encrypted data, thus it makes sense to use new keys
after some time.
10 This is a four-step procedure, which can easily be automated. This same procedure can
31
1. the TLD adds the new key to its keyset in its zonefile. This zone and
keyset are signed with the old zonekey. Then the TLD signals the parent
2. the root copies the new keyset, consisting of the new and the old key, in
its zonefile, resigns it and signals the TLD
3. the TLD removes the old key from its keyset, resigns its zone with the
new key, and signals the the root
4. The root copies the new keyset, now consisting of the new key only, and
resigns it
child.parent.top parent.top
actions config config actions
(c1.key) (c1.key)
− put new key in c1.key p.key
zone file
− sign zone with (c1.key, c2.key) (c1.key)
c1.key c1.key p.key
notify parent − collect new keyset
− check sig
(c1.key, c2.key) (c1.key, c2.key) − sign keyset
c1.key p.key
Note, when these SIGs, are (also) included in the children zonefiles, there
are three generations and thus many more parties and zonefiles involved. For
a large TLD this means many millions of parties and zonefiles. As now three
generations are involved, the synchronization requires at least seven steps. One
step involves waiting for all child-zones to update their zonefiles.
32
With the update of millions of zonefiles, and overnight out-of-band com-
munication and synchronization between three generations, doom-scenarios as
“reboot of the Internet”11 come to mind. The procedure from Andrews and
Eastlake is simply impossible in such an event. Figure 14 depicts the steps
needed in this event.
SECURE
child.parent.top parent.top
actions config config actions
(c.key) (c.key)
c.key p.key
child’s key is
compromised
INSECURE
time and then will be restarted again and that is something that is comparable with a reboot
of a PC.
33
Storing the parent’s SIG over the child’s key in the parent’s zonefile simplifies
the communication issues enormously. For a simple resigning, no communica-
tion is needed, for a key-rollover only two parties are involved. When this SIG
is (also) included in the child’s zonefile, simple resigning involves all children
and a key-rollover involves three generations.
We proposed this idea at the 49th IETF meeting in San Diego. The DNS-
EXT working group liked the idea but they pointed out that it violated one
of the base principles of DNS. All information about a zone must be found at
that zone, and that is not the case if the SIGs are stored at the parent. We
feel that DNSSEC is important enough to allow for this change, but it remains
to be seen if the IETF agrees. Keep in mind that the null key is stored in the
parent’s zone, although it defines the (in)security of a child zones. This is an
inconsistency in RFC 2535[11].
It must also be noted that a key rollover means that at one point in the
time the key must be replaced with a new key. At that moment those keys are
cached in nameservers around the world. If a nameserver has cached a key of
a zone and not the corresponding data there is a problem. If it retrieves the
data from the authoritative server that data is signed with the new key, but
that nameserver thinks it already has that key. This will mean that the data
does not have a valid signature and is discarded, marking the zone as bad. Until
the TTL of the key is expired this situation will exist. There is currently no
keyrollover scheme that can deal with this problem. It is expected that this
must be solved at the resolver level.
7 Scalability
7.1 Signing of large zones
At the beginning of 2000 there was very limited data on the duration of a zone
file signing session of large zones. Large TLD’s were very concerned that signing
of their zone would take an impractical amount of time (weeks or more).
We had access to the German zone file that consisted of about two million
domains. NLnet Labs had already demonstrated that it is was feasible to sign
the German (.de) zone file [13]. The largest zone in the DNS is the .com zone
which is administrated by the InterNIC. At first we could not get the actual
.com zone, because InterNIC was rather reluctant to just give us the .com zone,
so we decided to construct a very large zone ourselves, using the .de zone.
The hardware we used for these experiments consisted of a $ 5000 Alpha
DS10 from Compaq. The machine had a total of 20 GB of Memory (256 MB
RAM, the rest swap). The operating system was Linux (RedHat6.2 for Alpha).
34
7.1.1 German TLD zone
For the signing we used BIND9.0.0b5, the latest version of BIND9 available at
the time. We converted the .de zone to a delegation only zone. We also stripped
the comments in the file. After that the file consisted of a small header and for
every domain two nameservers, e.g.:
a--a NS enterprise.capcom
a--a NS ns.a--a
Because the .de zone was too small, we decided to make it 8 times as big. With
an (awk) script we created 7 files consisting of different domains all in .de zone.
$INCLUDE Kde.+003+38805.key
NS admii.arl.mil.
NS auth03.ns.de.uu.net.
NS auth61.ns.uu.net.
NS dns.denic
NS ns.ripe.net.
NS sunic.sunet.se.
NS dns.nic.xlink.net.
$INCLUDE 00de.
$INCLUDE a1de.
$INCLUDE b1de.
$INCLUDE c1de.
$INCLUDE d1de.
$INCLUDE e1de.
$INCLUDE f1de.
$INCLUDE g1de.
Every domain has two NS records, this would give us a total of 16, 242, 628
domains, more than the .com zone on the 9th august 2000 had.12 Next we
started the signing process with a 768 bit DSA key. After about 45 hours the
signing process was finished.The memory usage while signing the zone maxed
out around 9 GB.13
12 The .com zone is growing by one million new domains each month.
13 The writing of the signed zone file (de..signed) took about 9 hours. After which it took
another 11 hours for the process to die. We do not precisely know what the signer was doing
35
7.1.3 Extrapolating the results
From this experiment we can calculate the maximum number of domains in a
zone we can sign with DSA 768 keys on this machine. We needed 9 GB virtual
memory for 16 M domains. That is about 562.5 bytes of memory per domain.
We have a total of 20.256GB memory, so in theory the largest zone we could
9
sign would be: (20.256·10
562.5
)
= 36, 010, 667 This means we could do a delegation
only zone file consisting of over 36M domains. We could sign the .com zone
of 2001 on this hardware in a reasonable amount of time. When we made this
information public everybody was stunned, including the InterNIC. Two weeks
later we were in the possession of the real .com, .net, .org, .gov and the .in-
addr zones. A full description of this experiment can be found in [13] and a
description of the signing of .com in [15].
36
power would certainly speed up the process. The complete report of these tests
can be found in [14].
37
8 Implementing DNSSEC
8.1 Why BIND
When it comes to DNS there aren’t too many other packages available besides
BIND. Now with DNSSEC this is even more true than before, the alternative
DNS implementation that are available haven’t even began to implement the
DNSSEC protocol. Further more BIND9 code is open source and therefore
freely available with a zero price tag. BIND has proven itself for a long time
know and it likely to remain the standard DNS(SEC) software for some time to
come.
8.4 Design
The secure aware registry will be designed according to the following guidelines:
1. although it is not a standard, .nl.nl will go forward with the idea to place
the parent’s sig over the child’s key in the parent’s zone. The belief at
NLnet Labs is that this will make the administrative side of DNSSEC a
lot easier.
2. the secure registry must also be very similar to the standard .nl registry
(SIDN). This will mean that a lot of the same functionality must be im-
plemented.
3. the interface for registry will be based on (mail)forms that can be processed
automatically.
38
4. only domainholders with a domain under .nl can apply. See paragraph
8.5.1 on why this is a good idea.
It is expected that this registry should be finished in the second half of 2001.
There should also be a rudimentary version of a secure aware resolver by that
time. Together these form a very good proof of concept of RFC 2523 [11].
change data concerning a domain used to for instance change a typo in the
name of the holder. There are multiple forms to change different things
status of a request in the Netherlands not all domain names are allowed.
With this form one can check if the name is accepted or not
And with whois it is possible to check if a domain name is already taken or not.
The following extra steps are needed in DNSSEC, they are all related to
security and keys.
security request first step in getting secure. The steps in figure 10 are exe-
cuted.
new key request a child zone want to use a new key. See figure 13.
new signature request in our setup the parent (the registry) decides when
and if a child gets a new signature.
The .nl.nl registry must at least implement the above requests and forms, with
a possible exception for a status form, as only .nl names can be made secure.
39
8.5.1 Problems encountered
The choice for .nl.nl as a test bed gave some unusual problems. When we had
.nl.nl running at one of our servers we immediately began seeing queries for
domains in the .nl.nl zone. This is strange because there were no domains yet
in the .nl.nl zone. After further investigating we came to the conclusion that
there were some nameserver who just appended .nl to all the zones they were
trying to resolve and thus were delegated to our server.
As long as .nl.nl doesn’t actually delegate zones it will give a NXDOMAIN
back on all those queries. The resolvers would then try it again, but without
the extra .nl. To test how much of a problem this could get, we made a wildcard
delegation for *.nl.nl and got a website running on www.nl.nl, or in DNS speak:
*.nl.nl. IN CNAME www.nl.nl.
In a matter of hours we had approximately 150,000 hits on our website
and people began to email us why they couldn’t use the Internet.15 We’ve
shut down the website and deleted the wildcard delegation for .nl.nl that same
evening. Although the TTL for .nl.nl was very low (2 hours) some people were
still experiencing problems three days after the experiment. It seems that our
web page was cached somewhere on an important proxy server and when people
requested a page on the Internet this request was processed by this proxy and
it then served up our page.
To prevent this from happening again when .nl.nl is delegating domains it
is important that the delegation points to the same nameservers as the corre-
sponding .nl zone does. In other words .nl.nl must be an exact mirror of .nl.
This gives another advantage when .nl.nl is as big as .nl – at this point the
whole .nl is securely mirrored in .nl.nl – we only have to strip a .nl of all the
names and the entire secure tree is copied over to .nl making the .nl tree of the
Netherlands instantly secure.
40
these contracts must of course exist. It is important to see that although it looks
like the parent zone gets more control over a child zone, this is not the case.
Consider a bad delegation of the parent in the current DNS. This will mean that
a child zone is not reachable on the Internet. With DNSSEC there are more
possibilities to create this situation but that doesn’t mean a parent has more
power over a child zone. If there is a parent screw up in DNSSEC the worst
thing that can happen is that the child becomes bad and drops of the Internet.
Thus there is no difference in the parent’s power over the child between DNS
and DNSSEC. It is however a lot easier to create a bad zone in DNSSEC (just
wait for the signature to expire) than it is to create a lame delegation in DNS
(there must be made a change somewhere).
9 Conclusions
When I started this master thesis it was expected that only administrative issues
stood in the way of a widespread deployment of DNSSEC. Now with a lot of
(political) developments in the DNSSEC community, like a possible complete
rewrite of RFC 2535, the deployment could be moved back a further 14 months.
As this master thesis provides a number of possible solutions for the problems
of DNSSEC, this does not have to be the case.
With DNSSEC the size of zone files will increase dramatically, but this will
pose not much of a problem. The .com registry has already shown the rest of
the world how to handle big zones.
To use DNSSEC, zones need to be signed. It was thought this would not
be possible for big zones, like .com, .de or even .nl. We have shown that even
zones as big as .com can be signed. For .com this took 50 hours. This was done
on a single machine with only one (64 bit) CPU. It is expected that with bigger
hardware this time can come down to a level on which the .com zone can be
signed twice a day.
One of the biggest problems with DNSSEC is how to manage all the keys and
signatures it requires. This is actually a very old problem (PGP also creates such
a problem), but now with DNSSEC really it needs to be solved. The procedures
presented in this master thesis provide a possible solution. Also, signatures for
zones must be recreated on a regular basis, every month an update is normal
in DNSSEC. This will require a lot of extra communication between a parent
and a child zone. If the signature the parent creates over the child’s key is
41
stored in the parent’s zone file, this communication can be minimized. This
will break a basic DNS assumption that all the data of a zone must be located
in the authoritative nameservers of that zone. It could be possible to make an
exception for this case. It is however up to the DNS/DNSSEC community to
decide what they want. It must be noted, that this master thesis clearly states
that right now – with the parent’s sig over child’s key at the child’s zone –
DNSSEC will be very difficult, if not impossible, to administer when dealing
with large zones.
With the problems found in DNSSEC and the solutions given in this master
thesis, NLnet Labs has decided to begin writing a secure aware resolver for use
in DNSSEC, something that is still lacking right now. Without this resolver
DNSSEC is only half finished. This resolver will take into account that the
parent’s sig (over the child’s key) is stored in the parent’s zone. My future work
at NLnet Labs will consist of building the first secure aware registry. When
these two project are successfully completed .nl.nl will be the first (big) secure
domain in the world and completely comply with RFC 2535 and a resolver which
end users can use. It is expected that this work will take 6 months. This will
mean that DNSSEC could be deployed in the Netherlands in the second half of
2001. That is 12 months earlier than anticipated by the DNSEXT work group
of the IETF.
Acknowledgments
First and foremost, I’d like to thank my supervisors of this master thesis project:
Ted Lindgreen of NLnet Labs in Amsterdam and Bart Jacobs of the University
of Nijmegen. Other people that gave valuable input are Roy Arends, Jaap
Akkerhuis, Marcos Sanz and Olaf Kolkman.
I would also like to thank Leo Willems of Tunix how gave me the opportunity
to get this master thesis assignment at NLnet Labs and Caspar Terheggen for
giving me some extra insight in DNSSEC.
During the making of this master thesis I’ve had the opportunity to go to
Sweden, to attend a DNSSEC workshop. I’ve met a lot of people there and it
was very interesting to see how the development and deployment of something
like DNSSEC is setup. Thanks to NLnet Labs I’ve also been to an IETF meeting
in San Diego, which was also great.
I will stay involved with the development of DNSSEC and will continue to
work for NLnet Labs for at least one year. In that time I will also try to finish
my study computer science in Nijmegen.
42
10 List of Acronyms
acronym description, (first occurrence)
References
[1] Steven M. Bellovin. Using the Domain Name System for System Break-
ins.
AT&T Bell Laboratories, 1995
[2] Paul Albitz and Cricket Liu. DNS and BIND.
O’Reilly & Associates, Sebastopol,1992
[3] Craig Partridge Mail routing and the domain system.
Request for Comments 974, Internet Engineering Task Force, January
1986.
[4] Paul Vixie. A Paper regarding DNS and BIND Security Issues
Originally published in the proceedings of the 5th Usenix Security
43
Symposium,
http://www.usenix.org/publications/library/proceedings/security95/full papers/vixie.txt
[5] M. Lottor. Domain administrators operations guide.
Request for Comments 1033, Internet Engineering Task Force, Novem-
ber 1987.
[6] P. Mockapetris. Domain names – concepts and facilities.
Request for Comments 1034, Internet Engineering Task Force, Novem-
ber 1987. Obsoletes RFC0973; Updated by RFC1101
[7] P. Mockapetris. Domain names – implementation and specification.
Request for Comments 1035, Internet Engineering Task Force, Novem-
ber 1987. Obsoletes RFC0973; Updated by RFC1348
[8] (Dutch) Anne-Wil Duthler. Met recht een TTP.
Kluwer, Deventer, 1998
[9] M. Andrews. Negative Caching of DNS Queries (DNS NCACHE).
Request for Comments 2308, Internet Engineering Task Force, March
1998. Updates RFC1034 and RFC1035
[10] Y. Rekhter, B. Moskowitz, D. Karrenberg & G. de Groot Address
Allocation for Private Internets.
Request for Comments 1597, Internet Engineering Task Force, March
1994.
[11] D. Eastlake Domain Name System Security Extensions.
Request for Comments 2535, Internet Engineering Task Force, March
1999. Obsoletes RFC2065; Updates RFC2181, RFC1035, RFC1034
[12] R. Elz & R. Bush Clarifications to the DNS Specification.
Request for Comments 2181, Internet Engineering Task Force, July
1997. Updates RFC1034, RFC1035, RFC1123
[13] R. Arends Signing the German TLD zone.
July 2000. http://www.nlnetlabs.nl/dnssec/de-signing.txt
[14] R. Gieben Signing of really big zones.
September 2000. http://www.nlnetlabs.nl/dnssec/bigzones.html
[15] R. Gieben Signing of .com.
October 2000. http://www.nlnetlabs.nl/dnssec/sign.com.html
[16] B. Sahlin New challenges to the Domain Name System: extension for
security, dynamic updates and IPv6.
November 1999. http://www.tml.hut.fi/˜bos/dns.html
[17] A. Romao Tools for DNS debugging
Request for Comments 1713, FYI 27, November 1994
44
[18] O. Gudmundsson Storing Certificates in the Domain Name System
(DNS)
Request for Comments 2538, Internet Engineering Task Force, March
1999
[19] B. Schneier Applied Cryptography: Protocols, Algorithms, and Source
Code in C.
John Wiley & Sons, 1995
[20] (Dutch) J. Akkerhuis Status van Internationale domeinnamen.
September 2000. http://www.nlnetlabs.nl/idn/index.html
[21] R. Needham and M. Schroeder Using Encryption for Authentication
in Large Networks of Computers
1978. Communications of the ACM, 21, pp.393-399
[22] Man & Mice Domain Health Survey
August 2000. http://www.menandmice.com/infobase/mennmys/vefsidur.nsf/index/6.1.2000.8
45