[TLS] Re: Implicit ECH Config for TLS 1.3 – addressing public_name fingerprinting

Stephen Farrell <stephen.farrell@cs.tcd.ie> Sun, 02 March 2025 20:48 UTC

Return-Path: <stephen.farrell@cs.tcd.ie>
X-Original-To: tls@mail2.ietf.org
Delivered-To: tls@mail2.ietf.org
Received: from localhost (localhost [127.0.0.1]) by mail2.ietf.org (Postfix) with ESMTP id CD6B7507C93 for <tls@mail2.ietf.org>; Sun, 2 Mar 2025 12:48:39 -0800 (PST)
X-Virus-Scanned: amavisd-new at ietf.org
X-Spam-Flag: NO
X-Spam-Score: -1.998
X-Spam-Level:
X-Spam-Status: No, score=-1.998 tagged_above=-999 required=5 tests=[BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, RCVD_IN_MSPIKE_H2=0.001, RCVD_IN_VALIDITY_RPBL_BLOCKED=0.001, RCVD_IN_VALIDITY_SAFE_BLOCKED=0.001, SPF_PASS=-0.001] autolearn=ham autolearn_force=no
Authentication-Results: mail2.ietf.org (amavisd-new); dkim=pass (2048-bit key) header.d=cs.tcd.ie
Received: from mail2.ietf.org ([166.84.6.31]) by localhost (mail2.ietf.org [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id CtuMlodQeolL for <tls@mail2.ietf.org>; Sun, 2 Mar 2025 12:48:37 -0800 (PST)
Received: from DUZPR83CU001.outbound.protection.outlook.com (mail-northeuropeazon11023083.outbound.protection.outlook.com [52.101.67.83]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange ECDHE (P-384) server-signature ECDSA (P-256) server-digest SHA256) (No client certificate requested) by mail2.ietf.org (Postfix) with ESMTPS id F32EB507C5D for <TLS@ietf.org>; Sun, 2 Mar 2025 12:48:36 -0800 (PST)
ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=r6G2L4oLCDveL40144piocHy5LG7CKzLGQP/bbbqwma29EaRgo3eYbHqL8r2pDbWQMOkBpWu3+Na483sOcYbN3MuLF2YXZSvFRjoeRAHnA9+pLyt0MrRx2E+21PB8fzumSGC9hT9vLjx0+gd2IOjCP+hNgE4WvCiPNLjb+TFoVFycr9ScYFxsAFEC1ODpDqTeCUhsOjQvCvDsVsW06Jjvd6xuizZiXzi79TPQfPFX3LI6TP5BhZ+zpO7CVgSXas8+4eZm56aPL+w1alQvoKAWGtIGh6syxPIK4TgEfs3SgixoO6bzeGnKdg/lUrPDEGdq9JH7821kbICq9vdDQuB2g==
ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector10001; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1; bh=MhJOKjPbOd6OJEIw3BJKGPDwEW0tXNtP0Mfn3RnUDf0=; b=nBht7Mmhq12OLaqrUld5ZfM9ScgoA0PkiJeIlRx7lpO/XjQU0sWLlcnnMeByhwwprUBBhfDAlnX0EpZtob4X//zxIy4ZvQjbK2swij77zfZ0sMXta1hA1CHTc43Vg6l0X/Fi4ZPhlEKQ/LzZav25AkA0w2BSFLopdrVJ8RrJhj1tqYfGHWxH4/PQcLx2oz+b87N/BKtkT2BQIsFnB1MsOtHpXhN0CZibvObAog85fReV8wp2E1I8u1FQXxWqbYRol+4TGJ7PtIapvf2RJbY6aEv8NSSPVvO6MHQDDDmCGD2FUAwxbGN5muBCaFJgAKBb+sAGYSo2PBfMleQIBh0vlA==
ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=cs.tcd.ie; dmarc=pass action=none header.from=cs.tcd.ie; dkim=pass header.d=cs.tcd.ie; arc=none
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=cs.tcd.ie; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=MhJOKjPbOd6OJEIw3BJKGPDwEW0tXNtP0Mfn3RnUDf0=; b=GUSOyBO3/cX9sBAhUuePQFeY0Ak7mY4EYZxCvbFmegfAVwkwE+8MiDEY2C21uYeYM3haxUZr+qi8bkyTd3jFveLOwrcZmYjCapF5bNEOihwTOL1eWqXur/xKOo1mIShLAKolkkQGkFiYgxUHv317mpUn7egVsetnvjS9nQRZw8DDDjtVNeGvx016mxLJoL/xg/IAljDfkrDnax/9rlHlaVezfsCV+GMiJXQbUBq2Je6mgWy5RK8M0U08n/rAMgjzkV5OaSZDeP6w4dUlmb1CJ+Cl+/1OTBvHJ/ALh4PK/ZuftAXQPfChiH85mR/9A7KW673rszw1yQPumW3dDSyfSA==
Authentication-Results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=cs.tcd.ie;
Received: from DB8PR02MB5946.eurprd02.prod.outlook.com (2603:10a6:10:11c::16) by AS8PR02MB9912.eurprd02.prod.outlook.com (2603:10a6:20b:617::7) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.8489.26; Sun, 2 Mar 2025 20:48:33 +0000
Received: from DB8PR02MB5946.eurprd02.prod.outlook.com ([fe80::e0d3:772e:a68d:d54a]) by DB8PR02MB5946.eurprd02.prod.outlook.com ([fe80::e0d3:772e:a68d:d54a%3]) with mapi id 15.20.8489.025; Sun, 2 Mar 2025 20:48:33 +0000
Message-ID: <f9b1c23d-0f40-4822-a421-e8cc067fbfd5@cs.tcd.ie>
Date: Sun, 02 Mar 2025 20:48:30 +0000
User-Agent: Mozilla Thunderbird
To: Nick Sullivan <nicholas.sullivan@gmail.com>, "tls@ietf.org" <TLS@ietf.org>
References: <CAOjisRzBNG2KdAZXssnR9Ura9HuAUKxOH+VLCAE5B9MfYyeT2A@mail.gmail.com> <CAOjisRx9vuroH8-q1tgTPWNnTWQ6i+0Vb=VBTv77j7-hEbHHSw@mail.gmail.com>
Content-Language: en-US
From: Stephen Farrell <stephen.farrell@cs.tcd.ie>
Autocrypt: addr=stephen.farrell@cs.tcd.ie; keydata= xjMEY9GzphYJKwYBBAHaRw8BAQdAo6JvjmSbxHdQWPZdvciQYsHhM1NxQBU398Mmimoy4p7N M1N0ZXBoZW4gRmFycmVsbCAoMjU1MTkpIDxzdGVwaGVuLmZhcnJlbGxAY3MudGNkLmllPsKQ BBMWCAA4FiEEMG54R8tZDyZFrDOn5Njp+ZeoM90FAmPRs6YCGwMFCwkIBwIGFQoJCAsCBBYC AwECHgECF4AACgkQ5Njp+ZeoM93bogEA25ElRyX0wwg+kGEN1AoL60MoZfvQZ/VtmXY6IC5j +csBAIBpkL5ySuzJK2zLNZn9qQGht8IaUcA7cvDcLvS2uHUEzjgEY9GzphIKKwYBBAGXVQEF AQEHQILCPWOwW36e8D3pY8GmvvtItIT+A5uV80ist+WokVsQAwEIB8J4BBgWCAAgFiEEMG54 R8tZDyZFrDOn5Njp+ZeoM90FAmPRs6YCGwwACgkQ5Njp+ZeoM92bcAEA8R+8cpqRUIS+SoAN iO05xE6O/wEx8/e88BqzAYki3SoBAOQdwiPX+MQrAxkWD8xxOsdMOAtxYKpkD1n8aPJUw6QJ
In-Reply-To: <CAOjisRx9vuroH8-q1tgTPWNnTWQ6i+0Vb=VBTv77j7-hEbHHSw@mail.gmail.com>
Content-Type: multipart/signed; micalg="pgp-sha256"; protocol="application/pgp-signature"; boundary="------------qJctwYzEXo7UZzCfzcINWOKR"
X-ClientProxiedBy: DB7PR02CA0029.eurprd02.prod.outlook.com (2603:10a6:10:52::42) To DB8PR02MB5946.eurprd02.prod.outlook.com (2603:10a6:10:11c::16)
MIME-Version: 1.0
X-MS-Exchange-MessageSentRepresentingType: 1
X-MS-PublicTrafficType: Email
X-MS-TrafficTypeDiagnostic: DB8PR02MB5946:EE_|AS8PR02MB9912:EE_
X-MS-Office365-Filtering-Correlation-Id: 1c551c98-fcd4-4d9b-836d-08dd59cb9782
X-MS-Exchange-SharedMailbox-RoutingAgent-Processed: True
X-TCD-Routed-via-EOP: Routed via EOP
X-TCD-ROUTED: Passed-Transport-Routing-Rules
X-MS-Exchange-SenderADCheck: 1
X-MS-Exchange-AntiSpam-Relay: 0
X-Microsoft-Antispam: BCL:0;ARA:13230040|10070799003|366016|4022899009|1800799024|376014;
X-Microsoft-Antispam-Message-Info: QurCPEb9YRe7QwmUu9tiKz0xJF8gAHJyWJoC0iwsavX5s0Jntzj0EDqUEfGzN7jHo1bculxQuqf3Pis1xEuOkQZ9h3wXLFJ+uUZziMIu9XjeZq3q9pTtoO3qU0JHMnErwVpjdjCOCQ6plCUGJ+bdZaq73UXEV8VEU03qGysFYeoyJodQqGUO7cI25VNxbQ5hKiw5WBG/GNv8D1YOsPTcnduoJDoioa4s7reZbpyway0Fyo9nCT8sacG0ep4AYRfuYEMWhTYYixpqrFgQ9tpAwSJuBv6bjJJm/udRATU18GCR/U/P/ZvBQAaUp94OMubIQwiQY+hOIfMfDuawl2Bo3g/FcG2ljoYBp4lhGHP0UzMDjPfdxwNnfEBLdSyLKwqZBDPXZ9hdesrs5p/fIxaoTBkHVftHSbssDvKQuUySCpBbof8cnzly31YlUCwYle2y0xv4XW3MMNmBiy8KitI5CnUQtJClnuludi2jCrrGbQastSUk99j3+gpcrAjQ/0yyl5j/HM7Ml2r1HDI2qS/D1a/hRwnw+rqNBmcNNM97AeyKac1UIvAOV9TFkuP0bC9m154/o3Ev1hmDqGP2gqNLrZVooIyVhPRuYegbYd6/RiyuCbGSqCoRjCyxVaQB9NkTdpC2YBw9Php8Li4vpAHki+ELKtqWoc5bR5o2wi6JpR45j3gxKfo6BC4ZrU/6q+0vbn9dtdVnhEMJfBgikBUMh8XHWXO+/9rOgHgx3Htr/6AlKyY7MvCt9mJw41nxVKvtB9VWgFiMyfTwbQW9hQi6giMPEN3JnIPntZJCQmJt7i/RlIXyoOubaVWU8Rp/AAe1y3yJ6MGrhaiptIQY44nJ9SECgIX9FzjrYD7Y7h+Xlmud4SdQ7Q5lkkhz3aBv/Xnm3nz4Q12c2o6/I2pGRIwSj+HaNFDNnz6xNCxZlXAq3a940ymebScBUIFf+nqUsjzzK7vCmsJ7vteA7ISB7igAYfG9UoD/OwaKfbLP1znT4WuQJOSeQUqj2gqKeh8KzO/5sN3oumI9IbFEeoKSFOpkpef1rkOzS0iioC5yPGrdJ/xiyBc7jIMCWbv+hX0oJwI1Gg30DWOHocCigXadNB/lPdz3i74yAMXFehCGsVlzTIlCs/qfHEQN0C0QgKt9AylLMSLfq6rGBBvcdh22dg4QuiE0BscRQUIsYQ0kL39DMEPIuKwVbqDGw80iCYqMD7zY0qZ9SpCj68wmpMtKvzgTrEai2BjAZiJWKvijOKQP4+Bu3QuV1rlyTWVkBoJk5a9lOEjPCznfgiv/+YGiVfJn5ankrPxO5XoeBFRDEya9M0EPCZV/SW1RpyFSjnkSCqp0cEW+qNq8djCcIWl8BcosRw==
X-Forefront-Antispam-Report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:DB8PR02MB5946.eurprd02.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230040)(10070799003)(366016)(4022899009)(1800799024)(376014);DIR:OUT;SFP:1102;
X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1
X-MS-Exchange-AntiSpam-MessageData-0: SYcezDZ9aq8c9sYTlQWxtuaaI8i0tt1cEiodJE7hUfQ3DWv3ZvbX0rHy3q0R6lkgoIMtcXDr3IgL+BG/Gyvplp/7xek7y+oZ6f1KP0bQef9a4KQGU6fuTkZBJBlt2KFNUBDSV84UiVGfnR+nXV6Mcrq3NUzhNAEMnA40gZqJqak6DFzBBEEHcfFRiXgMi70L21EgscT2QtadraHo09bJtjv/CnnyLUB/mYh/JqoEfIgHPvhjdHsuqYZ5Z13sIG7iigSE823BCe87GpY22u47O6E9+h5+dutz0B4dYNUCpE/cVnpSheBsAN5ZDlZh+J5J7vBEUJKlJ+wJBR6oFdSHAdt4x2ikpfzUv3ae5SpbaqSPx6+TW43p3B7OBZL9yuo8WYaAwx8eYvlUqQD0C7Am6mvKxLf5vgrro6s2GnxcUf/oOGuquXyNkftynm9Ds9tglZh/jzX+IHHGcjXzhD7qaZ69Kwax9Jhh4Axv/CFh/qAkQbVHOe9ZCjACEyOJRw5eFDtJpHIwlgwqdAQHtGtvj9BpeVmUMxKDBlpctGqk3A7E+rb/LNpzthi5XsGxPsR1udsslp7fABANdNWAXo1RDqlPpbsgme+ZEbXY958EfyKQcfRoXsgHe4aa4jAOv6v/4SYdL8muPt3e117ITxyjtRuSd0cPR4Jb5fz5ASRBqL1u5CLqyU6zQPh0vXtjBNKxOOjVaVzOAXsVnL247m6HVsgU0EpY/tGt5eVZ2trENsNCMBZfD+Wc8B0MKfHqRyt0S4ESofm3Aqck0ETRTEfJh1/WIoz24CAQ92VtFXdUFbUoXjB3BHL1WA33mciAzGkhUZeR+9mB2xpZbBu+Rm98GKMYKwtBL4feqvAMkbBBvRRvPqYDCNtJrSrOmo7hjkwqnval2ee1hVAexIpd8ZJhNFCLgOGuPkcxKOOI5zbBF5/vURNFtB6JIEUBEe8x4+z3D4fqPrYLV6bLGKvqzGZgfMi6lXhEofAvw2Ssh0KRvys6XXDXHitVgp0CCnZreno2zvXx5dgJTCdxOy4eEZ+r/geL3pXnjma4FySiecMlp2zQu8acKicvKw+adkGYVbJCrQprDwIr9oSVrhsDcoQ7UY/pVwpeSeGe8F7xpz9tBlrPaSLpUURmSDyrPY+M51nyBD50tk/6bri5J+4t3IBf2R1HcZZpNjzxyjoKUb9Ds6cbTfm1MmPJX9SPCkaztO5ocrQDH5R83USHiCeq23hPRrbWmbr1VPm70eg+DnnjjOGb3k/2qM+lQLqJNWWsuoftc+Tk+ZkWOqS0Go/mKi9/Vek5fBCKc5DINZJrvwb+T1x4GbuhuNdj7kRd+146ZCGMAgptcI8fvtDk6EWThshyDQT+UDcsuOfv2YhGIHrym49f1TQ8AHTZnOp8XFlAFSCkW7dS6V1GXJT5bvmAX/Q51gCpb+W3Y8t7H44cFsGSizd8z248tzwWO4zL6CHThbEs9gdxIFY/RF0kDoX6Abg3FZN98nf2bm4A+s7+GWzvBkWcKtj5CAocc0J/aPheTEfx4q7G3GsNFqq/RfhBLMQsJ8nOQ7P7FpA6sInOyFvNdn0akbBv8B04gN1HP8XQioDN8NA/8qR0CDy6Oo+gRKlfavFsgbuJy0+WdV2MSTlqbEzRG74W0JLGWfE3b8F8crGb
X-OriginatorOrg: cs.tcd.ie
X-MS-Exchange-CrossTenant-Network-Message-Id: 1c551c98-fcd4-4d9b-836d-08dd59cb9782
X-MS-Exchange-CrossTenant-AuthSource: DB8PR02MB5946.eurprd02.prod.outlook.com
X-MS-Exchange-CrossTenant-AuthAs: Internal
X-MS-Exchange-CrossTenant-OriginalArrivalTime: 02 Mar 2025 20:48:33.5972 (UTC)
X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted
X-MS-Exchange-CrossTenant-Id: d595be8d-b306-45f4-8064-9e5b82fbe52b
X-MS-Exchange-CrossTenant-MailboxType: HOSTED
X-MS-Exchange-CrossTenant-UserPrincipalName: MHjnKEEhU5Rz4Nx+T25RpqIvqZeDi0r+Ts7FwXf0EMGWol5UiqoRboW/6WxDK+A3
X-MS-Exchange-Transport-CrossTenantHeadersStamped: AS8PR02MB9912
Message-ID-Hash: 5Y5QNRIF5HEPQ6MGBGKYE7OG6LFCJCTI
X-Message-ID-Hash: 5Y5QNRIF5HEPQ6MGBGKYE7OG6LFCJCTI
X-MailFrom: stephen.farrell@cs.tcd.ie
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
X-Mailman-Version: 3.3.9rc6
Precedence: list
Subject: [TLS] Re: Implicit ECH Config for TLS 1.3 – addressing public_name fingerprinting
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/GaIlXRWLcBSaDq5T3CodoAEXVcQ>
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>

Hiya,

I'm generally sympathetic to doing work in this space but I
suspect we might need more and various advice for those who
want to deploy ECH - just saying how to do trial decryption
well likely won't be that useful IMO.

Additional things where deployment advice may be needed may
include:
- which ECH suites work where (some clients do not support
all combinations of kem, kdf, aead for ECH/HPKE even though
they support each individual alg)
- guidance on publishing >1 HTTPS RR (or to never do so)

There's also the issue that Yaroslav mentioned about cases
where inbound proxies process the outer_sni and then there's
the possible timing signals related to ECH decryption that
are mentioned below.

I'm not sure some or all of that might be best documented
in an RFC, but it's quite possible (and I'd be willing to
help if so).

