On Mon, Jul 7, 2025 at 12:11 PM Eric Rescorla <e...@rtfm.com> wrote:

> On Mon, Jul 7, 2025 at 8:23 AM David Benjamin <david...@chromium.org>
> wrote:
>
>> Hmm, these MUSTs puzzle me too. I recall a ton of fuss during ECH's
>> design in ensuring that frontend -> backend communication in split mode
>> didn't require any special channels (e.g. how the ECH acceptance signal
>> depends  only on ClientHelloInner and not the HPKE secret).
>>
>
> Yes, that's correct.
>
>
>> Having a backend server know it is a backend server seems slightly
>> inconsistent with this; if backend servers are special entrypoints, then we
>> could have avoided all those constraints.
>>
>
> Hmm... I don't think knowing you are a back-end server is really the same
> as a special channel.
>

I think the MUST requirements imply a special channel. It's specifically
knowing that the channel for ClientHelloInner will *only* receive
ClientHellos from a client-facing server. If you accept general client
traffic, you'll break. If nothing else because of this rule, in combination
with GREASE:

> Similarly, in split mode, a backend server which receives a ClientHello
with ECHClientHello.type of outer MUST abort with an "illegal_parameter"
alert.

If you already had to configure your serving infrastructure to listen on
this port and speak TLSForECHBackend, we didn't have any compatibility
requirement to make it take a ClientHello. It could have passed whatever
was convenient.

Not that that would be a broken protocol. I don't know how much I
personally buy the non-coordinating client-facing and backend server
theory. But if the WG wanted a protocol that supported this theory, the
MUSTs are a bit inconsistent with that.

David


> -Ekr
>
>
>
> I had assumed the intended design was that TLS servers would just treat
>> the type=inner ClientHello as a "please swizzle your server random" marker
>> but otherwise not care too much about whether it received it internally
>> (shared mode) or somewhere over the network. (Presumably from some
>> client-facing server, but if not, nothing bad really happens.)
>>
>> On Sat, Jul 5, 2025 at 9:40 PM Stephen Farrell <stephen.farr...@cs.tcd.ie>
>> wrote:
>>
>>>
>>> Hiya,
>>>
>>> On 06/07/2025 01:14, Eric Rescorla wrote:
>>> > I'm confused. Backend servers already know they are backend servers,
>>> as in
>>> > S 7.2. The only new code here is that they must reject anything with
>>> > ECH.type == outer.
>>>
>>> Let me posit an example. Say we have CFS setup as a frontend
>>> and BE setup as a backend, with e.g. some VPN in between. As
>>> BE is ECH-aware, but has no ECH private keys, it knows how to
>>> produce an ECH-acceptance signal when it gets an inner CH. CFS
>>> and BE also need to know how to handle cases where the client
>>> is not ECH enabled, which will happen quite often, for some
>>> years at least.
>>>
>>> The current text seems to require the CFS to route connections
>>> to BE differently if ECH decryption worked or not, e.g. to a
>>> different port on BE, whereas it seems more natural to route
>>> those connections to the same BE port based on the inner SNI
>>> when ECH decryption worked, or the outer SNI if ECH wasn't
>>> attempted. (That's what the haproxy and nginx split-mode CFS
>>> code we've done can do, albeit that code hasn't been upstreamed.)
>>>
>>> If the current text requires the CFS to route connections
>>> differently based on whether or not ECH decryption worked,
>>> I'm not seeing why that's a win.
>>>
>>> But maybe I'm missing something that'd mean that BE needs to
>>> be configured differently based on whether ECH decryption
>>> worked, or whether ECH wasn't attempted. If the CFS routes
>>> connections to the same port on BE regardless, that seems
>>> ok, so I'm also not seeing a security problem if that's
>>> allowed.
>>>
>>> So, am I missing something? (Which happens often:-)
>>>
>>> Cheers,
>>> S.
>>>
>>> PS: I'm not arguing that the current text can't work, only
>>> that I don't understand why it's wise.
>>>
>>>
>>> _______________________________________________
>>> TLS mailing list -- tls@ietf.org
>>> To unsubscribe send an email to tls-le...@ietf.org
>>>
>>
_______________________________________________
TLS mailing list -- tls@ietf.org
To unsubscribe send an email to tls-le...@ietf.org

Reply via email to