Re: [DNSOP] Working Group Last Call for draft-ietf-dnsop-dnssec-bootstrapping

Peter Thomassen <peter@desec.io> Fri, 19 January 2024 13:58 UTC

Return-Path: <peter@desec.io>
X-Original-To: dnsop@ietfa.amsl.com
Delivered-To: dnsop@ietfa.amsl.com
Received: from localhost (localhost [127.0.0.1]) by ietfa.amsl.com (Postfix) with ESMTP id E7338C14F5FC for <dnsop@ietfa.amsl.com>; Fri, 19 Jan 2024 05:58:59 -0800 (PST)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -6.907
X-Spam-Level:
X-Spam-Status: No, score=-6.907 tagged_above=-999 required=5 tests=[BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, RCVD_IN_DNSWL_HI=-5, RCVD_IN_ZEN_BLOCKED_OPENDNS=0.001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001, T_SCC_BODY_TEXT_LINE=-0.01, URIBL_DBL_BLOCKED_OPENDNS=0.001, URIBL_ZEN_BLOCKED_OPENDNS=0.001] autolearn=ham autolearn_force=no
Authentication-Results: ietfa.amsl.com (amavisd-new); dkim=pass (2048-bit key) header.d=a4a.de
Received: from mail.ietf.org ([50.223.129.194]) by localhost (ietfa.amsl.com [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id ySPKa8yvw1pj for <dnsop@ietfa.amsl.com>; Fri, 19 Jan 2024 05:58:55 -0800 (PST)
Received: from mail.a4a.de (mail.a4a.de [IPv6:2a01:4f8:10a:1d5c:8000::8]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange ECDHE (P-256) server-signature RSA-PSS (2048 bits) server-digest SHA256) (No client certificate requested) by ietfa.amsl.com (Postfix) with ESMTPS id A00A8C15198F for <dnsop@ietf.org>; Fri, 19 Jan 2024 05:58:20 -0800 (PST)
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=a4a.de; s=20170825; h=Content-Transfer-Encoding:Content-Type:In-Reply-To:References: To:From:Subject:MIME-Version:Date:Message-ID:Sender:Reply-To:Cc:Content-ID: Content-Description:Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc :Resent-Message-ID:List-Id:List-Help:List-Unsubscribe:List-Subscribe: List-Post:List-Owner:List-Archive; bh=bWInMJBO1Ux3xBE9GJsCJggz+wyb9OjH6lj6fcL1Nmw=; b=NA34wyqEa3+ymihlSjJtRyV10S vntWi9ArNg18FPnNEJDOEm+yUkXMO7IwJW4yAyyaxIxeEwVlSDe5koxXHfbCYVaX8gMU7VypjFoYE wok8saL/fpm0DoIq4GeNbpPA4B/nw9MQudjGUBw81xRZQTMVxXY2lYUpuQeYyxNTec0RwaBfsJr0+ 6O3hH8hfWsV5lRHG5WFKhcy2NnteWTnPnzROJ6cZwdQ/rGi2QeAHdZy71i2o4+ZISeJC/klGUey8F n2FVTUKaY8zE0D7qt5xwzn7U7jgycEQiRQciCAFevHrTxn49TKrUIz8N6SkjiwOfhdOi0sDNuhkmL kgNdZSAA==;
Received: from [2a02:8109:9283:8800:3ba1:cad9:b32c:b3b1] by mail.a4a.de with esmtpsa (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256 (Exim 4.93) (envelope-from <peter@desec.io>) id 1rQpNx-003QSV-Al; Fri, 19 Jan 2024 14:58:17 +0100
Message-ID: <63631618-c9f8-44b4-bd8d-907adf9d6db6@desec.io>
Date: Fri, 19 Jan 2024 14:58:15 +0100
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Content-Language: en-US
From: Peter Thomassen <peter@desec.io>
To: Paul Wouters <paul@nohats.ca>, dnsop <dnsop@ietf.org>
References: <CADyWQ+GL_VCBTQ5DP_ztHPJBJ5bLYmVgk_hzL3dKkGs7fRPRdw@mail.gmail.com> <d44d6701-ea2f-45a6-aa45-c5f7b989ef45@desec.io> <CAH1iCipKvUS8jcRGRahN5UdwLh2ox=W75j1kMo2_j6t-ooCsDw@mail.gmail.com> <cc3e7374-aa3c-c416-4ccf-12f2fe881174@nohats.ca> <eb57cac6-f39b-45e4-b160-b2c0b25dc503@desec.io> <fc290668-5549-4a5c-a9a7-bceb1141c178@desec.io>
In-Reply-To: <fc290668-5549-4a5c-a9a7-bceb1141c178@desec.io>
Content-Type: text/plain; charset="UTF-8"; format="flowed"
Content-Transfer-Encoding: 8bit
Archived-At: <https://mailarchive.ietf.org/arch/msg/dnsop/cEM_MptcoJbO7sMef1NWKP1FS3E>
Subject: Re: [DNSOP] Working Group Last Call for draft-ietf-dnsop-dnssec-bootstrapping
X-BeenThere: dnsop@ietf.org
X-Mailman-Version: 2.1.39
Precedence: list
List-Id: IETF DNSOP WG mailing list <dnsop.ietf.org>
List-Unsubscribe: <https://www.ietf.org/mailman/options/dnsop>, <mailto:dnsop-request@ietf.org?subject=unsubscribe>
List-Archive: <https://mailarchive.ietf.org/arch/browse/dnsop/>
List-Post: <mailto:dnsop@ietf.org>
List-Help: <mailto:dnsop-request@ietf.org?subject=help>
List-Subscribe: <https://www.ietf.org/mailman/listinfo/dnsop>, <mailto:dnsop-request@ietf.org?subject=subscribe>
X-List-Received-Date: Fri, 19 Jan 2024 13:59:00 -0000

For the record, Paul and I sorted these out off-list (for real, this time!), and I'll push a new revision of the draft shortly.

~Peter

On 11/20/23 16:49, Peter Thomassen wrote:
> Hi Paul,  (off-list)
> 
> To keep the ball rolling, may I nudge you for your opinion on the below? :)
> 
> Thank you very much for your input,
> Peter
> 
> 
> On 11/13/23 22:30, Peter Thomassen wrote:
>> Hi Paul,
>>
>> Thanks for your thoughts. I'd like to address your points below and would very much appreciate your follow-up response.
>>
>> On 11/11/23 12:55, Paul Wouters wrote:
>>> I have read the document and I am supportive of the idea, but I find the
>>> document not ready. Some issues I have with the document in the current form:
>>>
>>> - It "deprecates" RFC8078 but does not offer a solution for all cases of
>>>    8078, such as when all nameservers are in-domain of the child.
>>
>> That is correct. This deprecation was requested to be clarified (but not challenged) in the Dnsdir review [1].
>>
>> During the subsequent considerations on the list, nobody objected, which I read as "the WG prefers deprecation".
>>
>> If the WG feels differently, let's change the text. Perhaps one or two people could speak up if they would prefer such a change.
>>
>> The question at hand is whether, given the cryptographically secure method of this document, we want to continue endorsing an insecure method, even if only for in-domain nameservers.
>>
>> I can imagine three kinds of things to say in the draft without continuing to endorse insecure bootstrapping:
>>
>> 1.) discourage the insecure method (by deprecating it);
>> 2.) perhaps even discourage in-domain nameservers;
>> 3.) perhaps point out that one might perform DNSSEC bootstrapping with at least one out-of-domain nameserver, then switch to in-domain nameservers (e.g., via CSYNC).
>>
>> The draft currently does the first thing, but not the other two.
>>
>> In-domain nameservers cause a bunch of problems (including the orphaned glue saga), and are also foreseen to be incompatible with DELEG-style delegations in ServiceMode [2].
>>
>> Reserving any judgment on the DELEG mechanism itself, it appears to me that in-domain nameservers are best advised against. So perhaps what we should do is (1) + (2).
>>
>> [1]: https://mailarchive.ietf.org/arch/msg/dnsop/04LYtemBnRjOBLWzgdD6RuaD5UU/
>> [2]: https://mailarchive.ietf.org/arch/msg/dnsop/rUY8CJHrrZYa0Sdvi3BV10IsfiE/
>>
>>> - Section 4.3 is named "Triggers" but it basically only describes
>>>    "Timers". Some of us have significant scar tissue on this matter,
>>>    and I don't see new information or a new technology here that
>>>    resolves this old discussion. It feels a lot like restating RFC8078.
>>
>> The situation in this draft is different from the trigger conditions in in Section 6.1 of RFC 7344 (which I think is what you meant). That RFC lists conditions for *updating* a DS RRset. This one here is for *initializing*, so other scenarios apply.
>>
>> For example, one condition listed here (but not in RFC 7344) for triggering the CDS authentication procedure is when the parent receives a new or updated NS record set for a child.
>>
>> Besides scans (which of course have a timer) and the receipt of a new NS RRset (which doesn't), the draft also mentions walking a list of children known to be in need of bootstrapping, perhaps received by AXFR or extracted via NSEC walk of signaling zones (and the NS receipt). I don't see any relation to timers here.
>>
>>
>> However, this is second instance (after [3]) that someone suggests to remove this section, so perhaps it's time to do so. Before doing so, I'd like to point out the following:
>>
>> The main takeaway from Section 4.3 is that the authentication mechanism requires reliable knowledge of the delegation's NS records, which -- depending on the trigger method -- may or may not be implicit in the trigger condition; as a result, a cross-check in the parent's database may be needed for certain triggers. This point is not contained in RFC 7344 (which deals with updates which use the child's existing chain of trust, so this point doesn't apply).
>>
>> In particular, scanning the registry database or installing a new NS RRset gives *certain* knowledge of what the NS records are, because the trigger conditions directly derive from processing an NS RRset that has previously been accepted for delegation.
>>
>> In contrast, when processing some kind of list fetched externally (e.g. walking the signaling domain _signal.$NS), it's possible to encounter signaling records pertaining to domains that are *not* delegated to $NS; therefore, the parent has to check that what's found in the list matches an actual delegation.
>>
>> I would like to hear your opinion on whether this point warrants the existence of Section 4.3; if it doesn't, I'll go ahead and remove it.
>>
>> [3]: https://mailarchive.ietf.org/arch/msg/dnsop/toP-e7Rc-ZLg0dR2SvzC25kAGxk/
>>
>>> - Style: I think the document is a lot more verbose and repetitive than
>>>    it needs to be. Condensing this would increase clarity of the
>>>    document.
>>
>> It looks like opinions within the WG differ here: the only other two feedbacks on style asked for more examples and otherwise described it as "very clear" (both from Secdir, [4]), and suggested to be more verbose by adding full RRset examples [5].
>>
>> I'll be happy to make adjustments, but I'm uncertain about what to change without "making it worse" from the perspective of others. Would you be able to suggest specifically which paragraphs/sentences you would like to be removed/condensed?
>>
>> [4]: https://mailarchive.ietf.org/arch/msg/dnsop/rIHtAMZ7erJ2Pc0NIAG1V6hlSrM/
>> [5]: https://mailarchive.ietf.org/arch/msg/dnsop/nBsMo1nENZzgUWd7-42zzAuM76w/
>>
>>> - There is the non-RRR model flavour of this and the RRR-model flavour.
>>>    What the parent can do greatly depends on the flavour and I think the
>>>    document instead focused on only using something that works with either
>>>    flavour.
>>
>> The document is fully agnostic of RRR considerations, and instead focuses on adding an authentication mechanism for RFC 8078, which also is agnostic of RRR considerations. (That's why the term "parental agent" is used.)
>>
>> Of course, when considering other options for delegation maintenance, a registry could do different things than a registrar; but to my understanding these are out of scope for RFC 8078 and, by extension, for this authentication mechanism. Given that, I'm not sure what your comment is trying to say?
>>
>>> - It seems WHOIS/RDAP could be better integrated for relaying a secure
>>>    signal instead of relying on insecure DNS lookups with the RRR-flavour.
>>>    For example, advising parents with delegation information (eg TLDs) to
>>>    lookup NS records in their own WHOIS/RDAP databse instead of using DNS
>>>    queries.
>>
>> The draft does not rely on insecure DNS lookups. Instead, parents directly use the knowledge they have as a parent, namely, the NS hostnames present in the delegation. (This point is emphasized in Section 4.3 which is also discussed above.)
>>
>>> - There are issues with very long domain names not fitting in the
>>>    current signal. Why not use hashed FQDNs as part of the signal part.
>>>    Additionally this might have some privacy and security advantages too.
>>>    (including friendlier to query minimalization :-)
>>
>> I completely agree with that. In fact, for precisely these reasons, hashing (of all labels but the first) was part of earlier incarnations of the draft, but, after discussions [6][7] around IETF 112, it was removed in draft-thomassen-dnsop-dnssec-bootstrapping-03.
>>
>> (The WG had settled on the plain variant mainly to ease debugging by visual inspection without additional tooling. Hashing also poses a challenge for synthesis of signaling records, which requires reversing the hash. That might be doable if only the parent name is hashed, see [6].)
>>
>> [6]: Slide 11 of https://datatracker.ietf.org/meeting/112/materials/slides-112-dnsop-sessb-automatic-bootstrapping-of-dnssec-delegations-00
>> [7]: https://mailarchive.ietf.org/arch/msg/dnsop/FE5Sm5vzZtq9VgKxgkfmv4VuVI8/
>>
>>> - I find Section 4.1 and 4.2 and the Security Considerations a bit of
>>>    of a weird split. A bullet list of things to do is specified but
>>>    then additional things are specified in the Security Considerations.
>>
>> I agree that Security Considerations are not the place for specification.
>>
>> There's only one uppercase keyword there, namely that it's RECOMMENDED to diversify a delegation's NS hostnames across several TLDs, for security reasons. As this doesn't pertain to the authentication protocol of Section 4 itself, I felt that's OK. But sure, let's move it upstairs! :-)
>>
>> So, how do you feel about the following?
>>
>> At the end of 4.1, add:
>>
>> NEW
>>     To avoid relying on the benevolence of a single Signaling Domain
>>     parent (such as the corresponding TLD registry), it is RECOMMENDED to
>>     diversify the pathfrom the root to each nameserver.  This is best
>>     achieved by usingdifferent and independently operated TLDs for each
>>     one.
>>
>> ... and replace the last paragraph of the Security Considerations with the following two:
>>
>> NEW
>>     In any case, as the Child DNS Operator has authoritative knowledge of
>>     the Child's CDS/CDNSKEY records, it can readily detect fraudulent
>>     provisioning of DS records.
>>
>>     In order to prevent the TLD of nameserver hostnames from becoming a
>>     single point of failure in a delegation (both in terms of resolution
>>     availability and for the trust model of this protocol), itis
>>     advisable to use NS hostnames that are independent from each other
>>     with respect to their TLD.
>>
>>> - The "_signal" name is very generic. It would be clearer to use a more
>>>    descriptive name that also has less chance of being used by completely
>>>    different technologies.
>>
>> The structure of the signaling name was discussed at the DNSOP Interim in May 2022 [8]. To avoid limiting operators' freedom to introduce zone cuts at arbitrary points in the tree, the WG settled on using a structure that includes a descriptive prefix label as well as a generic intermediate label. Details on rejected alternatives can be found in [7].
>>
>> Keeping the intermediate label generic comes with the side effect that new operator signals (such as multi-signer key exchange [9]) can be easily introduced via a new prefix, avoiding the need for a new entry in the "underscored names registry" each time. -- The draft reserves the "_signal" label for use such operator-side signaling, to prevent collision with other technologies.
>>
>> [8]: "Open Issue 3" in https://datatracker.ietf.org/meeting/interim-2022-dnsop-01/materials/slides-interim-2022-dnsop-01-sessa-authenticated-dnssec-bootstrapping-00.pdf
>> [9]: https://datatracker.ietf.org/doc/draft-thomassen-dnsop-mske/
>>
>>> I think the goal of the document is to further widepsread automated
>>> deployment of DNSSEC. This happens by the bigger DNS hosters, mostly
>>> for delegations under a TLD.
>>
>> It may also happen by smallrt DNS hosters, in case implementations are added in common authoritative server software.
>>
>> The IETF 114 hackathon has produced a LUA implementation for PowerDNS (used at deSEC), and the RIPE 86 hackathon worked on a native implementation for Knot DNS. We're planning to finish this as part of a project funded by NLnet [10].
>>
>> [10]: https://nlnet.nl/project/AuthenticatedDNSSECbootstrap/
>>
>>> I think it best to limit the solution to
>>> this space,
>>
>> For what reason? -- Those preferring other solutions may certainly use them, but I don't see why that should imply a restriction on the applicability of any specific one.
>>
>>> and not try to fold in supporting other cases. Enterprise
>>> deployments can use CDS/CDNSKEY with hooks in IXFR/AXFR detecting these
>>> records automatically.
>>
>> I'm not sure what you mean here.
>>
>>> All in-domain nameservers are people who registered
>>> their own stuff and are running their own nameservers.
>>
>> That's not correct; we have a bunch of users on our managed DNS hosting platform who insist on creating vanity nameserver names under their domains. We'd like to stop them (so that it's easier for us to renumber our NS), but it seems we can't really.
>>
>>> The main use case is non-technical people getting a domain with DNS/web
>>> hosting, where the DNS hoster uses DNSSEC and would like to tell the TLD
>>> to enable DNSSEC. If the Hoster is the Registrar, there is no problem.
>>> It should be able to use EPP to get a DS into the Registry. If the
>>> DNS hoster is not the Registrar, then this EPP path is not available.
>>> But usually those DNS hosters _are_ Registrars already, but only for their
>>> own zones and their customers zone. Just this customer is using their
>>> DNS service but not their registrar service. Place the information there,
>>> eg via EPP. This would be much more secure than DNS timers/triggers.
>>
>> I agree with parts of that and don't with other parts; but I think it's a tangent. The draft doesn't tell everyone to use the protocol, and certainly not internally within a registrar that's also the operator.
>>
>> What the draft does is taking the existing method of RFC 8078 and adding authentication. I assume we're generally in agreement that that is a good thing (please correct me in case you disagree). The use cases are the same use cases as for RFC 8078, and the draft isn't touching that.
>>
>>> If this is truly too complicated (which I think it should not be), DNS
>>> signals could be used, but I would simplify it by telling the customer
>>> that for moving the domain to the new DNS hoster, to add a special NS
>>> record that indicates the DNSSEC information, eg:
>>>
>>> customer.example IN NS ns0.dnshoster.tld.
>>> customer.example IN NS ns1.dnshoster.tld.
>>> customer.example IN NS <hash of DNSKEY>._cds.dnshoster.tld.
>>>
>>> The DNS hoster can confirm they are the hoster by simply putting a
>>> (signed) A/AAAA record at <hash of DNSKEY>._cds.dnshoster.tld. using one
>>> of the real nameserver IPs as RDATA. This prevents people from
>>> adding the DNS hoster without permission.
>>
>> Preventing illegitimate use of nameservers ("lame delegations") is an entirely different protocol. The draft is trying to authenticate DS records.
>>
>> Thanks,
>> Peter
>>
> 

-- 
Like our community service? 💛
Please consider donating at

https://desec.io/

deSEC e.V.
Kyffhäuserstr. 5
10781 Berlin
Germany

Vorstandsvorsitz: Nils Wisiol
Registergericht: AG Berlin (Charlottenburg) VR 37525