[TLS] Re: PKI dynamics and trust anchor negotiation
David Benjamin <davidben@chromium.org> Sun, 09 February 2025 00:56 UTC
Return-Path: <davidben@google.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 0A3A5C1D4A92 for <tls@ietfa.amsl.com>; Sat, 8 Feb 2025 16:56:11 -0800 (PST)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -9.405
X-Spam-Level:
X-Spam-Status: No, score=-9.405 tagged_above=-999 required=5 tests=[BAYES_00=-1.9, DKIMWL_WL_HIGH=-0.148, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, HEADER_FROM_DIFFERENT_DOMAINS=0.25, HTML_MESSAGE=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, USER_IN_DEF_SPF_WL=-7.5] autolearn=ham autolearn_force=no
Authentication-Results: ietfa.amsl.com (amavisd-new); dkim=pass (1024-bit key) header.d=chromium.org
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 uEHN-Z0dYfxN for <tls@ietfa.amsl.com>; Sat, 8 Feb 2025 16:56:07 -0800 (PST)
Received: from mail-ed1-x532.google.com (mail-ed1-x532.google.com [IPv6:2a00:1450:4864:20::532]) (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 05743C1D4A8E for <tls@ietf.org>; Sat, 8 Feb 2025 16:56:06 -0800 (PST)
Received: by mail-ed1-x532.google.com with SMTP id 4fb4d7f45d1cf-5de56ff9851so2466925a12.2 for <tls@ietf.org>; Sat, 08 Feb 2025 16:56:06 -0800 (PST)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=chromium.org; s=google; t=1739062565; x=1739667365; darn=ietf.org; h=cc:to:subject:message-id:date:from:in-reply-to:references :mime-version:from:to:cc:subject:date:message-id:reply-to; bh=fbz7NyVWrPQ0acWTU+WaOYIqXwBAeNuuCnX6RbJ5sAI=; b=gw3iR+EFVDY7o+FcU/9yssNfC1b4vPDK8C9QfitSeYnSCObXnbYcTDNGNuxmCTi2pi E7uGYhpTHjB95EZk2tRnrqw4IczoFCcKFcFM+RjEK0k4jPXLAHPhb6avKGHeNuzo/SCp xmY0lU4moOe7wjHgvVlisPuv56fknFUiI9Jo8=
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1739062565; x=1739667365; h=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=fbz7NyVWrPQ0acWTU+WaOYIqXwBAeNuuCnX6RbJ5sAI=; b=TXLFK0xqsYD/xFXDpbd9zaypaxxwGLU4QhBmyJ4jsYj9yWEvrcOqgp3TOqE8pujmFM Fex0gtPmHN8GwMr5Lz4RhqzDCzt2C5Bfta3Ysv1KLQy6NEPp+nXWCjJbP66bmaeiUg79 i/OEvNFOBi7pvHImbeDcl3DXPvaZ8C/WmuRYYidS5XEhM2pnoXGyBvXyBqwd/CDrYLb/ tzsXGw4IgUNuByudgID8mo55uqPbwPSYpJfLNCWEP7tL5BIj1AudTang/epGx1gDpNV7 krkAM6n3N0twUPce8fBNWCPDG8ANv4FgTz02s+raFacX5CNyzo8ymWa40udq7bs8HyzA 2RyQ==
X-Forwarded-Encrypted: i=1; AJvYcCXrSlUWbvdxhj3OQcFRv20LW3IRbHbDxMBndPAmZNEVnl2u/U3Rg3DPG/R3FjiG1WI4qjc=@ietf.org
X-Gm-Message-State: AOJu0YwmvG19IeqHGtTarNH+tLjUeOVevq5ltT7S4MPlV98hTTqQUvPY IgVMcFjYue+3ZbiXiDGKTF3E2DqsMP1BjtXX6au9TjkeYxhaYzXJFz18YQ3n+9aWtWB5fQ6lUy/ YXsPJVXPxlXjG81HrMlKhrDToJty8g+YSnEA=
X-Gm-Gg: ASbGnctRtnoWXyyh2NyX7UpvfxCAidZaD2yDgsOhQiw7w6ipf4m+UA2z6lhYSlWb8dt 8pwEfa0RWckvf4VTrxybfsD4ep+vsS1obYZvTBuesylrG1f02q68OdTZnYRiEoa0aLr4KkYQ=
X-Google-Smtp-Source: AGHT+IFZTzlxUeZ1KCcQxdA3G7R8LzLRglIWxKSNair5lRECvfJO/1ghf/njXqlNoLUu6NEfgWnhPAbDN3oVV3LKs8Y=
X-Received: by 2002:a05:6402:5386:b0:5dc:1173:bfa3 with SMTP id 4fb4d7f45d1cf-5de45085cbcmr9548616a12.29.1739062564804; Sat, 08 Feb 2025 16:56:04 -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> <CACsn0cn_gxr-akwj7dS_17ch7x8Xyj6yJfMiKn-01Ns4bVOjRg@mail.gmail.com> <CAMjbhoVWY=pv1jeHLzC9R-+KOyZSe1nwOe7cEns7MnZB89eAQg@mail.gmail.com> <CACf5n78QBZE967EJenEOu6T=yyt1QmVEob_joiBC-gDYHDA8=w@mail.gmail.com> <CACsn0cm5TLmD1kku+g4FUdZ7=d5L61TcoH-wCxToTBhb4rzMLw@mail.gmail.com>
In-Reply-To: <CACsn0cm5TLmD1kku+g4FUdZ7=d5L61TcoH-wCxToTBhb4rzMLw@mail.gmail.com>
From: David Benjamin <davidben@chromium.org>
Date: Sat, 08 Feb 2025 19:55:48 -0500
X-Gm-Features: AWEUYZlYoBTQ30XYc0oTcA_f7M78ljyx751ehRaBkDa9wP9q9dI27XKWOrMjWKs
Message-ID: <CAF8qwaA2t4UF8yHaVQaaTgoEEqsZPZbApps8XpH3hMtkW9nTBw@mail.gmail.com>
To: Watson Ladd <watsonbladd@gmail.com>
Content-Type: multipart/alternative; boundary="0000000000006b932c062dab0e73"
Message-ID-Hash: 6OBMYGWJD5PMJALBG4I7FJ3E56C6WC26
X-Message-ID-Hash: 6OBMYGWJD5PMJALBG4I7FJ3E56C6WC26
X-MailFrom: davidben@google.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: Bas Westerbaan <bas=40cloudflare.com@dmarc.ietf.org>, 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/fPch8j_aTDu5BicdioKEV7Y3XII>
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>
Aha, that sounds like the disconnect! One trust anchor identifier indeed only represents a one trust anchor. And, yeah, absolutely agreed that's a significant difference! I'm guessing this mixup came from the talk of user agent strings in the problem-space-focused interm? TBH, I was quite perplexed by that. It seemed to be debating some imagined non-existent design. I tried to correct that confusion at the meeting, but clearly I didn't succeed, so let's see if I can do a better job this time and provide some background: Whether one ID is a single trust anchor or a set of them is actually the core difference between this Trust Anchor IDs design and the older Trust Expressions design. The single-anchor Trust Anchor IDs idea is actually older (you can see hints of it in earlier drafts of Merkle Tree Certificates), but sending them all at O(100) * O(5) is still a lot, and the DNS dependency was not very attractive. And so we tried a "trust anchor set" design. To be viable, the "trust anchor set" design needed to address different challenges, notably *exactly* this problem! That is the actual meaning behind the oft-misrepresented sound bite about allowing for new root programs to be created. As you correctly point out, a "trust anchor set" design would risk ossifying things on the root program side, so we wanted to be sure we mitigated this. That iteration became Trust Expressions, named after the goofy excluded_labels construction in the mitigations. But, in doing so, the result was pretty complex. I still suspect it's possible to solve that, but it's certainly tricky. And since the complexity was getting in the way of communicating the problem, we took another look at the original Trust Anchor IDs idea. This time with the realization that, even if the DNS dependency is a drag today, we'll need to solve HTTPS/SVCB automation for so many other things anyway (ECH, key-share-prediction, QUIC support). And wkech was a nice existence proof that this is surmountable. We also realized the retry flow provides some wiggle room before DNS works well. In Vancouver, the WG seemed to agree, so we changed our focus. And now there's Bas's cool encoding scheme as a third data point, which I'm very very eager to explore with you all. (I may have made peace with the DNS dependency, but I still don't like it!) With all the interesting data points here, I'm optimistic that we can find a good solution in this WG. Some thoughts on your other comments: > 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 [...] Hmm, if I'm understanding you right, this sounds like the issuerTrustAnchorID idea I sketched in my previous email? Like I said, we could do if that's what the WG prefers! I just personally find CertificatePropertyList quite compelling, so it seemed worth leading with it pre-adoption. (This process has revealed a disconnect in how people treat individual drafts. For tricky trade-offs, I personally think it's most collaborative to use them as starting points, communicating important problems and interesting ideas, not finished all-or-nothing designs. That way navigating the solution can be done within the working group.) > A DNS based hint of what indication would be useful to send solves > some problems but not others. It doesn't really help servers determine > what the universe of clients is supporting and isn't that they see > without some more information. Ah yeah, this is the usual asymmetry with all TLS parameter negotiation. The side that offers a list (usually the client) only learns the final selection, while the side that makes a selection (usually the server) sees the peer's full preferences. The DNS design partially inverts certificate selection, so it's server-offer / client-select. This has a lot of nice properties (and a glaring DNS-shaped annoyance), but you're right that it flips the information available. If we stick with this aspect of the design, I think this can be managed with similar techniques as with other parameters. We do manage to reason about what cipher suites to offer in TLS clients, even though clients don't know server prefs. For example, a server that wants to answer "do I still need this certificate" can put the certificate at the end of its preference list. It can then *broadly* assume that clients picking it do so because the others won't work, and then monitor which ones are used in practice. It could even strengthen the assumption by omitting the certificate from DNS and only include it in the EncryptedExtensions retry flow, which is analogous to how clients sometimes put doomed ciphers behind a fallback[1]. (Or maybe we do something else and this is moot.) David [1] https://groups.google.com/a/chromium.org/g/security-dev/c/S9h47qPlODw/m/s_LS3FF2BQAJ On Sat, Feb 8, 2025 at 1:49 PM Watson Ladd <watsonbladd@gmail.com> wrote: > On Sat, Feb 8, 2025 at 9:44 AM David Adrian <davadria@umich.edu> wrote: > > > > To be clear, the client does NOT send its full list of trust anchors by > default. There is a server-side DNS signaling mechanism that allows the > client to pick a single anchor without sending the full set. > > > > The feedback at IETF Vancouver was to move away from a client signals, > server selects (via trust store name and version) to a server signals, > client selects (via OIDs in DNS) > > Somewhat of a side note: > > I was under the (possible mis)-impression that the trust anchor > indicator was originally an indicator of the complete set owned by the > client (which I think is what trust store name and version meant), not > one per root, vs. compressing the already existing > authorities_extension without needing a shared dictionary (which trust > anchor identifiers now does). > > While this might seem like a small difference it has a rather large > impact on the impact of clients that CAs don't care about to > implement. > > Separately: > > A DNS based hint of what indication would be useful to send solves > some problems but not others. It doesn't really help servers determine > what the universe of clients is supporting and isn't that they see > without some more information. > > Sincerely, > Watson > > > > > > On Sat, Feb 8, 2025 at 3:12 AM Bas Westerbaan <bas= > 40cloudflare.com@dmarc.ietf.org> wrote: > >>> > >>> 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. > >> > >> > >> Yeah, this is an interesting alternative design. You can reduce the > size quite a bit more with simple compression techniques. See > >> > >> https://github.com/davidben/tls-trust-expressions/issues/64 > >> https://github.com/bwesterb/go-ncrlite > >> > >> > >>> > >>> 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 > >>> > >>> _______________________________________________ > >>> TLS mailing list -- tls@ietf.org > >>> To unsubscribe send an email to tls-leave@ietf.org > >> > >> _______________________________________________ > >> TLS mailing list -- tls@ietf.org > >> To unsubscribe send an email to tls-leave@ietf.org > > > > -- > Astra mortemque praestare gradatim > > _______________________________________________ > TLS mailing list -- tls@ietf.org > To unsubscribe send an email to tls-leave@ietf.org >
- [TLS] PKI dynamics and trust anchor negotiation David Benjamin
- [TLS] Re: PKI dynamics and trust anchor negotiati… Salz, Rich
- [TLS] Re: PKI dynamics and trust anchor negotiati… David Benjamin
- [TLS] Re: PKI dynamics and trust anchor negotiati… Watson Ladd
- [TLS] Re: PKI dynamics and trust anchor negotiati… Mike Shaver
- [TLS] Re: PKI dynamics and trust anchor negotiati… Dennis Jackson
- [TLS] Re: PKI dynamics and trust anchor negotiati… Bob Beck
- [TLS] Re: PKI dynamics and trust anchor negotiati… David Benjamin
- [TLS] Re: PKI dynamics and trust anchor negotiati… David Benjamin
- [TLS] Re: PKI dynamics and trust anchor negotiati… Watson Ladd
- [TLS] Re: PKI dynamics and trust anchor negotiati… Bas Westerbaan
- [TLS] Re: PKI dynamics and trust anchor negotiati… David Adrian
- [TLS] Re: PKI dynamics and trust anchor negotiati… Watson Ladd
- [TLS] Re: PKI dynamics and trust anchor negotiati… David Benjamin