[TLS] Re: Mohamed Boucadair's Discuss on draft-ietf-tls-esni-24: (with DISCUSS and COMMENT)
Eric Rescorla <ekr@rtfm.com> Tue, 06 May 2025 21:37 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 7AF4B25A045D for <tls@mail2.ietf.org>; Tue, 6 May 2025 14:37:22 -0700 (PDT)
X-Virus-Scanned: amavisd-new at ietf.org
X-Spam-Flag: NO
X-Spam-Score: -1.897
X-Spam-Level:
X-Spam-Status: No, score=-1.897 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] autolearn=ham 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 EaKxbBCddL7N for <tls@mail2.ietf.org>; Tue, 6 May 2025 14:37:20 -0700 (PDT)
Received: from mail-yw1-x112a.google.com (mail-yw1-x112a.google.com [IPv6:2607:f8b0:4864:20::112a]) (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 07ACF25A03FD for <tls@ietf.org>; Tue, 6 May 2025 14:37:20 -0700 (PDT)
Received: by mail-yw1-x112a.google.com with SMTP id 00721157ae682-702628e34f2so3841887b3.0 for <tls@ietf.org>; Tue, 06 May 2025 14:37:20 -0700 (PDT)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=rtfm-com.20230601.gappssmtp.com; s=20230601; t=1746567439; x=1747172239; 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=ZJR3ud0ebMSMX6D1aEIeLU9xMaseGr5FAdP6II6uNWs=; b=OIE6Nc6mpGAvmlYsTEZapDgbdhz/r81VXzpPU9rQedf6f0accz6FnE6ULaokHAZwVq 08VxFT2jfbddibyh7grr8dO9qqTPCrSCd/iccyKV3JLHoU5cFvEJHp664tMazOPyhroJ TCi1xPGnK2C8DAeftCLC8CWVB4r6d7Co3aCAFLZeHA6uoYpRd9y9gktyud8xuNaRro3L e0rjmjsQVJXTwT4GSOfnDvpxTyJkMKZr9T8we0322yqd0FzFAfA8xtd+FYFxWGFx4ee8 sHxDmwL+x016JHsEag266b4mdsQYOfM4s2ocey6+Urm0/49HKB5yTU5mFFEbWS5PTA0j XdQw==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1746567439; x=1747172239; 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=ZJR3ud0ebMSMX6D1aEIeLU9xMaseGr5FAdP6II6uNWs=; b=QCETR9uK+BEcYtZD9JGXxhD5iBxzOeldKivz7wZFeyi6lTVQY108RB+R7n9vBCEeg0 8aS5jLXC8KAujY1QRq4gT1O+ipVUGDXZ7dgu7u93/CngszNddHexGEEjlQ4+1Tt1bTn5 /BUbNMkPP8O4Dvd5ZUw/GrQYi3U+S0xolZibh2IXfbDsh098QYzDAaLuez3jauOoSh6k IseGAfVW8yHwc8mu5NePYuSLRPIcixZBnBl9HIFtPMMjEcga48uk77PPDs7FGMjKZxTP Kx3D8ylKKg/eqS+A+9FZaUn0bTpXICF1ZynFIBHEx900vOfprtIvU8ix2m9Yzf6MKlvf QIug==
X-Forwarded-Encrypted: i=1; AJvYcCXvOLo6T8oW5p3CyWdt0URAYod8e+t9lI6wfKLwR+HNOmMccv3fE0tvUouvJXuu0OgSDpw=@ietf.org
X-Gm-Message-State: AOJu0Yyh9tjiL7lk+NnIJ2iznxsH6lW5Mc/W/24fz70dVsw/FMjwmKrK yFo0lojZPNg1Ya1MjZ5l0O4k6nNeofejB5g90nJc99G046kAPOeu3Gd7Hk7mbmrKibNCKvXMBQX Tq4X1vG2INGqRC/uZMGBKxK7PT6CLjzDVqyE72w==
X-Gm-Gg: ASbGnctk/UCpNZ4HslL4hRWVlrDYPzppKQ3eX/LifQcDRb/GTeTW3/SJaSO1zoInP14 Sx47IHAcQr/LVGKx/K4Ty2W7VXafECEzLW6Y0OVeUtaW3sYMjKUNUPmbkWFe2uGsFpmltoGm9im ClL4crEeCSewcN2W4i7sFrH5YrTOqvVVgT5VJzxY/75eDq/MMpUXruFI8=
X-Google-Smtp-Source: AGHT+IF1VjMiOej9+Kebsv1rEVfv0e1/z/9+XN9A+uMFtaqq2QXau/miywnxnzQ+QuseyDz8eAMDW5DXwpm83m9hsuc=
X-Received: by 2002:a05:690c:4587:b0:703:b200:9f08 with SMTP id 00721157ae682-70a1e1e0fd3mr11355857b3.4.1746567439190; Tue, 06 May 2025 14:37:19 -0700 (PDT)
MIME-Version: 1.0
References: <174654055559.678918.7219031199891418697@dt-datatracker-58d4498dbd-6gzjf>
In-Reply-To: <174654055559.678918.7219031199891418697@dt-datatracker-58d4498dbd-6gzjf>
From: Eric Rescorla <ekr@rtfm.com>
Date: Tue, 06 May 2025 14:36:43 -0700
X-Gm-Features: ATxdqUEXQr3YBbXrNAMrTxfYIXASri9yV8P7JobVJ2et7xCpwx2RmGTIk5LAAYk
Message-ID: <CABcZeBOyT_ZvA5LLmnQZZ1ksOxrCL-NabA=v5qF1UaH18UUBUQ@mail.gmail.com>
To: Mohamed Boucadair <mohamed.boucadair@orange.com>
Content-Type: multipart/alternative; boundary="000000000000ca285606347e6b70"
Message-ID-Hash: 4TISET77HAEKZO5QXOIG6CY4AT26ACFI
X-Message-ID-Hash: 4TISET77HAEKZO5QXOIG6CY4AT26ACFI
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: Mohamed Boucadair's Discuss on draft-ietf-tls-esni-24: (with DISCUSS and 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/cvBViRu9QNbjV8VRdnYyOdVzW8g>
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>
Med, Thank you for your comments. Responses below. > Please find below some few DISCUSS points and a set of comments. > > # Require or not require DNS/9460+ECH-IN-DNS > > ## Recommendation? > > CURRENT: > This document defines the ECH configuration's format, but > delegates DNS publication details to [RFC9460]. > > 9460/ECH-IN-DNS are cited as normative. This "seems" to assume that making use > of ECH requires this specific discovery. No, I don't think that's correct. It's normative because some of the mechanisms in this document -- whether mandatory or not -- depend on that specification. > If that is a recommended deployment > approach, then the text should say so explicitly. It's the only current at-scale deployment approach. However, I don't think we need to take a position either way. This specification tells you how to do it, but doesn't need to require or even recommend any specific mechanism. > ## ECH use with Encrypted DNS Server > > Note also that other mechanisms such as DNR (RFC9463) can be used to learn ECH > service parameter to connect to a DoH server itself. This is not possible > directly with 9460 for the connection with an encrypted DNS resolver. Yes, this is true, but I don't believe any action is required here. > # Per-server configuration > > The spec defines a generic ECH Config structure that can be used by clients. > However, there is no discussion how this can be indexed locally and bind it to > a server. IMO, this should be independent of the ech discovery mechanism. I don't believe this is indicated. Different delivery mechanisms might have different properties, for instance because the DNS mechanism applies only to specific IPs. Even in this specification, you have to handle retry and non-retry ECHConfigs differently. > # (apparent) Inconsistency vs ECH-IN-DNS? > > ECH spec says the following in Section 8.1 > > Thus server operators SHOULD ensure servers understand a given set of ECH > keys before advertising them. > > ECH-IN-DNS says the following in Section 4: > > When publishing a record containing an "ech" parameter, the publisher > MUST ensure that all IP addresses of TargetName correspond to servers > that have access to the corresponding private key or are > authoritative for the public name > > Avoiding failures is the main motivation for both “ensure” behaviors. Is there > a reason why one spec uses SHOULD while the other uses a MUST? > > Please check. Thanks. See Ben's response. These requirements apply to different keys. > # Section 1 > > ## Newer versions > > CURRENT: > ECH is supported in TLS 1.3 [RFC8446], DTLS 1.3 [RFC9147], and newer > versions of the TLS and DTLS protocols. > > Do we mean that future versions must support this? No. We are saying that we expect it will work in future versions but not older versions. > # Section 5.1 > > ## Contiguous > > CURRENT: > The > values MUST be ordered contiguously in ClientHelloInner, and the > > Unless I missed it, I didn’t see any check on this at the receiver side? Should > we have one? It's enforced automatically, because it's a compression/decompression transformation and otherwise it will not be reversible. > ## Substitute > > CURRENT: > the client MAY substitute > extensions which it knows will be duplicated in ClientHelloOuter. > > Is this substitution triggered by configuration? Can a client make an > autonomous decision here? If no, please explicit that this is based on an > instruction/configuration. I don't understand the question. This is just something the client is permitted to do, just as with any other point of variation in the protocol. We don't take a position on whether clients should do it or not or on what basis they should decide. > # Mysterious “network attacker” > > There are some few uses of such mention in the spec. > > For example, Section 5.2 has the following: > > To prevent a network attacker from modifying the ClientHelloOuter > while keeping the same encrypted ClientHelloInner > > Also, Section 8.1.1 says: > > Unless ECH is disabled as a result of successfully establishing a > connection to the public name, the client MUST NOT fall back to using > unencrypted ClientHellos, as this allows a network attacker to > disclose the contents of this ClientHello, including the SNI. > > What is a “network attacker”? This is referring to the Internet Threat Model from S 3. of RFC 3552. > Attacks can be even from within the infrastructure that hosts the client-facing > server/backend server! Not sure if your use of “network attacker” covers that > case as well. >From the perspective of this document they are a single unit, even if they are actually distributed. > Please reword for clarity. I believe this is sufficiently clear and matches our normal conventions. > # Section 6.1.7 > > ## An obsolete RFC > > CURRENT: > In verifying the client-facing server certificate, the client MUST > interpret the public name as a DNS-based reference identity > [RFC6125]. > > Any reason why RFC9125 is not used here? Version skew. This will get fixed in RPC processing. > ## Layer > > CURRENT: > Clients that enforce this by checking ECHConfig.contents.public_name > do not need to repeat the check at this layer. > > Which layer? During the ECH rejection flow. I have updated the text to make this slightly clearer. See https://github.com/tlswg/draft-ietf-tls-esni/pull/653 for this and other changes. > ## Reasoning > > CURRENT: > Prior to attempting a connection, a client SHOULD validate the > ECHConfig. Clients SHOULD ignore any ECHConfig structure with a > public_name that is not a valid host name in preferred name syntax > (see Section 2 of [DNS-TERMS]). > > Any reason why invalid configuration are not unconditionally ignored? This was extensively debated in the WG and there were some situations where people wanted flexibility here. It does not create interoperability problems to have it be a SHOULD. > # How to retrieve the value used by an implementation for the following? > > CURRENT: > Clients SHOULD impose the same lifetime and scope > restrictions that they apply to other server-based tracking vectors > such as PSKs. > > This may be used for troubleshooting/diagnostic. I don't understand what you're asking for here. We don't generally specify how to introspect into the behavior of a client's TLS stack, though of course it's often possible. > # On Middleboxes in Section 8.1.2 > > Any impact to record for load-balancers that used to rely in SNI to distribute > requests? They'll need to terminate ECH. I added some text. > # Legitimate use of SNI may break > > CURRENT: > Some use cases which depend on information ECH encrypts may break > with the deployment of ECH. > > We may cite RFC9065 here. I'd rather not get into it here, because thus turnes out to be a controversial topic. > # Do we have record for the “common scenario” claim in Section 10.2? > > CURRENT: > This means that any attacker which can > inject DNS responses or poison DNS caches, which is a common scenario > in client access networks, I believe that captive portals are sufficiently well known to as be common knowledge. > # What is meant by “transit mechanisms” in Section 10.2? DoT, DoH, etc. > CURRENT: > Moreover, as noted in the introduction, SNI encryption is less useful > without encryption of DNS queries in transit mechanisms. Changed to "in transport". > # Section 10.10.5: Regularly > > CURRENT: > This design does not provide forward secrecy for the inner > ClientHello because the server's ECH key is static. However, the > window of exposure is bound by the key lifetime. It is RECOMMENDED > that servers rotate keys regularly. > > Any guidance on how frequent key rotation should be done to avoid impact > service stability and ensure service continuity? Any pointer to cite on such > matters? > > Adam raised a more general comment: > > “If it is possible (possibly not in this drat) to offer more detailed > operational guidance on key rotation, that would be helpful. There are some > points in the document that might allude to implementation-specific > configuration choices. Implementations would ideally expose these choices to > operators so they can make the best possible choices for their needs.” > > Some words on these matters would be helpful. Thanks. The WG discussed this extensively and concluded that we had said what could be said. > # Section 10.11: Redundant padding requirement with the SHOULDs in 6.1.3 > > OLD: > Variations in the length of the ClientHelloInner ciphertext could > leak information about the corresponding plaintext. Section 6.1.3 > describes a RECOMMENDED padding mechanism for clients aimed at > reducing potential information leakage. > > NEW: > Variations in the length of the ClientHelloInner ciphertext could > leak information about the corresponding plaintext. Section 6.1.3 > describes a recommended padding mechanism for clients aimed at > reducing potential information leakage. I believe RECOMMENDED makes it clearer in this case. It's not uncommon to have redundant 2119 language. > # Any reason why this text is not included in the main body? > > CURRENT: > Appendix A. ECHConfig Extension Guidance This has already been moved in the editor's copy. -Ekr On Tue, May 6, 2025 at 7:09 AM Mohamed Boucadair via Datatracker < noreply@ietf.org> wrote: > Mohamed Boucadair has entered the following ballot position for > draft-ietf-tls-esni-24: Discuss > > 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/ > > > > ---------------------------------------------------------------------- > DISCUSS: > ---------------------------------------------------------------------- > > Hi Eric, Kazuho, Nick, and Christopher, > > Thank you for the effort put into this specification. > > Also, thanks to Giuseppe Fioccola for the OPSDIR review. > > The document is well-written with a good discussion on deployment > considerations and impacts on some existing use of SNI (network management, > attack detection, etc.). There are parts where more operational guidance > would > be helpful as highlighted in Adam Montville’s secdir review. > > Please find below some few DISCUSS points and a set of comments. > > # Require or not require DNS/9460+ECH-IN-DNS > > ## Recommendation? > > CURRENT: > This document defines the ECH configuration's format, but > delegates DNS publication details to [RFC9460]. > > 9460/ECH-IN-DNS are cited as normative. This "seems" to assume that making > use > of ECH requires this specific discovery. If that is a recommended > deployment > approach, then the text should say so explicitly. > > Such recommendation does not prevent use of ECH independent of the > ECH-IN-DNS. > Existing text is clear on this matter, Section 3.2: > > Other delivery mechanisms are also possible. For example, > the client may have the ECH configuration preconfigured. > > ## ECH use with Encrypted DNS Server > > Note also that other mechanisms such as DNR (RFC9463) can be used to learn > ECH > service parameter to connect to a DoH server itself. This is not possible > directly with 9460 for the connection with an encrypted DNS resolver. > > # Per-server configuration > > The spec defines a generic ECH Config structure that can be used by > clients. > However, there is no discussion how this can be indexed locally and bind > it to > a server. IMO, this should be independent of the ech discovery mechanism. > > # (apparent) Inconsistency vs ECH-IN-DNS? > > ECH spec says the following in Section 8.1 > > Thus server operators SHOULD ensure servers understand a given set of > ECH > keys before advertising them. > > ECH-IN-DNS says the following in Section 4: > > When publishing a record containing an "ech" parameter, the publisher > MUST ensure that all IP addresses of TargetName correspond to servers > that have access to the corresponding private key or are > authoritative for the public name > > Avoiding failures is the main motivation for both “ensure” behaviors. Is > there > a reason why one spec uses SHOULD while the other uses a MUST? > > Please check. Thanks. > > > ---------------------------------------------------------------------- > COMMENT: > ---------------------------------------------------------------------- > > # Section 1 > > ## Newer versions > > CURRENT: > ECH is supported in TLS 1.3 [RFC8446], DTLS 1.3 [RFC9147], and newer > versions of the TLS and DTLS protocols. > > Do we mean that future versions must support this? > > # Section 5.1 > > ## Contiguous > > CURRENT: > The > values MUST be ordered contiguously in ClientHelloInner, and the > > Unless I missed it, I didn’t see any check on this at the receiver side? > Should > we have one? > > ## Substitute > > CURRENT: > the client MAY substitute > extensions which it knows will be duplicated in ClientHelloOuter. > > Is this substitution triggered by configuration? Can a client make an > autonomous decision here? If no, please explicit that this is based on an > instruction/configuration. > > # Mysterious “network attacker” > > There are some few uses of such mention in the spec. > > For example, Section 5.2 has the following: > > To prevent a network attacker from modifying the ClientHelloOuter > while keeping the same encrypted ClientHelloInner > > Also, Section 8.1.1 says: > > Unless ECH is disabled as a result of successfully establishing a > connection to the public name, the client MUST NOT fall back to using > unencrypted ClientHellos, as this allows a network attacker to > disclose the contents of this ClientHello, including the SNI. > > What is a “network attacker”? > > Attacks can be even from within the infrastructure that hosts the > client-facing > server/backend server! Not sure if your use of “network attacker” covers > that > case as well. > > Please reword for clarity. > > # Section 6.1.7 > > ## An obsolete RFC > > CURRENT: > In verifying the client-facing server certificate, the client MUST > interpret the public name as a DNS-based reference identity > [RFC6125]. > > Any reason why RFC9125 is not used here? > > ## Layer > > CURRENT: > Clients that enforce this by checking ECHConfig.contents.public_name > do not need to repeat the check at this layer. > > Which layer? > > ## Reasoning > > CURRENT: > Prior to attempting a connection, a client SHOULD validate the > ECHConfig. Clients SHOULD ignore any ECHConfig structure with a > public_name that is not a valid host name in preferred name syntax > (see Section 2 of [DNS-TERMS]). > > Any reason why invalid configuration are not unconditionally ignored? > > # How to retrieve the value used by an implementation for the following? > > CURRENT: > Clients SHOULD impose the same lifetime and scope > restrictions that they apply to other server-based tracking vectors > such as PSKs. > > This may be used for troubleshooting/diagnostic. > > # On Middleboxes in Section 8.1.2 > > Any impact to record for load-balancers that used to rely in SNI to > distribute > requests? > > # Legitimate use of SNI may break > > CURRENT: > Some use cases which depend on information ECH encrypts may break > with the deployment of ECH. > > We may cite RFC9065 here. > > # Do we have record for the “common scenario” claim in Section 10.2? > > CURRENT: > This means that any attacker which can > inject DNS responses or poison DNS caches, which is a common scenario > in client access networks, > > # What is meant by “transit mechanisms” in Section 10.2? > > CURRENT: > Moreover, as noted in the introduction, SNI encryption is less useful > without encryption of DNS queries in transit mechanisms. > > # Section 10.10.5: Regularly > > CURRENT: > This design does not provide forward secrecy for the inner > ClientHello because the server's ECH key is static. However, the > window of exposure is bound by the key lifetime. It is RECOMMENDED > that servers rotate keys regularly. > > Any guidance on how frequent key rotation should be done to avoid impact > service stability and ensure service continuity? Any pointer to cite on > such > matters? > > Adam raised a more general comment: > > “If it is possible (possibly not in this drat) to offer more detailed > operational guidance on key rotation, that would be helpful. There are > some > points in the document that might allude to implementation-specific > configuration choices. Implementations would ideally expose these > choices to > operators so they can make the best possible choices for their needs.” > > Some words on these matters would be helpful. Thanks. > > # Section 10.11: Redundant padding requirement with the SHOULDs in 6.1.3 > > OLD: > Variations in the length of the ClientHelloInner ciphertext could > leak information about the corresponding plaintext. Section 6.1.3 > describes a RECOMMENDED padding mechanism for clients aimed at > reducing potential information leakage. > > NEW: > Variations in the length of the ClientHelloInner ciphertext could > leak information about the corresponding plaintext. Section 6.1.3 > describes a recommended padding mechanism for clients aimed at > reducing potential information leakage. > > # Any reason why this text is not included in the main body? > > CURRENT: > Appendix A. ECHConfig Extension Guidance > > Cheers, > Med > > > >
- [TLS] Mohamed Boucadair's Discuss on draft-ietf-t… Mohamed Boucadair via Datatracker
- [TLS] Re: Mohamed Boucadair's Discuss on draft-ie… Ben Schwartz
- [TLS] Re: Mohamed Boucadair's Discuss on draft-ie… Eric Rescorla
- [TLS] Re: Mohamed Boucadair's Discuss on draft-ie… mohamed.boucadair
- [TLS] Re: Mohamed Boucadair's Discuss on draft-ie… mohamed.boucadair
- [TLS] Re: Mohamed Boucadair's Discuss on draft-ie… Eric Rescorla