Subject: [DNSOP] 2nd Working Group Last Call for: draft-ietf-dnsop-kskroll-sentinel

From: Benno Overeinder <[email-masked]>
Date: Fri, 22 Jun 2018 17:04:15 +0200

After the WG last call for the kskroll-sentinel draft, a number of
issues were discussed and settled.  The co-chairs want to announce a
second WG last call of *one* week.  We think the document is ready, but
we want to give the working group the opportunity for a final reading.

This starts a Working Group Last Call for draft-ietf-dnsop-kskroll-sentinel

Current versions of the draft is available here:
https://datatracker.ietf.org/doc/draft-ietf-dnsop-kskroll-sentinel/

The Current Intended Status of this document is: Proposed Standard

Please review the draft and offer relevant comments.
If this does not seem appropriate please speak out.
If someone feels the document is *not* ready for publication, please
speak out with your reasons.

This starts a *one* week Working Group Last Call process, and ends on:
23:59 29 June 2018.

Thanks,

-- Benno

---

From: Joe Abley <[email-masked]>
Date: Fri, 22 Jun 2018 12:19:38 -0400

Hi Benno,

> This starts a *one* week Working Group Last Call process, and ends on:

Which timezone? Seems odd to specify a timestamp with minute-accuracy without specifying the hour :-)

=== General

I have read draft-ietf-dnsop-kskroll-sentinel-14. In my opinion it is ready to proceed.

I have some small nits that someone might care about, and if they don't care about them I will not be offended, even if they roll their eyes. I think at least some of them make the document clearer, though, and perhaps aren't very contentious. None of them take issue with the specification itself, just its description.

=== Section 1, Introduction

DNS, RR and KSK are used as acronyms without being expanded on first use.

The first paragraph refers to "a formula similar to a ones-complement checksum" in reference to Appendix B of RFC 4034. In fact that document specifies two algorithms for computing key tags, one for the old RSA/MD5 algorithm 1 and one for all others. "Ones-complement" is properly "ones' complement". This document uses "formula" to describe what 4034 describes as an algorithm. DNSKEY RRs don't validate signatures. These are ridiculously pedantic points (for the sake of brevity I will avoid mentioning that again, but you can assume it if it's not obvious).

OLD:

The Key Tag is a 16-bit value computed from the RDATA portion of a DNSKEY RR using a formula found in "Key Tag Calculation" (Appendix B of "Resource Records for the DNS Security Extensions" [RFC 4034]), a formula similar to a ones-complement checksum. RRSIG RRs contain a Key Tag field whose value is equal to the Key Tag of the DNSKEY RR that validates the signature.

NEW:

The Key Tag is a 16-bit value computed from the RDATA of a DNSKEY RR as described in Appendix B of RFC 4034. RRSIG RRs contain a Key Tag field whose value is equal to the Key Tag of the DNSKEY RR that was used to generate the corresponding signature.

A little further in the same section: I don't think mechanisms meet use-cases, but rather satisfy their requirements. I think normative language for the configuration commentary could make the sentiment clearer. I think actually that it would be better for the advice about configuration defaults to be moved to section 2, since an implementer might reasonably skip over the introduction and miss it.

OLD:

The mechanism described in this document meets both of these use cases. This new mechanism is OPTIONAL to implement and use, although for reasons of supporting broad-based measurement techniques, it is strongly preferred that configurations of DNSSEC-validating resolvers enabled this mechanism by default, allowing for local configuration directives to disable this mechanism if desired.

NEW:

The mechanism described in this document satisfy the requirements of both these use-cases. This mechanism is OPTIONAL to implement and use. If implemented, this mechanism SHOULD be enabled by default to facilitate Internet-wide measurement. Configuration options MAY be provided to disable the mechanism for reasons of local policy.

In the final paragraph, I think speculating on the utility of this mechanism vs. RFC 8145 is unnecessary. Note that I don't disagree with the sentiment, I just don't think it's relevant or useful as commentary.

OLD:

Note that the sentinel mechanism described here measures a very different (and likely more useful) metric than [RFC8145].

NEW:

Note that the measurements facilitated by the mechanism described in this document are different from those of [RFC8145].

=== Section 2, Sentinel Mechanism in Resolvers

