[prev in list] [next in list] [prev in thread] [next in thread] 

List:       ietf-tls
Subject:    Re: [TLS] Solving HRR woes in ECH
From:       Eric Rescorla <ekr () rtfm ! com>
Date:       2021-03-26 21:24:33
Message-ID: CABcZeBNp3EJ6F_+yCUSU9PbW+WzoVVz=FNx9O=EOuWzJ66pLDQ () mail ! gmail ! com
[Download RAW message or body]

[Attachment #2 (multipart/alternative)]


On Fri, Mar 26, 2021 at 9:30 AM Christopher Patton <cpatton=
40cloudflare.com@dmarc.ietf.org> wrote:

> I really like this idea, but I don't see it as a solution to ECH's HRR
> woes. NIck's idea boils down to providing a recipe for how to construct the
> CHOuter, but AFAICT, there's nothing in the TLS or HTTPS-RR specs that
> requires the client to follow this recipe. We would still need a way of
> reconciling differences in preferences between CHInner and CHOuter.
>

Note that this might also be of value without ECH.

-Ekr


> I think we should pursue using HTTPS-RR this way independently of ECH.
> It's not just useful for ECH, after all. All connections would benefit from
> knowing the server's preferences in advance of the ClientHello.
>
> Chris P.
>
> On Fri, Mar 26, 2021 at 8:10 AM Stephen Farrell <stephen.farrell@cs.tcd.ie>
> wrote:
>
>>
>> Hiya,
>>
>> On 26/03/2021 13:44, Ben Schwartz wrote:
>> > This seems like a reasonable suggestion to me, so long as the value is
>> > purely a "hint", as you seem to be proposing.  I would suggest
>> structuring
>> > it as an ECHConfig extension.  This would avoid the need for multiple
>> > points of integration between TLS and DNS, support the use of HRR hints
>> in
>> > other ECH use cases that don't involve DNS, and help to exercise the
>> > ECHConfig extension mechanism.
>>
>> (I'm not stating an opinion on the PR yet but...) If there
>> is to be some new data included in SVCB/HTTPS RR values then
>> that ought be structured bearing in mind who produces which
>> bits of data. An ECHConfig is a binary blob mostly produced
>> by the client-facing server, whereas TLS parameters for the
>> backend server are not produced at the same place. Including
>> the latter as an ECHConfig.extension is not therefore a good
>> design IMO. Justifying those (IMO:-) unnecessary ECHConfig
>> extensions is also not a goal.
>>
>> Information about the backend's TLS preferences, if published
>> in the DNS, ought be outside the ech value in HTTPS RRs. If
>> we wanted to publish information about the client-facing
>> server's TLS preferences in the backend's zone file, then
>> that could be put into the ECHConfig all right. (It's a pity
>> that we didn't split out the ECHConfigs from different
>> client-facing servers in SVCB/HTTPS to make all that easier
>> isn't it?)
>>
>> Cheers,
>> S.
>>
>> >
>> > On Thu, Mar 25, 2021 at 9:28 PM Nick Sullivan <nick=
>> > 40cloudflare.com@dmarc.ietf.org> wrote:
>> >
>> >> Hi Chris,
>> >>
>> >> HRR in ECH does seem challenging. This may be tangential to the PR you
>> >> linked, but there may be a way to reduce the likelihood of HRR by
>> moving
>> >> even more of the handshake negotiation into DNS. The HTTPS RR is
>> already
>> >> used for some types of negotiation (ALPN and ECH key), so why can't it
>> be
>> >> extended further to advertise to the client what the server is willing
>> to
>> >> support for cryptographic negotiations?
>> >>
>> >> For example, the HTTPS record could additionally contain the server's
>> >> supported supported_groups and cipher_suites. With this information, a
>> >> client could know which key_share extensions a server is likely to
>> accept
>> >> and adjust its clienthello accordingly. A client who typically sends
>> two
>> >> key_shares (P256 and x25519) for maximal compatibility could then
>> reduce
>> >> the size of its client hello (no need to send redundant key_shares) or
>> even
>> >> prevent an HRR flow altogether in the case that the default key_shares
>> or
>> >> cipher_suites are not supported by the server.
>> >>
>> >> This tweak wouldn't remove the need for HRR completely -- it could be
>> >> necessary when changing server configuration, for example -- but it
>> could
>> >> remove the need for HRR in the common case.
>> >>
>> >> Nick
>> >>
>> >> On Thu, Mar 25, 2021 at 8:05 PM Christopher Patton <cpatton=
>> >> 40cloudflare.com@dmarc.ietf.org> wrote:
>> >>
>> >>> Hi all,
>> >>>
>> >>> One of the open issues for ECH is how it interacts with
>> HelloRetryRequest
>> >>> (HRR). The central difficulty is that a client may advertise different
>> >>> preferences for HRR-sensitive parameters in the ClientHelloInner and
>> >>> ClientHelloOuter. And because the HRR path has no explicit signal of
>> which
>> >>> ClientHello was used, the client may not be able to know how to
>> respond.
>> >>> The following PR solves this problem by adding to HRR an explicit
>> signal of
>> >>> which ClientHello was used:
>> >>> https://github.com/tlswg/draft-ietf-tls-esni/pull/407
>> >>>
>> >>> The design was originally proposed by David Benjamin in the issue
>> >>> referenced by the PR. Along the way, It also solves a handful of
>> other HRR
>> >>> issues that have been identified.
>> >>>
>> >>> One consequence of this particular solution is that real ECH usage
>> >>> "sticks out" if the server responds with an HRR. In particular,
>> signaling
>> >>> which ClientHello was used also signals whether ECH was accepted.
>> However,
>> >>> the solution is designed to mitigate "don't stick out" attacks that
>> attempt
>> >>> to trigger the HRR codepath by fiddling with bits on the wire. The
>> >>> distinguisher only arises when HRR happens organically.
>> >>>
>> >>> Feedback is appreciated!
>> >>>
>> >>> Best,
>> >>> Chris P.
>> >>> _______________________________________________
>> >>> TLS mailing list
>> >>> TLS@ietf.org
>> >>> https://www.ietf.org/mailman/listinfo/tls
>> >>>
>> >> _______________________________________________
>> >> TLS mailing list
>> >> TLS@ietf.org
>> >> https://www.ietf.org/mailman/listinfo/tls
>> >>
>> >
>> >
>> > _______________________________________________
>> > TLS mailing list
>> > TLS@ietf.org
>> > https://www.ietf.org/mailman/listinfo/tls
>> >
>>
> _______________________________________________
> TLS mailing list
> TLS@ietf.org
> https://www.ietf.org/mailman/listinfo/tls
>

[Attachment #5 (text/html)]

<div dir="ltr"><div dir="ltr"><br></div><br><div class="gmail_quote"><div dir="ltr" \
class="gmail_attr">On Fri, Mar 26, 2021 at 9:30 AM Christopher Patton &lt;cpatton=<a \
href="mailto:40cloudflare.com@dmarc.ietf.org">40cloudflare.com@dmarc.ietf.org</a>&gt; \
wrote:<br></div><blockquote class="gmail_quote" style="margin:0px 0px 0px \
0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex"><div dir="ltr"><div>I \
really like this idea, but I don&#39;t see it as a solution to ECH&#39;s HRR woes. \
NIck&#39;s idea boils down to providing a recipe for how to construct the CHOuter, \
but AFAICT, there&#39;s nothing in the TLS or HTTPS-RR specs that requires the client \
to follow this recipe. We would still need a way of reconciling differences in \
preferences between CHInner and \
CHOuter.</div></div></blockquote><div><br></div><div>Note that this might also be of \
value without ECH.</div><div><br></div><div>-Ekr</div><div><br></div><blockquote \
class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid \
rgb(204,204,204);padding-left:1ex"><div dir="ltr"><div><br></div><div>I think we \
should pursue using HTTPS-RR this way independently of ECH. It&#39;s not just useful \
for ECH, after all. All connections would benefit from knowing the server&#39;s \
preferences in advance of the ClientHello.<br></div><div><br></div><div>Chris \
P.<br></div></div><br><div class="gmail_quote"><div dir="ltr" class="gmail_attr">On \
Fri, Mar 26, 2021 at 8:10 AM Stephen Farrell &lt;<a \
href="mailto:stephen.farrell@cs.tcd.ie" \
target="_blank">stephen.farrell@cs.tcd.ie</a>&gt; wrote:<br></div><blockquote \
class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid \
rgb(204,204,204);padding-left:1ex"><br> Hiya,<br>
<br>
On 26/03/2021 13:44, Ben Schwartz wrote:<br>
&gt; This seems like a reasonable suggestion to me, so long as the value is<br>
&gt; purely a &quot;hint&quot;, as you seem to be proposing.   I would suggest \
structuring<br> &gt; it as an ECHConfig extension.   This would avoid the need for \
multiple<br> &gt; points of integration between TLS and DNS, support the use of HRR \
hints in<br> &gt; other ECH use cases that don&#39;t involve DNS, and help to \
exercise the<br> &gt; ECHConfig extension mechanism.<br>
<br>
(I&#39;m not stating an opinion on the PR yet but...) If there<br>
is to be some new data included in SVCB/HTTPS RR values then<br>
that ought be structured bearing in mind who produces which<br>
bits of data. An ECHConfig is a binary blob mostly produced<br>
by the client-facing server, whereas TLS parameters for the<br>
backend server are not produced at the same place. Including<br>
the latter as an ECHConfig.extension is not therefore a good<br>
design IMO. Justifying those (IMO:-) unnecessary ECHConfig<br>
extensions is also not a goal.<br>
<br>
Information about the backend&#39;s TLS preferences, if published<br>
in the DNS, ought be outside the ech value in HTTPS RRs. If<br>
we wanted to publish information about the client-facing<br>
server&#39;s TLS preferences in the backend&#39;s zone file, then<br>
that could be put into the ECHConfig all right. (It&#39;s a pity<br>
that we didn&#39;t split out the ECHConfigs from different<br>
client-facing servers in SVCB/HTTPS to make all that easier<br>
isn&#39;t it?)<br>
<br>
Cheers,<br>
S.<br>
<br>
&gt; <br>
&gt; On Thu, Mar 25, 2021 at 9:28 PM Nick Sullivan &lt;nick=<br>
&gt; <a href="mailto:40cloudflare.com@dmarc.ietf.org" \
target="_blank">40cloudflare.com@dmarc.ietf.org</a>&gt; wrote:<br> &gt; <br>
&gt;&gt; Hi Chris,<br>
&gt;&gt;<br>
&gt;&gt; HRR in ECH does seem challenging. This may be tangential to the PR you<br>
&gt;&gt; linked, but there may be a way to reduce the likelihood of HRR by moving<br>
&gt;&gt; even more of the handshake negotiation into DNS. The HTTPS RR is already<br>
&gt;&gt; used for some types of negotiation (ALPN and ECH key), so why can&#39;t it \
be<br> &gt;&gt; extended further to advertise to the client what the server is \
willing to<br> &gt;&gt; support for cryptographic negotiations?<br>
&gt;&gt;<br>
&gt;&gt; For example, the HTTPS record could additionally contain the \
server&#39;s<br> &gt;&gt; supported supported_groups and cipher_suites. With this \
information, a<br> &gt;&gt; client could know which key_share extensions a server is \
likely to accept<br> &gt;&gt; and adjust its clienthello accordingly. A client who \
typically sends two<br> &gt;&gt; key_shares (P256 and x25519) for maximal \
compatibility could then reduce<br> &gt;&gt; the size of its client hello (no need to \
send redundant key_shares) or even<br> &gt;&gt; prevent an HRR flow altogether in the \
case that the default key_shares or<br> &gt;&gt; cipher_suites are not supported by \
the server.<br> &gt;&gt;<br>
&gt;&gt; This tweak wouldn&#39;t remove the need for HRR completely -- it could \
be<br> &gt;&gt; necessary when changing server configuration, for example -- but it \
could<br> &gt;&gt; remove the need for HRR in the common case.<br>
&gt;&gt;<br>
&gt;&gt; Nick<br>
&gt;&gt;<br>
&gt;&gt; On Thu, Mar 25, 2021 at 8:05 PM Christopher Patton &lt;cpatton=<br>
&gt;&gt; <a href="mailto:40cloudflare.com@dmarc.ietf.org" \
target="_blank">40cloudflare.com@dmarc.ietf.org</a>&gt; wrote:<br> &gt;&gt;<br>
&gt;&gt;&gt; Hi all,<br>
&gt;&gt;&gt;<br>
&gt;&gt;&gt; One of the open issues for ECH is how it interacts with \
HelloRetryRequest<br> &gt;&gt;&gt; (HRR). The central difficulty is that a client may \
advertise different<br> &gt;&gt;&gt; preferences for HRR-sensitive parameters in the \
ClientHelloInner and<br> &gt;&gt;&gt; ClientHelloOuter. And because the HRR path has \
no explicit signal of which<br> &gt;&gt;&gt; ClientHello was used, the client may not \
be able to know how to respond.<br> &gt;&gt;&gt; The following PR solves this problem \
by adding to HRR an explicit signal of<br> &gt;&gt;&gt; which ClientHello was \
used:<br> &gt;&gt;&gt; <a \
href="https://github.com/tlswg/draft-ietf-tls-esni/pull/407" rel="noreferrer" \
target="_blank">https://github.com/tlswg/draft-ietf-tls-esni/pull/407</a><br> \
&gt;&gt;&gt;<br> &gt;&gt;&gt; The design was originally proposed by David Benjamin in \
the issue<br> &gt;&gt;&gt; referenced by the PR. Along the way, It also solves a \
handful of other HRR<br> &gt;&gt;&gt; issues that have been identified.<br>
&gt;&gt;&gt;<br>
&gt;&gt;&gt; One consequence of this particular solution is that real ECH usage<br>
&gt;&gt;&gt; &quot;sticks out&quot; if the server responds with an HRR. In \
particular, signaling<br> &gt;&gt;&gt; which ClientHello was used also signals \
whether ECH was accepted. However,<br> &gt;&gt;&gt; the solution is designed to \
mitigate &quot;don&#39;t stick out&quot; attacks that attempt<br> &gt;&gt;&gt; to \
trigger the HRR codepath by fiddling with bits on the wire. The<br> &gt;&gt;&gt; \
distinguisher only arises when HRR happens organically.<br> &gt;&gt;&gt;<br>
&gt;&gt;&gt; Feedback is appreciated!<br>
&gt;&gt;&gt;<br>
&gt;&gt;&gt; Best,<br>
&gt;&gt;&gt; Chris P.<br>
&gt;&gt;&gt; _______________________________________________<br>
&gt;&gt;&gt; TLS mailing list<br>
&gt;&gt;&gt; <a href="mailto:TLS@ietf.org" target="_blank">TLS@ietf.org</a><br>
&gt;&gt;&gt; <a href="https://www.ietf.org/mailman/listinfo/tls" rel="noreferrer" \
target="_blank">https://www.ietf.org/mailman/listinfo/tls</a><br> &gt;&gt;&gt;<br>
&gt;&gt; _______________________________________________<br>
&gt;&gt; TLS mailing list<br>
&gt;&gt; <a href="mailto:TLS@ietf.org" target="_blank">TLS@ietf.org</a><br>
&gt;&gt; <a href="https://www.ietf.org/mailman/listinfo/tls" rel="noreferrer" \
target="_blank">https://www.ietf.org/mailman/listinfo/tls</a><br> &gt;&gt;<br>
&gt; <br>
&gt; <br>
&gt; _______________________________________________<br>
&gt; TLS mailing list<br>
&gt; <a href="mailto:TLS@ietf.org" target="_blank">TLS@ietf.org</a><br>
&gt; <a href="https://www.ietf.org/mailman/listinfo/tls" rel="noreferrer" \
target="_blank">https://www.ietf.org/mailman/listinfo/tls</a><br> &gt; <br>
</blockquote></div>
_______________________________________________<br>
TLS mailing list<br>
<a href="mailto:TLS@ietf.org" target="_blank">TLS@ietf.org</a><br>
<a href="https://www.ietf.org/mailman/listinfo/tls" rel="noreferrer" \
target="_blank">https://www.ietf.org/mailman/listinfo/tls</a><br> \
</blockquote></div></div>



_______________________________________________
TLS mailing list
TLS@ietf.org
https://www.ietf.org/mailman/listinfo/tls


[prev in list] [next in list] [prev in thread] [next in thread] 

Configure | About | News | Add a list | Sponsored by KoreLogic