[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]


To: Edward Lewis <lewis@tislabs.com>, dnsop@cafax.se
Cc: lewis@tislabs.com
From: Harald Tveit Alvestrand <Harald@Alvestrand.no>
Date: Wed, 12 Apr 2000 23:06:17 +0200
In-Reply-To: <v03130311b51a3bc1c2d1@[10.33.10.14]>
Sender: owner-dnsop@cafax.se
Subject: Re: Off-tree validation

At 13:13 12.04.2000 -0400, Edward Lewis wrote:
>The reason I ask is that off-tree validation appears to be hard to secure.
>Assuming a resolver will trust a chain of keys up to a trusted root,
>imagine what would happen in the above example if certifier maliciously
>copies the labs zone, replaces the true apex KEY set and signs the false
>set itself.  The zone has been "zone jacked" and certifier can do with it
>what it wants.

Apex replacement wouldn't work.

[boring lecture - anyone who has read Scneider can skip this]

In any signature-based system, there has to be a key that the verifier 
trusts unconditionally (in PGP it's the user's own key; in hierarchical 
DNSSEC and the late unlamented PEM it is a worldwide "root" key; in 
Internet Explorer, Microsoft has taken the trouble to trust about 107 
different keys on your behalf. Check Tools/Internet 
Options/Content/Certificates/Trusted Root Certification Authorities for the 
list if you don't believe me).

If you can compromise that key, or get the resolver to trust an 
untrustworthy key, you can get him to believe anything.

Off-tree validation is important because it allows a set of cooperating 
zones to be *more* secure (more expensive to attack) than their parent 
zones (or the root key). But it doesn't help anyone outside that set.

The difficulty with off-tree signing (or any nonhierarchical signing 
method) is that you replace a tree-shaped graph of signatures and keys with 
a general graph; finding a path from the record you want to check to a key 
you trust in a general graph the size of the DNS is not particularly quick.

[back to topic]

the attack that works against off-tree validation is this, I think:

          APEX
      /        \
   zoneA     zoneB
     |         |    \
     |         |     \
   zoneAA    zoneBB   zoneAA
    (real)    (real)   (fake)

where all the lines are "parent has signed child's key", but the names
don't have to match up.

The problem is that KEY records don't include enough policy info; a SIG
says "I think this is a valid key", not "I think this is a valid key for
signing zoneBB, but not for signing zoneAA".

So if you want secure off-tree validation, you'd better trust the first key,
or have information not available in the current DNS specs.

Sounds right?

                      Harald

--
Harald Tveit Alvestrand, EDB Maxware, Norway
Harald.Alvestrand@edb.maxware.no


Home | Date list | Subject list