[TLS] Re: Gorry Fairhurst's No Objection on draft-ietf-tls-esni-24: (with COMMENT)
Eric Rescorla <ekr@rtfm.com> Mon, 28 April 2025 13:33 UTC
Return-Path: <ekr@rtfm.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 867E021FF4B4 for <tls@mail2.ietf.org>; Mon, 28 Apr 2025 06:33:59 -0700 (PDT)
X-Virus-Scanned: amavisd-new at ietf.org
X-Spam-Flag: NO
X-Spam-Score: -1.896
X-Spam-Level:
X-Spam-Status: No, score=-1.896 tagged_above=-999 required=5 tests=[BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, HTML_MESSAGE=0.001, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_NONE=0.001, URI_DOTEDU=0.001] autolearn=unavailable autolearn_force=no
Authentication-Results: mail2.ietf.org (amavisd-new); dkim=pass (2048-bit key) header.d=rtfm-com.20230601.gappssmtp.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 Ahc-pT6KJc0l for <tls@mail2.ietf.org>; Mon, 28 Apr 2025 06:33:57 -0700 (PDT)
Received: from mail-yb1-xb29.google.com (mail-yb1-xb29.google.com [IPv6:2607:f8b0:4864:20::b29]) (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 3FC6F21FF484 for <tls@ietf.org>; Mon, 28 Apr 2025 06:33:57 -0700 (PDT)
Received: by mail-yb1-xb29.google.com with SMTP id 3f1490d57ef6-e6dd991a0e6so3494482276.1 for <tls@ietf.org>; Mon, 28 Apr 2025 06:33:57 -0700 (PDT)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=rtfm-com.20230601.gappssmtp.com; s=20230601; t=1745847237; x=1746452037; 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=S7PUOix/JiW8hig9RZdY3uEfZuG85vGKsdvXRyBsk6s=; b=otL/sbEqXPTDZN1zfhoWvoXgCMTDNoCduaq4wIbbYtvby50ZdjjIRBjJIg1AuTMhLd lNfRbFk2+yRuJMAgwi0KfbtIvv5TdX60IBLyjL+QXtYu2dbxzTTfx0lOJWQKRfeWEBiW koPLIz2ctr6TPGWeqYhVEspaWRvupOFlsfXuGhbebbOLP6N7qIsEyPCPvnA+JE7TqJJu +kmmZs6Hzp0OsZm8xCKD8Hg48dxVvRkJedfIQA2vjS2hn/+TBvbOdc8vyUfY3AqnZeKK koR2sI2yqa52D/dT70RjZIEQ7pAbWbfcmAUbOr5fVWbJofa8gDFGiL+IjFDU+qO7EmX3 955Q==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1745847237; x=1746452037; 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=S7PUOix/JiW8hig9RZdY3uEfZuG85vGKsdvXRyBsk6s=; b=N7g1Ce/88pjDAhnBVRCKIv/Q/pxPfuUURBAwI61dKs7iMmW62DawsbuIqOahcjC9pZ 4HQkKyvU8j1FS4DLtn1aCShzR50PahDFQOecI1uJwS8ZNQdTsBdiWslihNI5eYIneGu0 L8nFDSncwvakGEDn1qUBrgFWQNeFD6CJyybo/uaFYtHb0HN/HsH6t0zU+6CKmb3AVj23 HkqQrW01HLAAzzu5VhlKTqps6Qe53V7pZo4XkIKcdSdIf39fIkYnnJYAGxoguscIxnIw hGJgWHe3+hxlC9FJS5/5/B3Hc5MzoREQUYwZmA28Ty4O+DuaUA5Xqk/Ez0rvr7eJx40/ gPyQ==
X-Forwarded-Encrypted: i=1; AJvYcCUNE4SkD/jTO62NgZ8HX0mDKaK8c3asf4sS35pd2ADbs6kTAURg1pncMdNV2LfJT1z/A7Y=@ietf.org
X-Gm-Message-State: AOJu0YyV1B/n+bqYykDlO8am/qS+wvDk1GIrWWvsBNVmncysCBX8sajH ljzwXc6c7huQ6OZuBLltkIRPcDXmx8OrF4cjPNmMDWvUmQi8xLvZniS+HndNaOYFr/VLKVPWTdh ihSR5Z7KkB8jB4+PpPvNt2DgYEUMEJpShXPZ0MQ==
X-Gm-Gg: ASbGnctr05Mj2EFqXdfqSlBtIXJf/cOa61tHd5q5gzLxfJ+4Fl08rQNb6Uak27c0q3j XZtg9+FNZWFwu2FoBMrJlc5FmR8dYvlik/HUChd0UCrbvJkx4XXUOcw96Ybi403KmdUpBfq/tr5 SIIUzqmDKQX+dyUp0RPh35YnfC
X-Google-Smtp-Source: AGHT+IGt3hHtxaXvtuGaxOSJrMD+FYO77LKfBXnZLIRPxW/jsEVw1wOyOSd1wnNDb2wAhzkFcpQ6hadtnJ6BOXvJreo=
X-Received: by 2002:a05:6902:1792:b0:e72:febb:48ab with SMTP id 3f1490d57ef6-e732348da92mr11973671276.45.1745847236476; Mon, 28 Apr 2025 06:33:56 -0700 (PDT)
MIME-Version: 1.0
References: <174564860485.226058.6912979562811198075@dt-datatracker-7bd7b9d5d5-79vfh>
In-Reply-To: <174564860485.226058.6912979562811198075@dt-datatracker-7bd7b9d5d5-79vfh>
From: Eric Rescorla <ekr@rtfm.com>
Date: Mon, 28 Apr 2025 06:33:20 -0700
X-Gm-Features: ATxdqUEpcT4S5vl-cPhKLfBAulgJ6B5J6zNQAZBWIDmtVuubprC7GKipHWgS4yw
Message-ID: <CABcZeBMeLsdWjrb7FcVMyGTOZuqdKHmN9LFcO7pE4cxVVj603g@mail.gmail.com>
To: Gorry Fairhurst <gorry@erg.abdn.ac.uk>
Content-Type: multipart/alternative; boundary="0000000000005ce5640633d6bc1b"
Message-ID-Hash: CIOQNLH25AZLUGV7FGPQN6257W2YXK2R
X-Message-ID-Hash: CIOQNLH25AZLUGV7FGPQN6257W2YXK2R
X-MailFrom: ekr@rtfm.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: The IESG <iesg@ietf.org>, draft-ietf-tls-esni@ietf.org, tls-chairs@ietf.org, tls@ietf.org, jsalowey@gmail.com
X-Mailman-Version: 3.3.9rc6
Precedence: list
Subject: [TLS] Re: Gorry Fairhurst's No Objection on draft-ietf-tls-esni-24: (with COMMENT)
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/LGK4bSIc3okEjVfBRsCEqWxskiM>
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>
Thank you for your review. I have created a PR to address some of these comments. https://github.com/tlswg/draft-ietf-tls-esni/pull/650 > The following comments are not blocking, but I would really appreciate feedback > to help understand what is intended: > > 1) In section 6.1 what is required for interop? On Offering ECH I see a list of > seven requirements and I thought I saw at least some of these 7 requirements > were necessary for correct operation of the remaining algorithm. (e.g., For me, > Rule 1 suggests a need for TLS 1.3 or higher and if not supplied, a later rule > says this results in a server reject for ECH, etc). However, I found this > sentence after the list: “Note that these rules may change in the presence of > an application profile specifying otherwise.” - I am trying to understand if > any of these requirements are actually required for correct operation: Does > that additional sentence simply mean these are a default and all these > requirements can be changed ? or something else? > > 2) A similar phrase follows the seven requirements in section 6.2. What is > intended to happen here? I don't actually see the text in 6.2. Can you quote the larger passage? This is a good catch. Obviously, anything here that isn't a MUST is not truly necessary. This leaves us with: > 1. It MUST offer to negotiate TLS 1.3 or above. This isn's strictly required for interop but I don't think but will produce a non-conformant appearing transcript because you will get TLS 1.3 in the ServerHello but not in the ClientHello. > 2. If it compressed any extensions in EncodedClientHelloInner, it > MUST copy the corresponding extensions from ClientHelloInner. > The copied extensions additionally MUST be in the same relative > order as in ClientHelloInner. I think this is strictly required, because otherwise things won't actually work. > 3. It MUST copy the legacy_session_id field from ClientHelloInner. > This allows the server to echo the correct session ID for TLS > 1.3's compatibility mode (see Appendix D.4 of [RFC8446]) when ECH > is negotiated. This actually isn't required for DTLS, as DTLS does not use this feature (See RFC 9147; Section 5). > 6. When the client offers the "pre_shared_key" extension in > ClientHelloInner, it SHOULD also include a GREASE > "pre_shared_key" extension in ClientHelloOuter, generated in the > manner described in Section 6.1.2. The client MUST NOT use this > extension to advertise a PSK to the client-facing server. (See > Section 10.12.3.) When the client includes a GREASE > "pre_shared_key" extension, it MUST also copy the > "psk_key_exchange_modes" from the ClientHelloInner into the > ClientHelloOuter. I think this MUST is required for the same reason as 1, but won't cause an interop problem if you don't. > 7. When the client offers the "early_data" extension in > ClientHelloInner, it MUST also include the "early_data" extension > in ClientHelloOuter. This allows servers that reject ECH and use > ClientHelloOuter to safely ignore any early data sent by the > client per [RFC8446], Section 4.2.10. I think this is required for interop. In any case, I think we should remove the waffle text, as updated RFCs can change anything. This is a question for the WG, however. I have filed https://github.com/tlswg/draft-ietf-tls-esni/issues/651 for the WG to consider. > === > The following are editorial comments, please consider for the next revision: > > 1) The appendix contains a normative requirement which seems odd to position > this requirement in an appendix: “Any future information or hints that > influence ClientHelloOuter SHOULD be specified as ECHConfig extensions. “ Agreed. I moved this up to the extensions text. > 2) It would have been nice for me if the acronym KEM was expanded on first use. Fixed. > 3) I would appreciate a forward reference for the first mention of “GREASE ECH” > in the text of 6.1 that says “and sends GREASE ECH otherwise.” referencing the > text of section 6.3 - I did guess!!! Fixed. > 4) I would appreciate a single sentence or so simply explaining what GREASE ECH > was seeking to achieve in the currently empty text of section 6.2. (A note > saying “see also section 10.10.4” would be super helpful) Added soem text. > 5) Please clarify address: “Clients can implement a new transport connection in > a way that best > suits their deployment. For example, clients can reuse the same IP > address when establishing the new transport connection or they can > choose to use a different IP address if provided with options from > DNS. “ > - I think this means destination IP address (because of the mention of DNS), > but maybe not, because a client can also use alternative valid source > addresses. I would appreciate just a little more clarity - perhaps even just > something like: “Clients can reuse the same IP addresses when establishing the > new transport connection or they can choose to use a different pair of IP > addresses (e.g., if provided with options from DNS).” - if that was what was > intended? It's server IP. The client's IP is generally not withing the client's control. I added some text. > 6) To me it is really odd to require a server to be careful!!! > See: “The server MUST be careful not to unnecessarily reject connections if the > same ECHConfig id or keypair is used in multiple ECHConfigs with distinct > public names.” - This seems to me to require some rewording to communicate the > requirement and I assume the care is needed when configuring the server, and > the server MUST NOT unnecessarily reject connections … Rewritten. > 7) See: “The design of ECH as specified in this document necessarily requires > changes to client, client-facing server, and backend server.” - would it read > better with the “the” or “a” before client? Added "the". > 8) See: “unencrypted.This means differences” - missing space before period. Fixed. > 9) See: “Notes: Any notes associated with the entry” missing final period. Fixed, along with another period in the previous entry. > 10) Please check use of “which” below and update as needed: One rule I’ve heard > is that uf the details are crucial to the sentence, use that. If they aren’t > crucial, use which: “Section 11.3 describes a set of Reserved extensions which > will never be registered.” /which/that/? “Some use cases which depend on > information ECH encrypts may break > with the deployment of ECH.” - /which/that/ ? > “Depending on implementation details and deployment settings, use > cases which depend on “ - /which/that/ ? > “Values which are independent of the true server name, or other > information the client wishes to protect, MAY be included in > ClientHelloOuter.” - /which/that/ ? > “Values which depend on the contents of ClientHelloInner, such as the > true server name, can influence how client-facing servers process > this message.” - /which/that/ ? > “A malicious attacker may craft a packet which takes excessive resources > to decompress” - /which/that/ ? > “These requirements prevent an attacker from performing a packet > amplification attack, by crafting a ClientHelloOuter which > decompresses to a much larger ClientHelloInner.” - /which/that/ ? This is one of those folklore rules of English like split infinitives that is not actually reflective of actual writing. See http://itre.cis.upenn.edu/~myl/languagelog/archives/001484.html . I think these are all sufficiently clear whichever word is used, but if you disagree on one, then please flag it and I'll take a look. -Ekr On Fri, Apr 25, 2025 at 11:23 PM Gorry Fairhurst via Datatracker < noreply@ietf.org> wrote: > Gorry Fairhurst has entered the following ballot position for > draft-ietf-tls-esni-24: No Objection > > When responding, please keep the subject line intact and reply to all > email addresses included in the To and CC lines. (Feel free to cut this > introductory paragraph, however.) > > > Please refer to > https://www.ietf.org/about/groups/iesg/statements/handling-ballot-positions/ > for more information about how to handle DISCUSS and COMMENT positions. > > > The document, along with other ballot positions, can be found here: > https://datatracker.ietf.org/doc/draft-ietf-tls-esni/ > > > > ---------------------------------------------------------------------- > COMMENT: > ---------------------------------------------------------------------- > > Thank you for preparing this I-D. Thanks also for the TSV-ART review > provided > by Tommy Pauly. I agree with that review conclusion: this protocol > extension is > defined to work with various transport cases (TLS over TCP, DTLS over UDP, > QUIC, etc), and otherwise does not fundamentally change their properties. > > The following comments are not blocking, but I would really appreciate > feedback > to help understand what is intended: > > 1) In section 6.1 what is required for interop? On Offering ECH I see a > list of > seven requirements and I thought I saw at least some of these 7 > requirements > were necessary for correct operation of the remaining algorithm. (e.g., > For me, > Rule 1 suggests a need for TLS 1.3 or higher and if not supplied, a later > rule > says this results in a server reject for ECH, etc). However, I found this > sentence after the list: “Note that these rules may change in the presence > of > an application profile specifying otherwise.” - I am trying to understand > if > any of these requirements are actually required for correct operation: Does > that additional sentence simply mean these are a default and all these > requirements can be changed ? or something else? > > 2) A similar phrase follows the seven requirements in section 6.2. What is > intended to happen here? > > === > The following are editorial comments, please consider for the next > revision: > > 1) The appendix contains a normative requirement which seems odd to > position > this requirement in an appendix: “Any future information or hints that > influence ClientHelloOuter SHOULD be specified as ECHConfig extensions. “ > > 2) It would have been nice for me if the acronym KEM was expanded on first > use. > > 3) I would appreciate a forward reference for the first mention of “GREASE > ECH” > in the text of 6.1 that says “and sends GREASE ECH otherwise.” > referencing the > text of section 6.3 - I did guess!!! > > 4) I would appreciate a single sentence or so simply explaining what > GREASE ECH > was seeking to achieve in the currently empty text of section 6.2. (A note > saying “see also section 10.10.4” would be super helpful) > > 5) Please clarify address: “Clients can implement a new transport > connection in > a way that best > suits their deployment. For example, clients can reuse the same IP > address when establishing the new transport connection or they can > choose to use a different IP address if provided with options from > DNS. “ > - I think this means destination IP address (because of the mention of > DNS), > but maybe not, because a client can also use alternative valid source > addresses. I would appreciate just a little more clarity - perhaps even > just > something like: “Clients can reuse the same IP addresses when establishing > the > new transport connection or they can choose to use a different pair of IP > addresses (e.g., if provided with options from DNS).” - if that was what > was > intended? > > 6) To me it is really odd to require a server to be careful!!! > See: “The server MUST be careful not to unnecessarily reject connections > if the > same ECHConfig id or keypair is used in multiple ECHConfigs with distinct > public names.” - This seems to me to require some rewording to communicate > the > requirement and I assume the care is needed when configuring the server, > and > the server MUST NOT unnecessarily reject connections … > > 7) See: “The design of ECH as specified in this document necessarily > requires > changes to client, client-facing server, and backend server.” - would it > read > better with the “the” or “a” before client? > > 8) See: “unencrypted.This means differences” - missing space before period. > > 9) See: “Notes: Any notes associated with the entry” missing final > period. > > 10) Please check use of “which” below and update as needed: One rule I’ve > heard > is that uf the details are crucial to the sentence, use that. If they > aren’t > crucial, use which: “Section 11.3 describes a set of Reserved extensions > which > will never be registered.” /which/that/? “Some use cases which depend on > information ECH encrypts may break > with the deployment of ECH.” - /which/that/ ? > “Depending on implementation details and deployment settings, use > cases which depend on “ - /which/that/ ? > “Values which are independent of the true server name, or other > information the client wishes to protect, MAY be included in > ClientHelloOuter.” - /which/that/ ? > “Values which depend on the contents of ClientHelloInner, such as the > true server name, can influence how client-facing servers process > this message.” - /which/that/ ? > “A malicious attacker may craft a packet which takes excessive resources > to decompress” - /which/that/ ? > “These requirements prevent an attacker from performing a packet > amplification attack, by crafting a ClientHelloOuter which > decompresses to a much larger ClientHelloInner.” - /which/that/ ? > > Thanks again for this detailed and useful specification. > Gorry > > > >
- [TLS] Gorry Fairhurst's No Objection on draft-iet… Gorry Fairhurst via Datatracker
- [TLS] Re: Gorry Fairhurst's No Objection on draft… Eric Rescorla