However, I don't think we ought modify the ECH spec now to
try fix/improve these issues as we'd be quite likely to end
up wanting to change more and delay things even more. (And
this spec has been sooo slow already.)

Lastly, in all the above, I think we ought aim to not define
any ECHConfig extension types, if possible.

Cheers,
S.



On 28/02/2025 01:07, Nick Sullivan wrote:
> Hello TLS,
> 
> After offline conversations about how sever-side trial decryption is
> implemented, I think this implicit ECH draft can be simplified.
> Furthermore, it may be possible to make a small change to draft -23 to get
> most of the benefits of this draft in the main ECH document.
> 
> Section 7.1 of draft-23 of the ECH draft describes the process for
> selecting candidate ECHConfigs for an incoming ClientHello. It describes
> how the config_id should be used by the servers to narrow down the list of
> keys to trial decrypt against. It does not recommend or prohibit using the
> outer SNI in this selection process. For a server that only supports
> ECH-capable domains with a single set of configurations sharing the same
> public_name, the process described in 7.1 is fine.
> 
> However, in practice, some servers simultaneously support ECH for some
> domains and GREASE ECH (aka non-ECH) connections for other domains. Doing
> so will entice such servers to use the outer SNI as a first-pass filter for
> selecting which connections get trial decryption and which are immediately
> treated as GREASE. This logic is problematic with draft-23.
> 
> For example, if the outer SNI of an incoming ClientHello does not contain a
> public_name associated with a known ECH configuration, the server can
> choose to handshake with the ClientHelloOuter without even attempting to
> decrypt the ECH extension as a performance enhancement. This method limits
> needed flexibility on the client. Specifically, there is no MUST that says
> the outer SNI must match the public_name of the ECH configuration, and
> implementing this method breaks the ability for clients to violate the
> SHOULD in Section 6.1 point 5, which says the outer SNI should match the
> public_name. If a client connects to a client-facing server with a "dummy"
> outer SNI that doesn't match, servers implementing this shortcut will
> attempt to handshake with the ClientHelloOuter using a certificate that
> covers that dummy outer SNI, something the client is not prepared for. If
> implemented, this pre-selection logic based on outer SNI will break
> interoperability with clients that follow Section 6.1, list element 5:
> 
> It SHOULD place the value of ECHConfig.contents.public_name in the
> "server_name" extension. Clients that do not follow this step, or place a
> different value in the "server_name" extension, risk breaking the retry
> mechanism described in Section 6.1.6
> <https://www.ietf.org/archive/id/draft-ietf-tls-esni-23.html#rejected-ech> or
> failing to interoperate with servers that require this step to be
> done; see Section
> 7.1
> <https://www.ietf.org/archive/id/draft-ietf-tls-esni-23.html#client-facing-server>
> .
> 
> 
> Note 1 on this text: Placing a different value in the outer SNI does not
> have to break the retry mechanism in 6.1.6. The "retry_config" is
> authenticated via the public_name (which is known to the client) *not* the
> name in the outer SNI. So servers who reject ECH can send retry_configs
> with a certificate covering the public_name. *But not if they implement
> this shortcut logic*.
> 
> Unless explicitly prohibited, this server logic is likely to be very common
> because it can save the client-facing server from having to do an extra
> public key operation when trial-decrypting ECH GREASE connections when the
> dummy GREASE config_id matches a supported config_id. This deployment
> reality makes this SHOULD effectively a MUST in practice. At the least, it
> will effectively prohibit clients from selecting dummy outer SNI names that
> overlap with the set of supported non-ECH domains by the server (a list the
> client has no realistic way of knowing).
> 
> I see two solutions to this problem.
> 
> Option 1:
> Prohibit client-facing servers from using the outer SNI until they fully
> confirm that the ECH extension is invalid or GREASE.
> 
> This has a lot of benefits:
> - It removes some potential legal or policy uncertainties for servers that
> implement this shortcut. I understand that shared proxy servers with
> multiple customers do not want to have to explain why they used one
> customer's hostname in the logic for decryption of a connection to a
> different customer. This is exactly what will happen with this shortcut
> logic if a client sends a dummy SNI that matches a different customer. The
> server uses that other customer's private key and certificate in the
> connection. This change makes the outer SNI purely vestigial and guarantees
> that it will not be misused for ECH connections.
> - It makes it less likely that clients disregarding the SHOULD for 6.1
> point 5 will face unexpected failures, allowing this SHOULD to be relaxed
> to a MAY. It could also facilitate removing the "Once the server has chosen
> the correct ECHConfig, it MAY verify that the value in the ClientHelloOuter
> "server_name" extension matches the value of
> ECHConfig.contents.public_name, and abort with an "illegal_parameter" alert
> if these do not match." stipulation in 7.1
> - It reduces the timing side-channel that this selection introduces to
> outside observers, i.e., if the server handshake takes less than 3 public
> key ops to run, the observer can assume the connection was GREASE and not
> legitimate ECH. This is not a silver bullet, using the config_id to
> shortcut the logic for ECH GREASE connections still provides a side-channel
> in some cases.
> 
> Option 2:
> Tighten up the language in -23 by restoring the SHOULD to a MUST in Section
> 6.1 and document the necessary logic to support outer SNIs that don't match
> the public_name in a separate document like Implicit ECH.
> 
> Notes:
> - The implicit ECH draft should probably be amended to require config_id to
> not be flexible, since it's not leaking much and is useful for key
> selection during rotation
> - Servers that plan on using a public_name that is not uniquely carved off
> for use in ECH (no implicit ECH) can't use this shortcut logic. If, for
> example, Google wanted to use "google.com" as the public_name for ECH for
> its suite of sites like YouTube etc., then they would still have to do
> trial decryption anyway.
> 
> Nick
> 
> 
> Nick
> 
> On Wed, Feb 26, 2025 at 3:14 PM Nick Sullivan <nicholas.sullivan@gmail.com>
> wrote:
> 
>> Hi everyone,
>>
>> I’ve put together a draft, “Implicit ECH Configuration for TLS 1.3” (
>> https://www.ietf.org/archive/id/draft-sullivan-tls-implicit-ech-00.html)
>> as a potential starting point for improving ECH’s “do not stick out”
>> compliance. Global deployments of ECH have become biased because a single
>> public_name dominates most ECH connections, making it a prime target for
>> fingerprinting (see https://github.com/net4people/bbs/issues/417) As
>> discussed on the TLS WG mailing list (see
>> https://mailarchive.ietf.org/arch/msg/tls/4rq4sZzpI9rjYgDLJ2IO-vG9DRw/)
>> the outer SNI remains the primary identifier that enables on-path
>> adversaries to identify ECH traffic.
>>
>> To mitigate these linkability risks, various past proposals were
>> considered. One idea was to randomize or override the outer SNI rather than
>> always using the provided public_name. For example, Stephen Farrell
>> suggested allowing clients to use an arbitrary or blank outer SNI (for
>> certain use cases like censorship circumvention). This would, in theory,
>> make the outer handshake less predictable, increasing traffic diversity
>> across ECH connections. However, others in the WG (e.g. Chris Wood)
>> cautioned that relaxing this requirement essentially reintroduces domain
>> fronting, a side-effect the group was wary of.
>>
>> The consensus was that fallback reliability and simplicity favored
>> sticking with the public_name in SNI. See Github discussions:
>> https://github.com/tlswg/draft-ietf-tls-esni/issues/396
>> <https://github.com/tlswg/draft-ietf-tls-esni/issues/396#:~:text=For%20at%20least%20command%20line,benefit%20from%20that%20option%20too>
>> .
>>
>> Relatedly, early drafts used an 8-byte config_id, but as documented in
>> discussions around 2020-2021, it was shortened to one byte to reduce its
>> uniqueness and tracking potential—a change that was well received by
>> privacy advocates yet noted by implementers as complicating the deployment
>> complexity for multi-key scenarios, though not enough to hinder deployment.
>>
>> Implicit ECH Configuration, introduced in
>> draft-sullivan-tls-implicit-ech-00, builds on this prior work to propose a
>> mode of ECH that minimizes explicit signaling of the server’s identity.
>> This draft introduces an optional “implicit” mode via a new extension in
>> ECHConfigContents. When this extension is present, clients MAY choose any
>> valid outer SNI and a randomized config_id instead of relying on a
>> potentially globally dominant public_name. Client-facing servers, in turn,
>> MUST perform uniform trial decryption to ensure that every handshake is
>> processed identically, regardless of whether a valid or a phony config_id
>> or outer SNI is provided.
>>
>> This approach enables clients to adopt custom strategies for maintaining
>> broad reachability, ensuring that a single public_name does not become a
>> reliable way for external observers to distinguish ECH from ECH GREASE at
>> scale. It is also useful for improving privacy when client-facing servers
>> support only one or a small number of domains, as it enables clients to
>> choose the outer SNI such that it is not merely a direct stand-in for the
>> inner name.
>>
>> Importantly, I don’t believe this approach reintroduces domain fronting.
>> It’s not possible to use implicit configuration ECH to connect to one site
>> on a server and then trick that server into serving HTTP responses for a
>> second, different site when the TLS certificate used to establish the
>> connection is not authoritative for that second site – the essential thing
>> that distinguishes domain fronting from other techniques. Implicit mode
>> effectively relegates the outer SNI to a mostly symbolic role for these
>> connections, used solely for ensuring network reachability—similar to how
>> certain legacy TLS 1.2 messages were retained in TLS 1.3 to address network
>> ossification issues.
>>
>> This change may have fit into the main ECH draft if it had been proposed
>> earlier. However, ECH has already been submitted to IESG for publication,
>> so I put this together as a standalone extension. I welcome your feedback
>> on this proposal as we work to reduce fingerprinting risks without
>> sacrificing deployability.
>>
>>
>> Nick
>>
> 
> 
> _______________________________________________
> TLS mailing list -- tls@ietf.org
> To unsubscribe send an email to tls-leave@ietf.org