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 <
nore...@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 mailing list -- tls@ietf.org
To unsubscribe send an email to tls-le...@ietf.org

Reply via email to