I wonder whether it's worth being explicit about labels in QNAMEs that almost match those specified, but not quite. Out of general enthusiasm for being generous about what you accept, for example, it seems possible that some implementors might choose to treat a label with a key tag that is not zero-padded to five digits as if it was. Perhaps:

NEW:

The precise specification of the special labels above should be followed exactly. For example, a label that does not include a Key Tag zero-padded to five digits does not match this specification, and should not be processed as if they did -- in other words, such queries should be handled as any other label and not according to Section 2.2.

Section 2 looks a bit like an introduction to the subsections that follow, but this point (about the zero-padding of the Key Tag value) is not mentioned in 2.1. I wonder if that section might be a better place for it.

In Section 2.2 there's a possible inference that this mechanism implies support of RFC 5011. I don't think that's the intention -- a security-aware resolver with RFC 5011 disabled and manually-configured trust anchors could still usefully implement ksk-sentinel. I also don't think you mean root zone KSK here, but rather trust anchor. Perhaps:

OLD:

First, the resolver determines if the numerical value of <key-tag> is equal to any of the Key Tag values of an active root zone KSK which is currently trusted by the local resolver and is stored in its store of trusted keys. An active root zone KSK is one which could currently be used for validation (that is, a key that is not in either the AddPend or Revoked state as described in [RFC5011]).

NEW:

First, the resolver determines if the numerical value of <key-tag> corresponds to any active trust anchor available to the local resolver. An active trust anchor is one which could currently be used for validation (e.g. a trust anchor that has been locally configured, or a trust anchor corresponding to a key that is not in either the AddPend or Revoked state as described in [RFC5011]).

Finally, two actions are specified in the table at the end of this section "return original answer". I think it's fairly obvious what this means, but it's not defined anywhere and "original" is a bit vague. We could add some certainty here with something like

NEW:

Instruction "return original answer" means that the resolver MUST process the query without any further special processing; that is, exactly as if the mechanism described in this document was not implemented or disabled.

=== Section 3.1, Forwarders

There's no description of what a forwarder is. The terminology document teaches us that terms that seem obvious and well-known and still be contentious. I think what we mean by forwarder is the following. I think it's confusing to refer to a "recursive resolver using a forwarder" since if a forwarder is being used the resolver doesn't seem very recursive (even suppressing the compulsive urge to blurt "iterative" into the text). If I'm wrong I will duck and roll.

OLD:

There is also the common case of a recursive resolver using a forwarder.

NEW:

Some resolvers are configured not to answer queries using the recursive algorithm first described in RFC 1034 section 4.3.2, but instead relay queries to one or more other resolvers. Resolvers configured in this manner are referred to in this document as "forwarders".

=== Section 4, Sentinel Tests for a Set of Resolvers

A set can have a single element (or no elements). This whole section is concerned with stub resolvers that have more than one resolver configured, i.e. the case where the set of resolvers has more than one member. I suggest a better section heading might be "Sentinel Tests from Hosts with More than One Configured Resolver", and

OLD:

However, the common end user scenario is where a user's local DNS resolution environment is configured to use a set of recursive resolvers.

NEW:

However, the common end-user scenario is where a user's local DNS resolution environment is configured to use more than one recursive resolver.

=== Section 7, Implementation Experience

I don't know why the instruction to the RFC Editor to remove this section prior to publication is here. I think the information in this section is useful to retain. I suggest adding the date at which these observations were made so that future readers can put it in historical context and removing the instruction to the RFC Editor. Moving the whole section to an appendix would be a compromise if there's a desire to separate this commentary from the specification.

=== Section 8, IANA Considerations

According to RFC 8126/BCP 26 section 9.1, this section should not be removed by the RFC Editor, because that makes it hard for people to distinguish between the case where there are no IANA actions and the case where the authors just forgot to include them. The recommended text for this section is also specified in 8126, and it seems sensible to use it.

OLD:

[Note to IANA, to be removed prior to publication: there are no IANA considerations stated in this version of the document.]

NEW:

This document has no IANA actions.

---

From: "Paul Hoffman" <[email-masked]>
Date: Sat, 23 Jun 2018 17:31:05 -0700

The document can move forward as-is, but Joe Abley's proposed changes 
all look good as well.

--Paul Hoffman