[TLS] Re: Implicit ECH Config for TLS 1.3 – addressing public_name fingerprinting
Kazuho Oku <kazuhooku@gmail.com> Fri, 21 March 2025 00:40 UTC
Return-Path: <kazuhooku@gmail.com>
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 89EABFF7A7F for <tls@mail2.ietf.org>; Thu, 20 Mar 2025 17:40:22 -0700 (PDT)
X-Virus-Scanned: amavisd-new at ietf.org
X-Spam-Flag: NO
X-Spam-Score: -2.087
X-Spam-Level:
X-Spam-Status: No, score=-2.087 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, RCVD_IN_DNSWL_BLOCKED=0.001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001, T_KAM_HTML_FONT_INVALID=0.01] autolearn=ham autolearn_force=no
Authentication-Results: mail2.ietf.org (amavisd-new); dkim=pass (2048-bit key) header.d=gmail.com
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 7Ya_ZORFaMR8 for <tls@mail2.ietf.org>; Thu, 20 Mar 2025 17:40:18 -0700 (PDT)
Received: from mail-pl1-x636.google.com (mail-pl1-x636.google.com [IPv6:2607:f8b0:4864:20::636]) (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 mail2.ietf.org (Postfix) with ESMTPS id 6F9C5FF7A35 for <TLS@ietf.org>; Thu, 20 Mar 2025 17:40:13 -0700 (PDT)
Received: by mail-pl1-x636.google.com with SMTP id d9443c01a7336-22548a28d0cso38327615ad.3 for <TLS@ietf.org>; Thu, 20 Mar 2025 17:40:13 -0700 (PDT)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1742517612; x=1743122412; 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=WpNWqw26heo+4Fz9rc8jwVDjSYvPRb3enYkrOTz/uoQ=; b=bDUIelb8sjJleLcS+gVS4onHHZRjUOTOGGqlCbsYEpcIvdxK7eU8nwGASlzyWzJq57 E6DzATXgMP6L5ypZL0nuzZ4fzQeNE3dkvFlwQoxoQDgnBSP0ZJxom/Pdg9feloSN5hp8 X6zox0NmbL9fjbyL3XdfPI8tTYtkNYhrtPmy+nzt6UopacGuMWw2ptB7/kzKxVEF4oUb ftRlHHM8iCVPDf4VaNspCFt1DLGQAxI4BZFzslerlHtYxQNIttFXNM1lk7Kp/zxXJEm4 JxxDthBuYYu6v5HLeQMmuCZzvIfyi6QbTbk5R/xWDTb78TjufFP7ER2E8xaxaaDzHTLF cd3Q==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1742517612; x=1743122412; 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=WpNWqw26heo+4Fz9rc8jwVDjSYvPRb3enYkrOTz/uoQ=; b=q7KgTD8Stn3qbUGXxZSO65RFFfSLaL8FcwZ5Y9mLEWTQU1tIemwmJEbchjN6uQvCEE az2YJ2KdKJJcA8UJFbCksHBu+XnQkm9SjmR1e0FJTHPFXnc0SSI8em1gIz4KG9fzqOip N4FXiy6k4JPGVOYMU1BszZD3A1VQcXrpm/z6D13cpNSHG1ZK2k8mng35L3lktJ65mRTL gCmJSxHJG3RaIhXgmI6mRKHf9dGkivHcZZpZw9T4c6v2S+N8hzQXLooqGyLCfnKtFfM8 aI8rshBZlSd9GSWpOQlymkj6ACRAZSdp1SZi2s2ua2rZU6VFCNx3DsFTSJmPqSKbXYEB zrNg==
X-Gm-Message-State: AOJu0YylyEDzQ+tIBTqfm82MN2HJ/FcTK4iHuHQcGcRkqQrKBOI+j/T5 3tRB5zInHzMKkRNgogVWVqGSR4l7EhXQF4H1SxT0sUDcivxgi6L10s4hwK8SJ16LmnJqI4f6nHo 2zgJj6wToc7AH/PO/6LL8xHhPqtXBVIpO1QQ=
X-Gm-Gg: ASbGnctep0yUGb6MzGdoR+7r9BmuUSYKaB/GzYlHqy3YMVrYCqPj+eTMpX+do1NIa8R YBWbBW1OJCmLeDQp7HOU3ESXU7yxMYvzeN7TLqV8o114iM+QmY09IS6LX0PsQRTm63Jg/CKT2zD /Ow2vspPlUX/MV4BUNmZ+tTj+TTjS9NxvHqVLSJgEixJuqGceXBpktZBCzyA==
X-Google-Smtp-Source: AGHT+IGdqfZQyUkQ5d+27NK3xAtF708PwtubIiqt8u2qhZflKN+xzvan4H3pcgEvelDHykZUzpgprcmgnc2T8jJzfEY=
X-Received: by 2002:a17:903:3204:b0:223:619e:71da with SMTP id d9443c01a7336-22780e23396mr21736495ad.49.1742517612361; Thu, 20 Mar 2025 17:40:12 -0700 (PDT)
MIME-Version: 1.0
References: <CAOjisRzBNG2KdAZXssnR9Ura9HuAUKxOH+VLCAE5B9MfYyeT2A@mail.gmail.com>
In-Reply-To: <CAOjisRzBNG2KdAZXssnR9Ura9HuAUKxOH+VLCAE5B9MfYyeT2A@mail.gmail.com>
From: Kazuho Oku <kazuhooku@gmail.com>
Date: Fri, 21 Mar 2025 07:39:59 +0700
X-Gm-Features: AQ5f1Jq0UmJtxGTLWGztIbtXrNzDmID-XsiZKmwYga3_XducdWRdwYYG8Qlj-dI
Message-ID: <CANatvzzrKAW5U3w0RYE5jU_zV2YSZo1Z_dADj2wd2u6=jFLx7Q@mail.gmail.com>
To: Nick Sullivan <nicholas.sullivan@gmail.com>
Content-Type: multipart/alternative; boundary="0000000000004cc1ab0630cf7f3f"
Message-ID-Hash: M4MKQB5TB4XRU55GJ4Y6PJC2CICDXHSK
X-Message-ID-Hash: M4MKQB5TB4XRU55GJ4Y6PJC2CICDXHSK
X-MailFrom: kazuhooku@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: "tls@ietf.org" <TLS@ietf.org>
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/HywsvDZqDMkDm2Jk_I3tX6zcRwg>
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>
Hello Nick, folks, I only had the chance to look at the draft and the presentation during IETF, but I actually like this idea. To address the concern of outer SNI becoming an observation vector, the presentation suggested that clients should use "any choice of valid DNS names." But as some pointed out, the problem of choosing something valid remains. Some clients might pick only within a certain suffix. Different clients might choose them differently. So, instead, I wonder if we could just say that all ECH clients should use one value. Using one is simpler, and provides the guarantee that nothing leaks other than the fact that ECH is used. And to take another step forward, we can even choose the most popular hostname around the world to be that one outer SNI. By doing so, we can hide the ECH traffic being small during the adoption period. I do understand that the content network operators do not want to abuse the hostnames that their customers own for protecting other customers. But what I am saying here is that we can shift the responsibility of choosing the outer SNI from the content network operators to the clients. If clients start sending whatever outer SNI that they like, content network operators have no choice but to ignore that field. 2025年2月26日(水) 14:16 Nick Sullivan <nicholas.sullivan@gmail.com>: > 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 > -- Kazuho Oku
- [TLS] Implicit ECH Config for TLS 1.3 – addressin… Nick Sullivan
- [TLS] Re: Implicit ECH Config for TLS 1.3 – addre… Raghu Saxena
- [TLS] Re: Implicit ECH Config for TLS 1.3 – addre… Yaroslav Rosomakho
- [TLS] Re: Implicit ECH Config for TLS 1.3 – addre… Yaroslav Rosomakho
- [TLS] Re: Implicit ECH Config for TLS 1.3 – addre… Nick Sullivan
- [TLS] Re: Implicit ECH Config for TLS 1.3 – addre… Loganaden Velvindron
- [TLS] Re: Implicit ECH Config for TLS 1.3 – addre… Eric Rescorla
- [TLS] Re: Implicit ECH Config for TLS 1.3 – addre… Nick Sullivan
- [TLS] Re: Implicit ECH Config for TLS 1.3 – addre… Nick Sullivan
- [TLS] Re: Implicit ECH Config for TLS 1.3 – addre… Stephen Farrell
- [TLS] Re: Implicit ECH Config for TLS 1.3 – addre… Christopher Patton
- [TLS] Re: Implicit ECH Config for TLS 1.3 – addre… Martin Thomson
- [TLS] Re: Implicit ECH Config for TLS 1.3 – addre… Stephen Farrell
- [TLS] Re: Implicit ECH Config for TLS 1.3 – addre… Kazuho Oku