[DNSOP]Re: Paul Wouters' Discuss on draft-ietf-dnsop-dnssec-bootstrapping-08: (with DISCUSS and COMMENT)

Peter Thomassen <peter@desec.io> Sat, 18 May 2024 01:23 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 4729EC14F6F2; Fri, 17 May 2024 18:23:54 -0700 (PDT)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -1.896
X-Spam-Level:
X-Spam-Status: No, score=-1.896 tagged_above=-999 required=5 tests=[BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, RCVD_IN_ZEN_BLOCKED_OPENDNS=0.001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001, URIBL_BLOCKED=0.001, 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 a7h9PWiqHX44; Fri, 17 May 2024 18:23:49 -0700 (PDT)
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 1C623C14F6A9; Fri, 17 May 2024 18:23:48 -0700 (PDT)
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:From: References:Cc:To:Subject:MIME-Version:Date:Message-ID:Sender:Reply-To: 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=teZdqp6nzrCFs/eVaKGbu72tCh5T0PItIHpJYzjJNFc=; b=ywcy23HUJk/TGeVq/SVYZNkdtu fzVtOZMMv84m1LbYqb81NYzwiDya8Ps2VllmPmpjU2igKbJFUVxAyhfTidITaKKdQdmnICS1linOj Nf3NJDVeN+OdDizf4ZroKnaYnX259wfsU//kp/XCUIsQUQwwdVjFuA6dnPIMAoAE8y80v4ykloR1M df6HpdcrhC1CbHoYuMqyil+R4utKjpkdZhZejY5Us9DnmqbTd6z9Ih3U+FZ/oQkZkXISrdO4mD+6s G9sWya7Wm5qPzXYzBvp68eNy5cG75DorspYR7kLVn4KBqcgrBAkLhsKEZ8LlmopLByRKvdpIfkObf EYRHxzpw==;
Received: from [2a02:8071:5114:35a0::9a74] 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 1s88nZ-00Anv0-6x; Sat, 18 May 2024 03:23:46 +0200
Message-ID: <28608b75-69f1-4b3d-81f9-67375921c86b@desec.io>
Date: Sat, 18 May 2024 03:23:43 +0200
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
To: Paul Wouters <paul@nohats.ca>
References: <171570741645.58676.5533506627285888134@ietfa.amsl.com> <b984d68a-f565-4178-b575-9fe2261a16a6@desec.io> <81868047-2b70-82d6-760b-7cb1cc898ff6@nohats.ca> <df0d36b9-596c-4419-8e03-0ba04465d896@desec.io> <1b099313-2266-70c7-837b-9732f2ea9bfb@nohats.ca>
Content-Language: en-US
From: Peter Thomassen <peter@desec.io>
In-Reply-To: <1b099313-2266-70c7-837b-9732f2ea9bfb@nohats.ca>
Content-Type: text/plain; charset="UTF-8"; format="flowed"
Content-Transfer-Encoding: 8bit
Message-ID-Hash: WE6F4PZJ5FUSTYYZKHH5RDIC3ZU5BLOH
X-Message-ID-Hash: WE6F4PZJ5FUSTYYZKHH5RDIC3ZU5BLOH
X-MailFrom: peter@desec.io
X-Mailman-Rule-Misses: dmarc-mitigation; no-senders; approved; emergency; loop; banned-address; member-moderation; header-match-dnsop.ietf.org-0; nonmember-moderation; administrivia; implicit-dest; max-recipients; max-size; news-moderation; no-subject; digests; suspicious-header
CC: Paul Wouters <paul.wouters@aiven.io>, The IESG <iesg@ietf.org>, draft-ietf-dnsop-dnssec-bootstrapping@ietf.org, dnsop-chairs@ietf.org, dnsop@ietf.org, tjw.ietf@gmail.com
X-Mailman-Version: 3.3.9rc4
Precedence: list
Subject: [DNSOP]Re: Paul Wouters' Discuss on draft-ietf-dnsop-dnssec-bootstrapping-08: (with DISCUSS and COMMENT)
List-Id: IETF DNSOP WG mailing list <dnsop.ietf.org>
Archived-At: <https://mailarchive.ietf.org/arch/msg/dnsop/vGN3wcj0srMcEvdnCTJbVQUB6vY>
List-Archive: <https://mailarchive.ietf.org/arch/browse/dnsop>
List-Help: <mailto:dnsop-request@ietf.org?subject=help>
List-Owner: <mailto:dnsop-owner@ietf.org>
List-Post: <mailto:dnsop@ietf.org>
List-Subscribe: <mailto:dnsop-join@ietf.org>
List-Unsubscribe: <mailto:dnsop-leave@ietf.org>

Hi Paul,

On 5/17/24 20:45, Paul Wouters wrote:
>> # Section 2
>>
>> OLD
>>    The DS enrollment methods described in Section 3 of [RFC8078] are
>>    deprecated and SHOULD NOT be used.  Child DNS operators and parental
>>    agents who wish to use CDS/CDNSKEY records for initial DS enrollment
>>    SHOULD instead support the authentication protocol described in
>>    Section 4 of this document.
>>
>> NEW
>>    The DS enrollment methods described in Section 3 of [RFC8078] are
>>    less secure than the method described in Section 4 of this document.
>>    It is therefore RECOMMENDED that Child DNS operators and parental
>>    agents who wish to use CDS/CDNSKEY records for initial DS enrollment
>>    instead support the authentication protocol described here.
> 
> I would remove the word "instead", as it now doesnt deprecate it.
> Otherwise okay.

OK. This leads to the confusing constellation "for initial DS enrollment support", where "support" looks like a noun but is a verb. I thus restructured the last sentence equivalently as follows:

NEW
    The DS enrollment methods described in Section 3 of [RFC8078] are
    less secure than the method described in Section 4 of this document.
    Child DNS operators and parental agents wishing to use CDS/CDNSKEY
    records for initial DS enrollment SHOULD therefore support the
    authentication protocol described here.

>> That adds significant complexity, to defend against a scenario that is simply "part of life" in the DNSSEC security model ("there is no way to defend against the parent").
> 
> We will leave it to dnssec transparency logging to find "deep signs"....

;-)

