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


To: dnssec@cafax.se
From: Miek Gieben <miekg@nlnetlabs.nl>
Date: Thu, 28 Jun 2001 16:04:13 +0200
Content-Disposition: inline
Sender: owner-dnssec@cafax.se
User-Agent: Mutt/1.2.5i
User-Agent: Mutt/Linux
Subject: ttl problems in DNSSEC

Hi,

After a little get together a RIPE, we have the following question:

Notation is used as specified in draft-resolver-rollover-dnsopt-ietf-00.txt
(will probably be on ietf.org today, K++1 means key with key-id 1,
S++1(A) means the sig with K++1 over record set A)

In rfc2335, section 3.5 it states that KEY should be included in the
additional section. So they won't always be there.

Consider a local nameserver on a LAN. The LAN is connected to the
outside by two caching forwarders on a DMZ, both do DNSSEC and cache,
but are of different implementation.  The forwarders do loadsharing.
And suppose there is a zone on the Net with the following content:
(the numbers indicate the TTL's)

        A       10
        S++1(A) 10
        K++1    20

The local nameserver on the LAN makes a query for the A record of the
zone. This query is handled by DMZ1, after this query the caches are
as follows:

local           DMZ1            DMZ2
A       10      A       10      <empty>
S++1(A) 10      S++1(A) 10
K++1    20      K++1    20

After 11 seconds the zone on the Net decides to use a new key (K++2)
for their zone:
        A       10
        S++2(A) 10
        K++2    20

The caches on the LAN will drop the RR with the TTL of 10:
local           DMZ1            DMZ2
K++1    20      K++1    20      <empty>

Next there is a new query to the local nameserver for the A record,
this request is handled by DMZ2! This time the KEY isn't included in
the respons (this DMZ2 does not implement the SHOULD). So the local
nameserver doesn't get the new key (K++2).

So the caches become:
local           DMZ1            DMZ2
K++1    20      K++1    20      A       10
S++2(A) 10                      S++2(A) 10
A       10                      K++2    20

Now the local nameserver tries to verify the S++2(A) with the K++1,
which will not work, thus A is considered BAD. 

What to do about this? Make the SHOULD a MUST in rfc2535? Or discard a
KEY whenever you discard the SIG made with that KEY?

regards,
Miek Gieben
Olaf Kolkman
Stephan Jager

Home | Date list | Subject list