Hi Steve,
some internal discussion reminded me that I forgot to answer to this
topic.
When we implemented RFC 7344 and RFC 8078 back in 2017 we intentionally
omitted this kind of checks that are mentioned in RFC. The reason was
that we wanted to have consistency between channels for accepting
DNSKEY records in the registry. If DNSKEY is submitted via EPP we don't
prevent to publish DS that breaks DNSSEC chain. There may be valid
reasons to do so (tests, DNSSEC failure checkers, etc...) When DNSKEY
is updated via other channel (CDNSKEY) we valued more the consistency
with EPP.
I agree that from another point of view it may be considers as bug and
we will evaluate possibilities how to add some kind of checks as Libor
mentioned.
At the same time, I also think that both RFCs (as title suggest) are
meant for synchronization of DNSKEY with parent and DNS operator should
not abuse this intention.
Based on stats from our registry, it is not uncommon that DNS operators
are using keys with flag 256 as KSKs so preventing to accept such keys
via CDNSKEY would probably break updates for other users.
Regards,
Jaromir
On Tue, 2024-06-11 at 09:23 +0000, Libor Peltan wrote:
Hi Steve, all,
this topic has been also discussed on the multi-signer mailing-list
and OARC Mattermost. As a reminder, the situation is that DS is being
updated (at an already secured delegation point) as a result of
detecting novel CDNSKEY. What I think after those discussions:
1) FRED should not actually care about the Flags field in CDNSKEY
(nor in corresponding DNSKEY). Processing CDNSKEY with Flags 256
(i.e. SEP bit cleared) seems OK. I suspect that your assumption, that
256-flagged CDNSKEY would be ignored, was incorrect.
2) According to RFC 7344, Section 4.1, Bullet "Continuity", FRED
should (it is actually a MUST) check the delegation, if it works with
updated DS. The RFC is pretty vague about the details here. I suspect
that FRED is missing some (or any) such checks and this can be
considered a bug in FRED. There are some viable options what FRED
could check, depending on available codebase (and therefore ease of
implementation):
2a) perform an interative validation of the cild zone's DNSKEY with
the new DS-to-be installed as a trust anchor (this might be easy if
there is an iterative DNSSEC validation tool already part of FRED)
2b) the same as 2a) but validate the child zone's SOA (this might
avoid updating DS when the child zone is wrongly signed itself, dunno
if better or worse)
2c) only check that the DNSKEY corresponding to the DS-to-be is used
to sign DNSKEY in the child zone (this could be easier to implement
as a single-RR validator is only needed, which is already probably
part of FRED due to necessary CDNSKEY-RRSIG validation...)
2d) only check by keytag that the DNSKEY corresponding to the DS-to-
be is used to sign DNSKEY in the child zone (this is the easiest way
possible, only compute the keytag of the accepted CDNSKEY and search
for it in the child's DNSKEY-RRSIG)
(All those options would need to be elaborated, e.g. for the case of
multiple CDNSKEYs (and DSs)....)
Any of those possible bugfixes would prevent what you observed --
accepting a ZSK as an entry point for DS. Note that DNSKEY/CDSNKEY
flags don't play any role here. Nevertheless, the idea of re-
purposing apex CDNSKEYs is IMHO not good.
Libor
_______________________________________________
fred-users mailing list -- fred-users(a)lists.nic.cz
To unsubscribe send an email to fred-users-leave(a)lists.nic.cz