>> Thus: Would it address your concern if we said that QNAME minimization is REQUIRED or RECOMMENDED for resolving signaling records? (Which of the two?)
> 
> Let's leave it out for now. Or if you want you can add it as
> RECOMMENDED, but I think then you'd also need to talk a bunch about
> starting from an empty cache and stuff, so I would leave it out
> completely.

Section 5.2 (parent-side operational considerations) already says that it is "RECOMMENDED toperform queries into signaling domains with an (initially) coldresolver cache", so it actually fits well.

I used the opportunity to replace "cold" with "empty" (avoiding jargon), and added right after:

NEW
    It is also RECOMMENDED to use QNAME minimization [RFC9156] when
    resolving queries for signaling records, to guard against certain
    attacks (see Section 6).


In Section 6 (security considerations), I then added:

NEW
    If QNAME minimization [RFC9156] is not used when querying for
    signaling records, an upstream parent of a signaling domain will see
    those CDS/CDNSKEY queries and could respond with an authoritative
    answer signed with its own key, instead of sending the referral.
    Enabling QNAME minimization reduces the attack surface for such
    forgery.


What do you think?

>> OLD
>>    CDS/CDNSKEY records and corresponding signaling records MUST NOT be
>>    published without the zone owner's consent.  Likewise, the child DNS
>>    operator MUST enable the zone owner to signal the desire to turn off
>>    DNSSEC by publication of the special-value CDS/CDNSKEY RRset
>>    specified in [RFC8078] Section 4.  To facilitate transitions between
>>    DNS operators, child DNS operators SHOULD support the multi-signer
>>    protocols described in [RFC8901].
>>
>> NEW
>>    It is possible to add CDS/CDNSKEY records and corresponding signaling
>>    records to a zone without explicit knowledge of the domain owner.  To
>>    spare domain owners from being caught off guard by state changes
>>    induced by this practice, Child DNS operators doing so are advised to
>>    make this transparent.
> 
> Maybe add:   ", for example by notifying the domain owner via email".

Mmh, I find this quite prescriptive ("a priming example"). It could also be done as an info box when you create the zone (perhaps you can untick a box to disable), or as an advertised feature when you book the plan. Those approaches seem favorable, because they are ahead of time (before it actually happens), while a notification is after the fact.

Now, I'm not sure whether we should go into elaborating on all of this; but *if* we say something, I feel we should mention one of the "ahead-of-time" ways. I'd be curious to know what you think of this.

>>    When transferring a zone to another DNS operator, the old and new
>>    child DNS operators need to cooperate to achieve a smooth transition,
>>    e.g., by using the multi-signer protocols described in [RFC8901].  If
>>    all else fails, the domain owner might have to request the removal of
>>    all DS records (e.g., by using the special-value CDS/CDNSKEY RRset
>>    specified in [RFC8078] Section 4) and have the transfer performed
>>    insecurely (see [I-D.hardaker-dnsop-intentionally-temporary-insec].)
> 
> If the current DNS hoster does not cooperate, It would not let you use CDS/CDNSKEY,
> so I wouldn't mention 8078.

There's an assumption here that I don't share. It's rooted in the fact that it's very unclear what "not cooperate" means. Does it mean "not doing multi-signer transitions"?

I suppose many DNS hosters are not aware of multi-signer and its intricacies, and wouldn't dare such a setup until we come up with good automation schemes. (That gap is on us to fix.) But until that's there, a DNS hoster trying to cooperate may much more easily support CDS-delete.

But, should they? Isn't disabling DS the wrong thing to do? Well, the domain owner may have good reasons (they're not for us to judge), and in a properly automated environment, it should never be necessary to have a manual interaction with the registrar about DS.

So it seems reasonable to me that if you can turn something on without a human reaching out to the registrar, you should also be able to turn it off the same way. That also helps with cases where the domain owner hadn't agreed, and the operator provisioned DS records accidentally etc.


Finally, there are cases where cooperation doesn't get you where you want. Consider the following scenario: Moving from a DNS hoster that only does one algorithm to a hoster that only does another one (e.g., 8 vs. 13). Even if both want to cooperate, a valid multi-signer setup can't be constructed (because it would require announcing both algorithms via DS, which is illegal as long as they can't sign the zone with both algorithms [0]).

In this case, one might want to go insecure for a brief period (although that would of course be a very suboptimal thing to do; OTOH, asking one provider to implement the other's algorithm has near zero hopes to succeed). Using RFC 8078 CDS-delete would spare the domain owner from having to touch the registrar's DS interface, which I think is the right design.

[0]: In this context, Section 2.2 of https://datatracker.ietf.org/doc/draft-huque-dnsop-multi-alg-rules/ offers a solution that I think should be advanced.

> So I believe with this we addressed all concerns, and if a new draft is
> published I will update by DISCUSS ballot to Yes.

Thanks. I'll hold off with the submission in case you'd like to respond. Otherwise, I'm planning to upload a new revision on Monday.

Cheers,
Peter

-- 
https://desec.io/