[dns-operations] Perils of Transitive Trust, followup.

Roy Arends roy at dnss.ec
Thu May 4 21:52:19 UTC 2006


On May 4, 2006, at 1:02 PM, Emin Gun Sirer wrote:

> Hi everyone,
>
> Our survey of DNS vulnerabilities was recently discussed on this
> mailing list. Having read through the comments, we noticed some
> confusion about some of the findings, and a dangerous myth that glue
> records can fix/patch over problems inherent in the DNS delegation
> graph.
>
> The goal of this message is to pop the "security-through-glue" myth,
> and clarify some of the other issues that came up during the recent
> discussion.


>> Your CoDoNS system proposes to use a peer-to-peer distributed hash
>> table (DHT) to serve DNS. Why would a DHT make sense for serving DNS?
>
> DNS is already a large distributed hash table, albeit with poor
> failure resilience,

Define poor failure resilience.

Don't classify implementation bugs under poor failure resilience.  
Implementation is not protocol. i.e. some implementations behave  
'better' then others.

If my local DHT node fails (the one with mass replication, serving  
hashes and capable of lookups and storing info), I lose both local  
names (since the local names might not been stored locally) and  
global names. Others might loose their names since the local node  
might be responsible for some part of the hash space.

Given that there are currently around 90 million names registered at  
various registries, one need to replicate that in the DHT  
infrastructure. A single name is probably stored at multiple nodes to  
avoid spof. Some DNS/DHT protocols recommend 6 nodes for a single  
name: 540M entries. They need to be distributed over N nodes. N is  
variable (ring can grow dynamically), but in general chosen to  
satisfy load and memory requirements. The larger N is, the more  
transactions needed to satisfy a request, the higher the latency.  
Some DHT systems solve this by caching request/response pairs that  
flow through the node (i.e. massive replication), or store copies at  
the closest nodes only.

There is an analogy. The replication happens in DNS as well, caching.

There is one point I'd like to stress. In DHT systems, there is a  
seperation between authority and service. The node serving a name (a  
key value, essentially a hash of a name) provides the service  
independent of its ownership of the original name. So how is  
authority proven in DHT, (i.e. I still would like to make sure not  
everyone is capable of a succesful put(hash(dnss.ec,A),address). The  
answer is something that is equivalent to DNSSEC, or maybe DNSSEC  
itself.

> slow lookup performance,

Note that DHT has a lookup algorithm as well, with its own scaling  
factors. This performance is enhanced by massive replication, the  
same trick DNS uses. Lookup performance is not a feature of DHT in  
general.

> and no support for
> unplanned record updates.

There is dynamic update. It can be used to grow of shrink the set of  
servers responsible for serving a zone. The added server needs to be  
provisioned as well in order for it not to be dangling. There is  
trickery that can do this, though outside the DNS protocol.

> Maintaining a secure namespace requires
> substantial manual effort.

These can be automated, but yes, this requires intervention. DHT does  
not suffer from this, i.e. put(key,value) is essentially location  
agnostic. But authority still needs to be dealt with.

> Administering DNS is not only difficult and expensive, but manual  
> administration can lead to inconsistencies and
> errors.

Yes. again, authority still needs to be dealt with. Whatever the  
solution for that might be, it is going to come at a price. The  
argument that such a thing can be automated holds for DNS as well.

> These are not surprising, given that DNS was designed over 25
> years ago when we did not know much about building failure-resilient,
> high performance, self-organizing distributed systems. We now know how
> to do better, and the time is ripe for rethinking the architecture of
> the naming system.

I am not convinced.

All the so called features that DHT has over DNS can be accomplished  
in DNS as well. It is even possible to map the entire DHT  
functionality to DNS (DHT over DNS).

> Looking forward to a more secure name system,

If you're interested in a more secure name system, you need to  
abstract protocol from implementation. Service from authority, etc. I  
don't want to handwave the glue issue that your survey has brought to  
light. That was interesting, but that is not an unsolvable issue  
(i.e. this can be fixed by using in-bailiwick glue, despite your  
concerns about the understanding that operational folk might or might  
not have about dependencies, or dispite your nice FAQ style list  
about what the operational folk need to know about gluelessness).

AFAIK there is a draft in the making that clarifies the term glue and  
highlights issues concerning glue. Some recommendation might come out  
of that too.

Maybe we should get rid of out-of-bailiwick glue. Maybe we should  
require (NS-BIS) that the NSDNAME is in-bailiwick. I dunno. What I'd  
like to see is a repetition of your survey, and see graph-depth and  
width measured. In other words, calculate all possible paths to a  
name, and calculate what percentage of the set of paths has issues.  
That is far more interesting than claiming that if a single node in a  
single path is vulnerable, the entire name is vulnerable.

Roy



More information about the dns-operations mailing list