Hi Ben, thanks again for your comments! We've uploaded a new version that takes them into account.
On Wed, 19 Apr 2023 at 17:40, Benjamin Kaduk via Datatracker < nore...@ietf.org> wrote: > Reviewer: Benjamin Kaduk > Review result: Has Issues > > # SecDir review of draft-ietf-dnsop-domain-verification-techniques-01 > CC @kaduk > > ## Discuss > > ## Comments > > I'm a little nervous about allocating a new BCP number for a topic of > fairly > narrow scope such as this, but the guidance is good and worth publishing, > and > I have not better alternative to offer, so I will stifle any objection I > might > have raised. > > On the whole the content is reasonable, but read on for some suggestions on > how to tighten things up and some questions about why all the pieces are > needed. > > I also made a PR with some editorial suggestions, > > https://github.com/ietf-wg-dnsop/draft-ietf-dnsop-domain-verification-techniques/pull/51 > > ### Continuing Ownership > > While I see the example in Appendix A.1.4.1 about Atlassian, when we say in > the introduction that sometimes the DNS record must be kept in the zone to > prove continued ownership of the domain, that doesn't exactly seem to hold > true, or at least only provides a weak indication of continued ownership. > I > think that to really prove continued ownership the challenge would need to > be > rotated periodically; just putting one record in once and leaving it there > mostly only shows that you had control of the domain at the one point in > time > it was added and that there isn't anything cleaning up old records. A > wholesale migration of the domain to a different DNS server would clean up > old > records, but staffing changes within a large organization would not. > > ### Underscore for attrleaf > > In §3.1 we say "The provider constructs the validation domain name by > prepending a provider-relevant prefix followed by "-challenge" to the > domain > name being validated (e.g. "_foo-challenge.example.com")." which > implicitly > uses an underscore-prefixed atterleaf name component. Is the underscore > part > of the required or recommended behavior? > > ### Hashing the random token > > The recommendations in §3.1 requires computing the SHA-256 digest of the > Random Token before base64url encoding and use as RDATA, but provides no > justification for the SHA-256 step that I can see. If the intent is for > the > Random Token to be a non-public identifier for the challeng with only the > digest value being public, we should say that. Otherwise it's not clear > what > we gain over just using base64url(random-data) as the RDATA. > > ### TXT RDATA contents > > We say that the RDATA of the recommended TXT resource record construction > must > "contain" a certain token construction (rather than "consist of"). Does > the > format/structure of the RDATA also need to be one that unambiguously > identifies where the token is (or is a raw substring match sufficient)? > > I think we might provide clearer guidance if we laid out the recommended > comma-separated key-value format first and talked about the token= > contents, > and then only afterward mention that even if other formats are used, the > RDATA > MUST contain the token value (and whether it must be identifiable as such > via > some metadata). Or we could state up front what properties we want from > the > RDATA before going on to describe how we achieve those properties. But the > current formulation starts out with a MUST-level requirement without much > context and then tries to build the context around it, which tends to cause > confusion in the reader. > > Reading again, I think that the core of what is confusing me here is that > the > SHOULD-level guidance for using the comma-separated key-value pair format > is > buried as an aside in the mechanism for conveying the instructions for > removing a resource record. It seems like it's a more generic > recommendation > and should be framed as such. > > ### Instructions for TXT record removal > > We say > > > Providers MUST provide clear instructions on when a verifying record > > can be removed. The user SHOULD de-provision the resource record > > provisioned for a DNS-based domain verification challenge once the > > one-time challenge is complete. These instructions SHOULD be encoded > > in the RDATA via comma-separated ASCII key-value pairs [RFC1464] > > using the key expiry. If this is done, the token should have a key > > token. For example: > > I think that the "these instructions" refers to the "clear instructions" > provided by the provider. But the TXT record is something provisioned by > the > user, not the provider. If the instructions are to be encoded in the > RDATA, > does that require that the RDATA contents themselves are provided by the > provider to the user? I'd strongly recommend including some more > description > of the workflow that's envisioned if it includes the provider giving the > user > the entire RDATA contents to copy/paste in place (and also using those > RDATA > contents as a separate information channel to the user). > > Additionally, do we make any requirement/recommendation of the format used > for > the value corresponding to the "expiry" key? > > ### CNAME chaining > > In §3.2 we see the text "Another issue with CNAME records is that they must > not point to another CNAME" provided, with no reference. But CNAME chains > are > in heavy use on the internet in practice with no ill effect (case in > point: my > employer's CDN business), so I'd recommend removing the discussion of CNAME > chaining, or supplying a reference and discussion around them that is > closer > to the deployment reality. > > > ### Relationship to other work > > While I don't mind a focus on DNS-based domain-verification techniques in > this > document, it does seem like we might want to spend a little more time > placing > this work in the context of other schemes. For example, ACME has a number > of > challenge types, and one of them is essentially the DNS-based stuff > covered by > this document. Is what RFC 8555 specifies compliant with this document's > requirements and recommendations? Do we expect ACME to use our guidance > for > DNS-based verification and keep doing what they do for HTTP, TLS-SNI, etc. > verification? Or should they use a wholistic body of work for all > verification such that this document is out of scope for ACME? > > ### AVOID-FRAGMENTATION reference classification > > The actual text in Appendix A.1.1 that references [AVOID-FRAGMENTATION] > does > not contain any usage that would obviously promote it to a normative > reference. If there is intent to require implementors of this document to > read that one, some additional discussion of which parts are normative > requirements and why seems in order. > > ### Motivation for application-specific name prefix > > In Appendix A.1.1 we have some good text about an attack where a malicious > service can provide to the user the challenge from a different provider, > when > the TXT verification is on the actual domain name being verified (no > prefix/suffix). I would say this fits better in the main document > (security > considerations, probably) rather than the appendix with survey of current > usage. We currently say that the provider and service "should be obvious > from > the TXT content" in the security considerations but not much about how > things > go wrong if the provider and service are not obvious. (The existing prose > in > the appendix is perhaps a little unclear about how the attack actually > would > get pulled off in practice; it was clear to me based on my prior experience > but could be improved by, e.g., naming the parties involved (victim > service, > malicious service, user, DNS administrator).) > > ## Nits > > ### APEX Capitalization > > I don't remember seeing APEX used as a defined term in all-caps elsewhere. > What value do we think we're adding by writing it this way? > > ### Verifying Record > > We seem to implicitly introduce the term "verifying record" in §3.1; it > might > benefit from having an explicit definition. > > ### Self-referential Appendix > > Appendix A.1.1 contains the text "See Appendix A for a survey of different > implementations.", which is perhaps not a very useful reference. > > ### DNS name component ordering > > In Appendix A.1.1 we write "Some providers use a suffix of > _PROVIDER_NAME-challenge in the Name field of the TXT record challenge", > when > that value is a suffix in the wire format of the name but a prefix in the > presentation form of the name. This is especially confusing when the next > sentence goes on to include an example in presentation form, > _acme-challenge.<YOUR_DOMAIN>, where the _PROVIDER_NAME-challenge is a > prefix. > Maybe talking about "leaf" rather than prefix or suffix would be most > clear. > > > >
_______________________________________________ DNSOP mailing list DNSOP@ietf.org https://www.ietf.org/mailman/listinfo/dnsop