Re: [DNSOP] [Ext] DS glue for NS draft

Brian Dickson <brian.peter.dickson@gmail.com> Mon, 16 August 2021 18:05 UTC

Return-Path: <brian.peter.dickson@gmail.com>
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 189313A09F1 for <dnsop@ietfa.amsl.com>; Mon, 16 Aug 2021 11:05:10 -0700 (PDT)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -2.097
X-Spam-Level:
X-Spam-Status: No, score=-2.097 tagged_above=-999 required=5 tests=[BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, FREEMAIL_FROM=0.001, HTML_MESSAGE=0.001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001, URIBL_BLOCKED=0.001] autolearn=ham autolearn_force=no
Authentication-Results: ietfa.amsl.com (amavisd-new); dkim=pass (2048-bit key) header.d=gmail.com
Received: from mail.ietf.org ([4.31.198.44]) by localhost (ietfa.amsl.com [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id mwvEh_8VaQMG for <dnsop@ietfa.amsl.com>; Mon, 16 Aug 2021 11:05:04 -0700 (PDT)
Received: from mail-lj1-x231.google.com (mail-lj1-x231.google.com [IPv6:2a00:1450:4864:20::231]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by ietfa.amsl.com (Postfix) with ESMTPS id E5F9C3A09E8 for <dnsop@ietf.org>; Mon, 16 Aug 2021 11:05:03 -0700 (PDT)
Received: by mail-lj1-x231.google.com with SMTP id i28so7227480ljm.7 for <dnsop@ietf.org>; Mon, 16 Aug 2021 11:05:03 -0700 (PDT)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=mime-version:references:in-reply-to:from:date:message-id:subject:to :cc; bh=nwgIYtsx0Z4r3GDSXFBtHre7qUo8D3DDtT0xag0wiPI=; b=pFaP/19u6/otdujBFAfIAe5HYu4fOAtY+/MVyA7w2mCl21rlCqddwXaYQp0V8FD7Ag C/S9lKaPYoxUEHvr23AaJOnuwKWzNhEg9rxK+Shb1QGhGzirlKiuy/iBtoOHZnjMbVcO 0lTvBsoLbQHwSfFbLA0ymNFqtUeRjH1694EZwDWynAN+hILPd9o04XGJDnwbHLr6jOuZ 0ieFhbKfl9vWch7N+PXDnbvg0lhGIQsma6HwhyVdBR7pAHBKIB1ayc0xkh5oVd83GZ+c t9qQkDUoBwQbXpC6cksE9y07WFF6IzNpfgPUGzl/Hr821Hk0c9MlXb6MzQmLjMeXt+pp NEhw==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:mime-version:references:in-reply-to:from:date :message-id:subject:to:cc; bh=nwgIYtsx0Z4r3GDSXFBtHre7qUo8D3DDtT0xag0wiPI=; b=fPCOQZwd9UYJt4biRbOip0dWc5CVgUlVMpbJwqUosVDMYxR52N5mnvDB555z9+/jre xyhy0rpMkH+FApbzEoFyejJmOu7dTim9tib3hdrLV5cNaFqfYQiBwWPhK502ebV5Kt/P o8g5/ZJ3h62eZVFz4uDpvy92CYNqZWXF63m5Lf09aw6bL1cAy12S3RDlAziZvQSWtKIX RX86i+HNMnFh13waQcfqg1rUi1BYP+Q8Dakp6QUUtrwpafvJaAplXlAwKOILeoLuzlFX IaSbs2am7G5tEeZU+3EWOzvq1V+Xoe7VO7Oi+2aPIk1BDf6ghTRNk2edsfrreBI4G2HV wzlg==
X-Gm-Message-State: AOAM531pQ5Ix9+RpdRlkwIc9lKjeT6IxSxDX14SPh0p65jw2tm79GxL3 F29aDZop8sakeol0j9jglcYcGAXMxRiwD9yI75o=
X-Google-Smtp-Source: ABdhPJx8tMyumzlhfp2RCNH5RSJc5ArVVftr/bIACvTy62APgmr0+D+fWNxp6ynFWxpqpL8u2sQnmFiyU/5vp/C2YYQ=
X-Received: by 2002:a2e:1556:: with SMTP id 22mr6300531ljv.253.1629137099776; Mon, 16 Aug 2021 11:04:59 -0700 (PDT)
MIME-Version: 1.0
References: <E64E409D-ABAA-4F09-8759-D3D8CEB36F13@gmail.com> <20210812162151.271D5261E7C4@ary.local> <CAHbrMsBTCBtOxjXXfUR3TQz+abaDdWRum2x_ZroZ2Wxyhscrfg@mail.gmail.com> <67B40C28-677F-42E1-B259-F90F6A78578D@icann.org> <CAH1iCirsTc78r5tS_suOpTe2DiX5tYtmN7mUnPtyM8VaVny3KQ@mail.gmail.com> <CAHbrMsCjuNh3UCMrpqxG33ES_sVjPDb+Z_N4QAxBOSRpMV7NGQ@mail.gmail.com>
In-Reply-To: <CAHbrMsCjuNh3UCMrpqxG33ES_sVjPDb+Z_N4QAxBOSRpMV7NGQ@mail.gmail.com>
From: Brian Dickson <brian.peter.dickson@gmail.com>
Date: Mon, 16 Aug 2021 14:04:48 -0400
Message-ID: <CAH1iCir_ro2YvJYKWoyKv5qZ+Xe0JjE++mymdWbxeU70AvP_jw@mail.gmail.com>
To: Ben Schwartz <bemasc@google.com>
Cc: Paul Hoffman <paul.hoffman@icann.org>, dnsop <dnsop@ietf.org>
Content-Type: multipart/alternative; boundary="0000000000001f67d005c9b10abf"
Archived-At: <https://mailarchive.ietf.org/arch/msg/dnsop/YdM-oKrbi3pDML_cRQM3PNLSPEg>
Subject: Re: [DNSOP] [Ext] DS glue for NS draft
X-BeenThere: dnsop@ietf.org
X-Mailman-Version: 2.1.29
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: Mon, 16 Aug 2021 18:05:10 -0000

On Mon, Aug 16, 2021 at 11:16 AM Ben Schwartz <bemasc@google.com> wrote:

>
>
> On Sat, Aug 14, 2021 at 7:37 PM Brian Dickson <
> brian.peter.dickson@gmail.com> wrote:
>
>>
>>
>> On Sat, Aug 14, 2021 at 3:47 PM Paul Hoffman <paul.hoffman@icann.org>
>> wrote:
>>
> ...
>
>> For the DRPIVE use cases, draft-schwartz-ds-glue allows a resolver to
>>> discover SVCB records in a response from the parent, even if that parent is
>>> not configured to put SVCB records in the Additional section.
>>>
>>
I'm arguing against the parent ever putting SVCB records in any delegation
response, regardless of whether the data is signed, or whether the parent
is capable of doing so. The data model for doing so is IMNSHO incorrect.

The parent is responsible for signaling the delegation, and everything else
is necessary for resolution, but not authoritative.
The "glue is necessary" draft clarifies this.
Protecting that glue improves the security model of that glue, which is
essentially "where do I go to get the child zone"?
DNSSEC provides the necessary protection on the data integrity on the
zone(s), but not the name server(s).

The security model for name server names' zones mirrors that of
registrant's zones, since it uses the exact same standards (DNSSEC).

There is no DNSSEC model for avoiding a two-phase method for obtaining any
signed data from the name server names' zone(s).

The best that can be done without re-engineering DNSSEC, is the benefits of
caching the first phase (getting the validated DNSKEY(s) for the name
server names' zone(s), which are used to validate RRSIGs on data served in
those zone(s), needed for getting TLSA records if those are used.)

The larger discussion of strictly opportunistic vs downgrade-resistant TLS
to the authority server, needs to happen first, IMHO.

Those two models are fundamentally incompatible. You cannot have strictly
opportunistic (using WebPKI) and also have downgrade-resistant TLS.

The prior work by Viktor in the DANE SMTP has pretty much cemented that, as
well as having demonstrated that this is both feasible and scalable.


>
>> While this is technically accurate, it is (IMNSHO) problematically
>> insecure.
>> SVCB records in a signed child domain would be protected by a real DS
>> record (signed by parental RRSIG), and RRSIG in the child domain.
>> Any SVCB record added to the parent domain via the "ds-glue" mechanism
>> would NOT be signed by the child. The RRSIG of the new DS record would
>> prove that the new DS record was not tampered by an active attacker (etc),
>> but would not provide the data integrity offered by DNSSEC.
>>
>
> I don't agree with this characterization.  In the DNSSEC security model,
> data signed by the parent has the same level of DNSSEC protection as data
> signed by the child.
>

In the DNSSEC security model, the only parental data that is signed is the
DS record (and obviously NSEC(3) records).
The security model on the DS record is that all of the following are part
of the secure delegation that get validated (by validating resolver):

   - RRSIG on DS record is verified using ZSK (or CSK) of the parent domain
   - Child domain apex is queried for matching KeyTag KSK with matching
   DNSKEY algorithm
   - Child domain RRSIG(s) over DNSKEY set verified (but the latter are not
   yet part of the trust set)
   - DS record is recreated from inputs, and compared to DS received
   originally

You cannot take child data and place it in the parent, and sign it with the
parent's ZSK, and claim it has the same degree of protection as when it was
signed by the child ZSKs.



>
> I'm a strong advocate of discovery and use of SVCB records for both
>> opportunistic and downgrade-resistant (authenticated) use cases.
>>
>> SVCB in the child nameserver name domain is the right place to put SVCB
>> records, as the name server name is the association needed for TLS.
>>
>
> To avoid misunderstanding: SVCB itself does not alter the nameserver name
> used for TLS.  The nameserver name is the name in the NS record, regardless
> of what SVCB says.  ("TLS clients MUST continue to validate TLS
> certificates for the original service name",
> https://datatracker.ietf.org/doc/html/draft-ietf-dnsop-svcb-https-07#section-2.3
> )
>

At issue is not whether the name is changed, it is who is authoritative for
the data at the owner name, which is the child zone.
The SVCB also is controlling the transport and potentially other parameters.
Absent a discussion on how to securely get that data into the parent, it
cannot be accurately asserted as having the same security properties as
when the SVCB record is published in a signed child zone.


>
>
>> The resolver talking TLS will be talking to the name server, to make
>> encrypted queries about a domain served by the name server.
>> (The domain served that is being queried is presumed to not have an
>> in-bailiwick name server, since that particular corner case is a
>> chicken/egg problem.)
>>
>> The alternative (to requiring the SVCB record in the child, signed by the
>> child domain) might be an SVCB-like thing in the parent which contains data
>> signed by the child. Specifically:
>>
>>    - A DNSKEY algorithm, or component of the draft-schwartz encoding,
>>    which contains (SVCB + RRSIG_name_server_child_ksk(SVCB))
>>    - This would be signed by the parent too, but the critical component
>>    the provides the data integrity from the child is the
>>    RRSIG_name_server_child_ksk element
>>    - Only the operator of the name server's name's domain (which
>>    possesses the name_server_child_ksk) can generate this signature
>>
>> Yes, but the parent controls the choice of nameserver name, so this does
> not create an effective defense against a hostile parent, which is
> impossible under standard DNSSEC assumptions.
>

None of this has anything to do with a potential hostile parent, not sure
why you are raising that.

But I think it is probably a moot point to discuss any other method of
encoding SVCB in the parent.

There are a lot of other reasons why SVCB in the parent has characteristics
that are not suitable.

   - TTL on the parent side is controlled by the parent, not the child
      - This has operational impacts, particularly if problems occur and a
      roll-back is necessary
   - TTL on the child side is controlled by the child (which is likely to
   be important when rolling out new features, or making changes)
      - TTL can be adjusted up/down as needed for planned maintenance work
   - Frequency of updates for current DS records, is basically "when KSK
   rolls", which is on the order of year(s)
      - Encoding glue via DS, involves updates whose frequency aligns with
      changes to that glue, also typically stable for years at a time
   - Changes to SVCB would require regenerating RRSIGs.
      - Doing that imposes impact to the signing zone (signature frequency
      is typically bound by hardware, and upping the former requires
more of the
      latter)
      - That also presupposes that the proposed frequency can even be
      supported
      - If the signing is done by the child, the cost is borne by the party
      making the changes
      - If the signing is done by the parent, the cost is not borne by the
      party making the changes
   - The SVCB RDATA is not actually authoritative on the parent side (bears
   repeating, this has a lot of implications, including infosec issues)


Also, it is not clear from the discussion thus far, on which record(s)
would have that SVCB record included:

   - The registrant's zone name (delegation from the parent to the DNS
   Operator's server)
   - The DNS Operator's zone name (possibly glue-less XOR possibly having
   in-bailiwick glue required)
   - The Zone serving the name server names (referenced in the NS records
   of the registrant's zone)

The first one would not be reasonable at all, since presumably the
registrant would have the ability to submit SVCB records even if the
registrant did not operate the authoritative DNS server.


>
>>    - This is much stronger than being able to push data over an EPP
>>    channel, which is the mechanism available to a Registrar that polls the
>>    Registrant's domain for CDS records
>>    - EPP does not have a mechanism currently for validation of supplied
>>    DS records
>>
>> I don't understand.  When using CDS, the CDS records are validated by
> DNSSEC from the current DS.  Otherwise, the DS records are authenticated by
> the registrar's usual login procedure.  Either way, any adversary who could
> forge DS records could also forge RRSIGs or any other RR type.
>

This is a "chain of custody/control" thing. If the Registry is not doing
CDS directly, the CDS model has failed to protect the DS update end-to-end.
While another party (Registrar) polling and validating CDS would be
_necessary_, it would not be _sufficient_.

There are only a handful of CCTLDs doing CDS, and I am not aware of any
significant plans beyond those currently.
CDS _by the Registry_ is incompatible with the RRR model, i.e. the gTLD
mechanism controlled by ICANN contracts.
That is highly unlikely to change in a timeframe faster than multiple
years, if ever.

Basically, I don't foresee CDS done by Registries being relevant to any
proposals for securing the glue data.

Securing existing glue (no new data per se, but adding encoding and
signing) is something Registries could do, and pursuing that has potential.

Adding new data on the parent side is likely to be problematic.

Thus, the concept of using DS records to encode _existing_ data to enable
validation, is likely to not be controversial.
It is the difference between "letter of the law" and "intent of the law".
IMHO, at least.

So, TL;DR: CDS isn't going to happen outside of a handful of ccTLDs. DS
encoding would work fine for existing glue. Who does that and how it gets
added to the parent is a (the?) problem that needs to be solved. SVCB (or
similar) in the DNS operators' zones is adequate for downgrade-resistant
TLS.

Also, optimizing for cold cache vs warm cache should be explicitly called
out. It looks to me like "SVCB in parent" is only valuable in the cold
cache scenario. Stats are probably available showing how often queries are
made for DNS operator's zones that indicate a cold cache is being used.
Absent a compelling case for the cold cache, it does not seem to be worth
any effort.

Brian