[TLS] Re: PKI dynamics and trust anchor negotiation

Watson Ladd <watsonbladd@gmail.com> Sat, 08 February 2025 00:23 UTC

Return-Path: <watsonbladd@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 64493C1D6FA6 for <tls@ietfa.amsl.com>; Fri, 7 Feb 2025 16:23:41 -0800 (PST)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -2.109
X-Spam-Level:
X-Spam-Status: No, score=-2.109 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, SPF_HELO_NONE=0.001, SPF_PASS=-0.001, T_SCC_BODY_TEXT_LINE=-0.01] 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 ([50.223.129.194]) by localhost (ietfa.amsl.com [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id kB9crIT2iuGs for <tls@ietfa.amsl.com>; Fri, 7 Feb 2025 16:23:40 -0800 (PST)
Received: from mail-wr1-x431.google.com (mail-wr1-x431.google.com [IPv6:2a00:1450:4864:20::431]) (using TLSv1.3 with cipher TLS_AES_128_GCM_SHA256 (128/128 bits) key-exchange X25519 server-signature ECDSA (P-256) server-digest SHA256) (No client certificate requested) by ietfa.amsl.com (Postfix) with ESMTPS id D4D87C1D620B for <tls@ietf.org>; Fri, 7 Feb 2025 16:23:40 -0800 (PST)
Received: by mail-wr1-x431.google.com with SMTP id ffacd0b85a97d-38dc5b8ed86so918275f8f.1 for <tls@ietf.org>; Fri, 07 Feb 2025 16:23:40 -0800 (PST)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1738974219; x=1739579019; darn=ietf.org; h=content-transfer-encoding:cc:to:subject:message-id:date:from :in-reply-to:references:mime-version:from:to:cc:subject:date :message-id:reply-to; bh=pKvstjUFCnQzX9olrrz5jBFEKO3aoR6KVIb8ZLI6hEQ=; b=h1TTSa3m1hOfp4XwbTUvSpsUL5r8ixd01tYhr3Q5wbEjFImfAsqQ5RKZn6tOdoqMsk s5gk4bfQIQEMSosexpBtwcVmBz0KAw33NIxwoF03JfLIYe3NGsEwykwXmNQDX4FzCY5I SbqtdgkJKycxOYpxC3TIPAnq365o5q5FkHvYJgL/byhLthnzAonH4QPQzENm7Y1tZlk5 oc4RUl/FevIY6N+NgqSVpcJ6e+QufSdEPPt3lByQU4yIb2vVshz1kmBBCyY5IwgKvtzo WqaU9Cq7e7BjVa3kHp0PrBl4gc0atxscVq2R2JgJ4FlXlbRnuM6txUuz/EkpJL0kcNFV 5KWw==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1738974219; x=1739579019; h=content-transfer-encoding:cc:to:subject:message-id:date:from :in-reply-to:references:mime-version:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=pKvstjUFCnQzX9olrrz5jBFEKO3aoR6KVIb8ZLI6hEQ=; b=aPwPnONd8GdH+Z8YIQaIebzgJPGOZTtsQn/KiEVsx+BH3NFqDlystRoc9ArETlTHlD bEIYJzzG04B02N0M5RKK3cJy88zq28epI7pvZVFo0gdH9YVZ1dzFQymqMgMRDRxWBzXV R98olESonSeHdH+FGygq8LPIEW8T6+IwWroSYbdML4+JRJzF0JgXArwGI16Rc0UZA8jZ nSsxj5YHLV3IDiBRFdlvCurmm2NonbmvXZAQtTo3lyw/ZPQ0eW1SwsYJD5u8fsoHee6a krh045KVQZT+dg4Aq6hZ/o/As9ulipxkUf8l/SQKYjExq4zcGMgoLT2V9StHNutlG6sR ecWg==
X-Forwarded-Encrypted: i=1; AJvYcCVtonvqSBIgtY2j9YFqwnB8hES4grOG0Wy/bwbn4/92ZSi9OIFwQQm5CTr+9PB1EUZ4tzM=@ietf.org
X-Gm-Message-State: AOJu0YwVxseVB3fLmvu1nAjYJQKu0kRkh9eeA1orwC7GqUXIlwlvMrp7 er43UIsmxw8sZix5AXcQI8tTBpHfI3DuX5jkoYxIPFVuy4b5kIqd0GYks18Hiq+Lz3+XHqwr7p3 iEAqNQ0x8tY83W49V6ztI/SXrYF0=
X-Gm-Gg: ASbGncswN0CSQNInGkozK2sXiu2EseLv1169QHFUXKhYiEhtOy88MbKeUrTpni2+YfA gHow4EzX+o96tCQ/65GGkKt1Yczu6SeutXF0PcRZsdP326EYZB9WJ7DURZmBbFI1JjaTk1Ua2xF bVQ89KKjCX9Y6OlzAnnkiUKi3pKVc=
X-Google-Smtp-Source: AGHT+IHGFvWkP6u1yWzmN4mm6CmuT0ficPF+LCXKJ5CzGLbGJWyTBoi/xieUTpzZ+kcO6KA+pcgYmVTi/w5gLhIPoEE=
X-Received: by 2002:a5d:558d:0:b0:385:e17a:ce61 with SMTP id ffacd0b85a97d-38dc95c12a9mr3066504f8f.53.1738974218685; Fri, 07 Feb 2025 16:23:38 -0800 (PST)
MIME-Version: 1.0
References: <CAF8qwaANSCodvYKAxSJf1EFnJaXmFAfD+USCg+kRVY9eRa1zow@mail.gmail.com> <CACsn0ckxGKq2pnNrRXqyb1UtHnJHunByrEmr3o=1Y5XrWx4X0g@mail.gmail.com> <CADQzZqteTezp4tfC02voQ2wr1U0WY+2sBrWwEgg-s3AY2ZChnw@mail.gmail.com> <CAF8qwaCkBj1Fq1Ofp29xGatQc_TVMKqEJ=mm7+k+T5O4YiqgwA@mail.gmail.com>
In-Reply-To: <CAF8qwaCkBj1Fq1Ofp29xGatQc_TVMKqEJ=mm7+k+T5O4YiqgwA@mail.gmail.com>
From: Watson Ladd <watsonbladd@gmail.com>
Date: Fri, 07 Feb 2025 16:23:27 -0800
X-Gm-Features: AWEUYZmwBijElyZ_e3XfUPNMdmRAXSPpkOne2X2la7TvU5s8cDIc9VS2kaw5CZ8
Message-ID: <CACsn0cn_gxr-akwj7dS_17ch7x8Xyj6yJfMiKn-01Ns4bVOjRg@mail.gmail.com>
To: David Benjamin <davidben@chromium.org>
Content-Type: text/plain; charset="UTF-8"
Content-Transfer-Encoding: quoted-printable
Message-ID-Hash: KLMJMGIAZQQPIQ5ONIZQJUYC5YOAPIGJ
X-Message-ID-Hash: KLMJMGIAZQQPIQ5ONIZQJUYC5YOAPIGJ
X-MailFrom: watsonbladd@gmail.com
X-Mailman-Rule-Misses: dmarc-mitigation; no-senders; approved; emergency; loop; banned-address; member-moderation; header-match-tls.ietf.org-0; nonmember-moderation; administrivia; implicit-dest; max-recipients; max-size; news-moderation; no-subject; digests; suspicious-header
CC: Mike Shaver <mike.shaver@gmail.com>, "<tls@ietf.org>" <tls@ietf.org>
X-Mailman-Version: 3.3.9rc6
Precedence: list
Subject: [TLS] Re: PKI dynamics and trust anchor negotiation
List-Id: "This is the mailing list for the Transport Layer Security working group of the IETF." <tls.ietf.org>
Archived-At: <https://mailarchive.ietf.org/arch/msg/tls/Eph9CpHrlqrL_QQzmp4EnYq6Qvs>
List-Archive: <https://mailarchive.ietf.org/arch/browse/tls>
List-Help: <mailto:tls-request@ietf.org?subject=help>
List-Owner: <mailto:tls-owner@ietf.org>
List-Post: <mailto:tls@ietf.org>
List-Subscribe: <mailto:tls-join@ietf.org>
List-Unsubscribe: <mailto:tls-leave@ietf.org>

On Fri, Feb 7, 2025 at 9:17 AM David Benjamin <davidben@chromium.org> wrote:
>
> On Fri, Feb 7, 2025 at 9:44 AM Mike Shaver <mike.shaver@gmail.com> wrote:
>>
>> Hi Watson,
>>
>> On Thu, Feb 6, 2025 at 8:10 PM Watson Ladd <watsonbladd@gmail.com> wrote:
>>>
>>> A negotiation where what is advertised is an inherently opaque
>>> pointer, and where each side must maintain an idea of what that could
>>> mean, does not have this property. Servers have to explicitly act to
>>> support the new identifier by getting a configuration that includes
>>> it. Whether or not this is indirectly away as part of ACME doesn't
>>> really change the equation. New clients can't count on server support,
>>> unless they advertise an already existing value. There's been various
>>> ways to express deltas to try to solve this, but they all involve
>>> paying a penalty for deviation.
>>>
>>> The dynamic I'm worried about most then isn't fracturing: as you point
>>> out there are some countervailing forces where people want easy
>>> support. Rather it's that we artificially drive up the price of
>>> picking different CAs than the dominant implementation.
>>
>>
>> I very much share the concerns you've articulated here: increased barriers to entry both for new CAs and for new clients which have different root-management policies than the existing dominant implementation, and outsized penalties for differing from a "well-known set" as might happen from having tighter requirements on CA operation over time. The opaque token seems like it could lead to the properties that you (and I) wish to avoid, but when expressing my support for the group taking up the draft, I felt that the specific identifier form for trust anchors was still mutable, and therefore that it wasn't a barrier to draft adoption.
>>
>> If I have misunderstood, and identifiers must inherently be opaque in that way for all forms of trust anchors negotiation, then I appreciate the correction!
>
>
> Hi Mike and Watson,
>
> Hmm, well, if we have one concern that (against all realities of how PKIs work) this will make it too easy for clients to pick different CAs, and another concern that this will make it too hard, clearly we've struck a happy medium and all is well! ;-D
>
> More seriously, I completely agree that we need to avoid this. As valuable as the existing CAs and root programs are, as much as I hope they continue to be valuable, I think any design in this space which advantages and grandfathers in existing players is simply bad for the internet. We are dealing with inherently subjective delegations of trust here, and such systems *need* room to change as trust evolves.
>
> When Devon, Bob, and I worked on these initial drafts for TAI (and the previous TE design), the three of us spent a lot of time thinking about exactly this and trying to make sure we avoided such effects. So if you all think we didn't quite get it right, that's very much something I care about and would want to tweak accordingly---I mean, getting eyes on this beyond the three of us is why I care about bringing the work here and having the working group adopt and tweak it, despite the year's worth of aspersions against my motivations that it has so tiringly engendered.
>
> To that end, I don't think this design causes those problems. I'll explain my thinking, and perhaps you all can poke holes in it if you think I've missed something. (This is also something we can adjust post-adoption. Procedurally, modifying things with WG consensus is very hard before adoption–I would know, I've been trying all year!)
>
> First, the identifiers in TAI are not meant to be some opaque thing, representing some coupled mishmash of parameters. They represent the trust anchor[1] and only the trust anchor. I think, if we had better trust anchor negotiation, things like signature_algorithms_cert might have been unnecessary because we could have just negotiated trust anchors, in a world where we established a new root when adding a new incompatible sigalg anyway. (And perhaps we should have? Have one joint and keep it well-oiled and all.) But the extension itself doesn't take any opinion on this. It expresses trust anchors, and if there are other TLS extensions that apply other constraints, your server software is expected to continue to process those as it always would.

Silly clarification: the TAI identifier is just a compact identifier
for the root cert, like (making it up) a 4 byte identifier? So the
client sends the entire list of root certs supported, so about 100, so
400 bytes?

In that case I think you can inject it into an end-entity cert on
issuance, and into the root representations in the trust store. Where
this doesn't work out well is on cross signs where the cert can root
to multiple places/when more than one cert is needed to cover and the
config only has one, but this would solve a bunch of the issues for
command line programs where the trust store format is a bag of certs
on disk. It could also work for cross signs since the intermediates
used are known by the CA.

Sincerely,
Watson