Re: [TLS] New Version Notification for draft-kampanakis-tls-scas-latest-00.txt (ICA Supression)

Ryan Sleevi <ryan-ietftls@sleevi.com> Thu, 17 February 2022 03:36 UTC

Return-Path: <ryan.sleevi@gmail.com>
X-Original-To: tls@ietfa.amsl.com
Delivered-To: tls@ietfa.amsl.com
Received: from localhost (localhost [127.0.0.1]) by ietfa.amsl.com (Postfix) with ESMTP id 96C593A142C for <tls@ietfa.amsl.com>; Wed, 16 Feb 2022 19:36:40 -0800 (PST)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -6.399
X-Spam-Level:
X-Spam-Status: No, score=-6.399 tagged_above=-999 required=5 tests=[BAYES_00=-1.9, FREEMAIL_FORGED_FROMDOMAIN=0.25, FREEMAIL_FROM=0.001, HEADER_FROM_DIFFERENT_DOMAINS=0.25, HTML_MESSAGE=0.001, RCVD_IN_DNSWL_HI=-5, RCVD_IN_MSPIKE_H2=-0.001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001] autolearn=ham autolearn_force=no
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 yzyVNzFDvMij for <tls@ietfa.amsl.com>; Wed, 16 Feb 2022 19:36:38 -0800 (PST)
Received: from mail-vs1-f49.google.com (mail-vs1-f49.google.com [209.85.217.49]) (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 C33DA3A1429 for <tls@ietf.org>; Wed, 16 Feb 2022 19:36:37 -0800 (PST)
Received: by mail-vs1-f49.google.com with SMTP id i27so4763867vsr.10 for <tls@ietf.org>; Wed, 16 Feb 2022 19:36:37 -0800 (PST)
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:mime-version:references:in-reply-to:from:date :message-id:subject:to:cc; bh=evJfUxoXJTsogZ+mZ1RPDpJXmCfl8+bybW5fv3kUByo=; b=gl1r1UiPe/by/+z3jatagg9x+hqYYhAbe1FHrB+VXGLMWMEa21ct+RTm5ZR47lKOI/ GpCqaI20JgVjFdBkQR4jiIqY4Wo0g/DtQDpCOEJcNfCyO4ayLfa8Fo68CaN7ScqeKr+7 r4nbkqKQFfAm2DTTZ1QZz/AQ2YAmLf7uHmwrD/DUp4pv4i9Et8fOzIt+D9tL8BnoHFxM ODoPY7CgDlVLIl1b5nStifVtewLJL2tntH2d257YF4Ybdh3l4Ye4eu284FTVn1qHDteC BYbttLe4w0UnePb5qxJb/qgYgA/cLsP/HkAIAKyHhE7Q8reNCUHbbH6eCkMV3YB9QahE XOpA==
X-Gm-Message-State: AOAM531tvrl9SpokOszElmKk+OPzmg/O3h2h9YPFpip/s9Z+Ryx8CHn1 ZqGOc+TrdScpati38oqWF4Ytja9JUSc=
X-Google-Smtp-Source: ABdhPJxHRlOmlnfvYDrhJaAwdBjqjwLJgPASycefl6pYObw6yooGP+Uz+LN4U9126JnBMIVyx/oB0A==
X-Received: by 2002:a05:6102:c90:b0:30e:300:4b30 with SMTP id f16-20020a0561020c9000b0030e03004b30mr414300vst.25.1645068996276; Wed, 16 Feb 2022 19:36:36 -0800 (PST)
Received: from mail-vk1-f171.google.com (mail-vk1-f171.google.com. [209.85.221.171]) by smtp.gmail.com with ESMTPSA id m7sm278521vsl.20.2022.02.16.19.36.36 for <tls@ietf.org> (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128); Wed, 16 Feb 2022 19:36:36 -0800 (PST)
Received: by mail-vk1-f171.google.com with SMTP id w128so1651467vkd.3 for <tls@ietf.org>; Wed, 16 Feb 2022 19:36:36 -0800 (PST)
X-Received: by 2002:a05:6122:a22:b0:32c:bcba:9dc9 with SMTP id 34-20020a0561220a2200b0032cbcba9dc9mr312347vkn.21.1645068995754; Wed, 16 Feb 2022 19:36:35 -0800 (PST)
MIME-Version: 1.0
References: <83f923185c3741ccb668826f5b11b0c3@EX13D01ANC003.ant.amazon.com> <CAErg=HFamywTBGriKsVd4eB=yo46Mz2JcKnnjHY8s36f12qEFg@mail.gmail.com> <180543c01fdf439cbdfd8214ec75eb76@EX13D01ANC003.ant.amazon.com>
In-Reply-To: <180543c01fdf439cbdfd8214ec75eb76@EX13D01ANC003.ant.amazon.com>
From: Ryan Sleevi <ryan-ietftls@sleevi.com>
Date: Wed, 16 Feb 2022 22:36:23 -0500
X-Gmail-Original-Message-ID: <CAErg=HGufDVCKN+PqPQ80MoVobK0N7ocVjLoDaAyqq5+Bma6TQ@mail.gmail.com>
Message-ID: <CAErg=HGufDVCKN+PqPQ80MoVobK0N7ocVjLoDaAyqq5+Bma6TQ@mail.gmail.com>
To: "Kampanakis, Panos" <kpanos@amazon.com>
Cc: Ryan Sleevi <ryan-ietftls@sleevi.com>, "Bytheway, Cameron" <bythewc@amazon.com>, "tls@ietf.org" <tls@ietf.org>
Content-Type: multipart/alternative; boundary="0000000000001f7f4f05d82e795c"
Archived-At: <https://mailarchive.ietf.org/arch/msg/tls/Zp4GfjXaCrtmVwfVEst-iD_-Njw>
Subject: Re: [TLS] New Version Notification for draft-kampanakis-tls-scas-latest-00.txt (ICA Supression)
X-BeenThere: tls@ietf.org
X-Mailman-Version: 2.1.29
Precedence: list
List-Id: "This is the mailing list for the Transport Layer Security working group of the IETF." <tls.ietf.org>
List-Unsubscribe: <https://www.ietf.org/mailman/options/tls>, <mailto:tls-request@ietf.org?subject=unsubscribe>
List-Archive: <https://mailarchive.ietf.org/arch/browse/tls/>
List-Post: <mailto:tls@ietf.org>
List-Help: <mailto:tls-request@ietf.org?subject=help>
List-Subscribe: <https://www.ietf.org/mailman/listinfo/tls>, <mailto:tls-request@ietf.org?subject=subscribe>
X-List-Received-Date: Thu, 17 Feb 2022 03:36:41 -0000

On Wed, Feb 16, 2022 at 2:41 PM Kampanakis, Panos <kpanos@amazon.com> wrote:

> Some responses below (sorry long email):
>

No worries, I think this invites some long responses, in part, because it's
complex.


> > how is that functionally different than simply saying "Intermediate 2"
> is the Trust Anchor, using the computed outputs (RFC 5280, Section 6.1.6)
> for Intermediate 2 as the inputs for RFC 5280, 6.1.1's algorithm for
> validating End Entity? What value does "Intermediate 1", or "Root 1", serve
> from a protocol or conceptual layer?
>
>
>
> Agreed, it is not different. But I believe adding Intermediates to the
> trust bundle is less straightforward to be deployed everywhere especially
> when expanding the scope to many more CAs. Note that the draft does not
> consider the ICA list a trust list. It is just a list to build the chain.
> There is some text in the draft trying to convey that.
>

I don't think I communicated this well then. Although this is trying to do
something simple (in as much as treating the TLS and PKI layers distinct),
I think it's missing that it's shifting a significant portion of that
problem to PKI layer (re: synchronizing those ICAs), and also introducing
complexity to the TLS layer (re: fallbacks and retries). If the problem
statement is primarily oriented around PQ, then perhaps it's better to
explore a solution that tries to keep both layers simple.

Basically, it needs to be a little crisper what the client capabilities
are. Presently, it handwaves them as out-of-scope, but as a consequence,
makes it difficult to justify the assumptions/complexity that they hide.
Does the client have durable storage (e.g. does the IoT device need
rewritable media and not just ROM)? Does the client have a reliable (within
TBD3) out-of-band update mechanism for metadata such as intermediates? Is
the TLS implementation expected to be able to re-establish a connection
(which many TLS APIs are not themselves responsible for, or at least,
abstract that away)? These all affect the shape of the present design, but
also any simplifications.


> But although the directory option is the most straightforward option,
> there is a dynamic cache building element too. I have experimented with
> this a bit; someone may not even need a full ICA list. It could build its
> cache dynamically as it starts connecting to peers.
>

As you captured later, this is (effectively) reintroducing TLS fallback. We
worked very hard to try to minimize that, and while there are retries (ala
HRR), they're integrated into the connection state machine. Needing to
re-establish a new connection, sans flag, is a very big failure mode here,
and one that definitely influences the shape of API design.

Equally, this introduces some of the privacy risks that the EDNOTE was
trying to dodge. It seems like the choice to reintroduce "connection
re-establishment" logic would have bearing on the security and privacy
assumptions here, and is worth making sure it's captured.

Alternatively, if we take out this on-demand discovery piece, then we're
effectively saying "Clients need a reliable update channel for this to
work". Which may be a reasonable thing, but equally, it opens up the realm
for simplifications, as discussed above and below here.


> <snip> We just want the peer to declare “I somehow know my peer ICAs”.
>

Right, the criticism in the past is that it's not "I somehow know", but
rather, "I *think* I know my peer's CAs", with some probability of being
wrong. The what to do when things are wrong is important, and realizing
that different peers may be more or less wrong (e.g. depending on update
cadences) has a significant impact on deployability.


>
> > I'm not suggesting online signing by roots, but rather, that this
> extension firmly rejects the "trust roots, discover intermediates" model of
> 1996, so why shouldn't we lean into this more for PQ?
>
>
>
> Good point. I think the challenge is the significant scope change as you
> are suggesting because now you are supposed to vet and somehow trust many
> more CAs that don’t have their key offline like roots do. Generally,
> significant changes like that scare me. Also let’s not forget the
> challenges of having the TLS client say “if PQ, do PKI differently, else
> keep the Netscape model”.
>

So, two responses.

- In your responses to Ilari, and your original message, there seems to be
some assumption that Mozilla policy is representative and reflective of
what's possible here (c.f. disclosures). As much as I love and have
actively contributed to that policy, I'm also uncomfortable with using it
as a stand-in for the Web PKI or generalizations. That said, because you
were willing to lean on it regarding constrained intermediates, then it
should be clear that the "vet and trust more CAs" has already been a part
of the policy for some time. Every intermediate is subjected to the same
policies, the purpose of disclosure of said intermediates was intentionally
to support that vetting first and foremost, and any new intermediates are
equally subjected to that vetting. So if your response was meant to capture
"This is difficult", then it's overlooking "This is already being
done/required".

- This model is, explicitly, proposing to "do PKI differently", but perhaps
in ways that are subtle. This introduces, albeit intentionally does not
specify, the problem of determining what exactly those intermediates are,
and in a way (within the TBD3 timeframe) of synchronizing those widely to
clients. Equally, it's being proposed precisely because "For PQ, we need to
do PKI differently". So it doesn't seem an unreasonable step here.

As I said, I don't disagree with the goals, but I think one of the concerns
is that this tries a patch solution, but does so in ways that introduces
problematic dependencies/assumptions, and my previous reply was trying to
tease those out a little so that they're explicit as to what was considered
and/or rejected.

For example, the concern of "trust many more CAs that don't have their key
offline like roots do" misses that in the absence of a functioning
revocation system, we already trust those intermediates just as much as we
trust those roots, and with the same risks. This is why browsers, at least,
have developed systems of "revocation suppression" - by having the client
already know about revocation of intermediates apriori (CRLSets, Valid,
OneCRL/CRLLite, etc). In order for intermediate suppression to be
functionally viable, you need that out-of-band delivery mechanism (and yes,
I'm counting build-as-you-go as OOB). So the distinction here of
online/offline is, in a model that assumes a reliable mechanism to discover
intermediates, one without a difference.

Unless we're willing to take those very large handshakes to also have
stapled OCSP responses, then whether it's through CRL fetching-and-batching
(which is, in many ways, an OOB delivery mechanism) or some vendor-supplied
mechanism like browsers', we're still saying "Clients need some reliable
way to fetch an external resource to update". And, if we're willing to say
that, then we introduce the opportunity for a lot of simplification here.


> There have been more proposals like KEMTLS, or using different algorithm
> (smaller signature, bigger public key) in the SCT, OCSP staple or Root CA,
> or using CRLite and saving one extra OCSP signature. These do trim the data
> as well. But they also introduce significant changes or may not be viable
> depending on the standardized options. So, we consider the ICA suppression
> option as relatively straightforward, low hanging fruit.
>

I'm not sure I would agree that a 3-8 MB handshake to preserve the status
quo is exactly low hanging fruit. This is where looking to see what can be
done to remove the necessity of those SCTs and OCSPs, rather than trying to
patch them into a PQ world. The viability of CT itself becomes more suspect
in a world of ginormous signatures, if only because monitors/auditors lose
the ability to effectively monitor, even if we had perfectly-efficient
in-band TLS delivery such as via caching/elision.

>