At 9:42 -0700 4/24/09, Paul Hoffman wrote:
a) KSKs longer than ZSKs because KSKs are thought of as needing to be stronger
b) KSKs the same strength as ZSKs because neither should be weak
enough to be attacked
I prefer (b), but (a) keeps coming up in this discussion.
The reason (a) is held as conventional wisdom by some set of folks...
In the beginning we had keys. In the early workshops we realized
that there were two kinds of delegations where keys mattered.
Delegations we made to ourselves and delegations made to us from
someone else. (In the workshops the leader was the DNS parent to all
of the participants' child zones.)
We realized when we tried to do key rolls (because we knew that keys
wore out) that it was much easier to change keys when it was us
delegating to our self than when we had to run down the instructor
(who was generally looking at a bug rooted in the specification,
code, or configuration).
Stirring this around in the primordial soup, the ZSK and KSK was
born. (Eliding the rationale.) And along the way the SEP flag was
born.
In modern times this has translated into this issue. When it comes
time to design our ZSK roll, we realize all of the steps involve
internal matters. Running a key generation task first. Moving the
private key files around is the next task. Removing the old key is
the last step. We can predict the time it takes to do all of the
steps, we can do all this unannounced, when can even target all the
normal ops to be started via cron.
When it comes to a KSK, we have to involve an external entity. When
it comes to planning and writing the tasks, we (at this time) have no
idea of the interface our parent will use (if they ever do sign) and
what the response time will be - will if be < 5 minutes or > 5 days?
As architect, I really don't care if the KSK is longer than the ZSK,
I don't care if the KSK is stronger than the ZSK. What matters is
that I just have to roll the KSK much less and have it be a less
important operation in my activities. I can be more specific about
ZSK life cycle, it's the KSK life cycle that has a huge unknown (the
relationship with the parent).
As someone who has been developing DNSSEC I certainly understand (b).
There was a time the KEY RR had a signatory field which was thought
to be a reflection of strength - RFC 2065, section 3.3:
Bits 12-15 are the "signatory" field. If non-zero, they
indicate that the key can validly sign RRs or updates of the same
name. If the owner name is a wildcard, then RRs or updates with any
name which is in the wildcard's scope can be signed. Fifteen
different non-zero values are possible for this field and any
differences in their meaning are reserved for definition in
connection with DNS dynamic update or other new DNS commands. Zone
keys always have authority to sign any RRs in the zone regardless of
the value of this field. The signatory field, like all other aspects
of the KEY RR, is only effective if the KEY RR is appropriately
signed by a SIG RR.
We realized overtime that all keys are equal when it comes to
strength because the validation chain caused "fate sharing." I.e.,
if the zone above you has a 512 bit key, your 1024 and 2048 kit keys
aren't all that "valuable" if you are optimizing for
crypto-mathematical wizardry. I.e., KSKs are no more special than
ZSKs in the validation chain.
The conventional wisdom to make the KSK longer is that we just want
to avoid frequently having to bug our parent. It wasn't rooted in
thinking the KSK is any more special cryptographically.
--
-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
Edward Lewis
NeuStar You can leave a voice message at +1-571-434-5468
Getting everything you want is easy if you don't want much.
_______________________________________________
DNSOP mailing list
[email protected]
https://www.ietf.org/mailman/listinfo/dnsop