Hello,

Presently experimenting with key-rollover scenario's (and timing)
and it seems that both drafts should be somewhat more specific about
which TTL (Mekking), whose (which RRset's) expiration time (Morris),
is actually meant !


To make a long story short :
ZSK rollover timing must take into account max TTL of any *other* then
DNSKEY RRset
in the zone.  Details below, example at the end of this email.


ZSK double-sign rollover :
Step 1 : new ZSK, RRSIG's generated with new ZSK added simultaneously to
the zone
Step 2 : old ZSK, RRSIG's generated with old ZSK removed simultaneously
from the zone

The timing between both steps needs to take TTL into account,
as both drafts indicate :
Quoting from draft Mekking :
>>>
  The information for Ks must be published long enough to ensure that
  the information have reached all validators that may have RRsets from
  this zone cached.  At the point in time that the DNSKEY RRset
  including Ks has been propagated and Ks is said to be Known (Tkno).
 ---
  At the point in time that the other RRsets including signatures of Ks
  have been propagated (Tsaf), Ks is said to be Safe.
<<<
Before the "---" (I added) the text refers to the DNSKEY RRset (and its
TTL).
The last line, implicitly refers to TTL of RRSIG's (generated with the new
key),
and that TTL is actually the TTL of the RRset it signs - *not* the TTL of
the DNSKEY !

Quoting from draft Morris :
<<<
TTLsig    Time to live of an RRSIG record.
>>>
TTLsig is used in calculating minimum delay,
but to avoid misunderstanding (I misunderstood, but practice thought me
differently)
it could be clarified that the TTL of an RRSIG is actually the TTL of the
RRset it signs.


While the draft of M. Mekking tries to bring more details
in the timelines, some wrong impression can be given.
Extract from the timeline for double-sign :
>>>
   Ks       |    |       |    |       |
   - RRSIG  |    |DcacheZ|----|-------|---
   - DNSKEY |    |DcacheK|----|-------|---
            |    |       |    |       |
            Tgen Tpub    Tkno
                 Tact    Tsaf
<<<
DcacheK includes, in its definition, the TTL of the DNSKEY RRset;
and DcacheZ includes the "TTL" (no further specification).
But the timeline can be misleading by suggesting they are identical,
which they need not be !
Unfortunately including this detail will make the timeline even
more complicated (- sorry, Matthijs, but in the end the effort
should be worthwhile, if people avoid mistakes.  Good job !)


As I misinterpreted myself, I stumbled over the scenario with
longer TTLs for eg SOA record (eg 1 week), then for DNSKEY RRset (eg 1
day).
Event 1 : before the start of zsk rollover
   A caching name server fetches SOA
   --> in the cache : SOA + RRSIG with TTL of 1 week
                      (old) DNSKEY + RRSIG with TTL of 1 day
Event 2 : ZSK rollover completed in 3 days
   --> after the rollover, the old ZSK is no longer published
   --> in the cache : SOA + RRSIG with TTL of 1 week - time needed for
this rollover
                      ((old) DNSKEY + its RRSIG have expired from cache)

   Now a validating *forwarding* name server addresses this cache
   --> it receives : (cached) SOA + (old) RRSIG (no need to refresh, not
expired)
                     (fresh) (new) ZSK
       and *fails* to validate correctly.

Incidentally, the validating caching name server with only
the SOA and the (old) RRSIG in its cache,
still returns answers with AD set
(though it also can no longer fetch the old ZSK for validation).
In my setup, that name server is Bind 9.7.
 I assume the result of correct validation is also cached.
 Seems OK to me, don't known if this is RFC prescribed or implementation.


Kind regards,



Marc Lampo
Security Officer
 
    EURid
    Woluwelaan 150    
    1831 Diegem - Belgium
    [email protected]
    http://www.eurid.eu
   


Want a .eu web address in your own language? Find out how so you don’t
miss out!

_______________________________________________
DNSOP mailing list
[email protected]
https://www.ietf.org/mailman/listinfo/dnsop

Reply via email to