On Mon, Sep 18, 2023 at 10:06 AM Yoav Weiss <yoavwe...@chromium.org> wrote:
> > > On Sat, Sep 16, 2023 at 5:35 PM David Benjamin <david...@chromium.org> > wrote: > >> On Sat, Sep 16, 2023 at 1:12 AM Yoav Weiss <yoavwe...@chromium.org> >> wrote: >> >>> >>> >>> On Fri, Sep 15, 2023 at 10:05 PM Mike Taylor <miketa...@chromium.org> >>> wrote: >>> >>>> On 9/11/23 6:34 PM, 'David Adrian' via blink-dev wrote: >>>> >>>> Contact emails david...@chromium.org, dadr...@google.com >>>> >>>> Explainer None >>>> >>>> I think a short explainer that outlines what this is and what's the >>> typical flow would be helpful. While that content could've been part of the >>> draft, that doesn't seem to be the case, at least at a glance. >>> >> >> This is a process mismatch that comes up for every networking >> protocol. The expected audiences and also style of spec are very different. >> Explainers make sense for W3C-style specs where the other consumer of the >> feature is a web developer who wants to understand how to use the API and >> not how to implement it step-by-step. The audience for a network protocol >> is completely different. The other consumer of the feature is a TLS server >> software implementer, who *also* needs to understand the full protocol. >> > > Explainers are not destined only for web developers. > In this particular case, I'd think the audience for this is the API owners > (who may or may not have time to read the full I-D), as well as the broader > Blink community that keeps tabs on what we're shipping, and may want to > understand more about this feature and what it gives them as users. Note > that I'm not necessarily asking for a long and complex document - a short > explainer that outlines the status quo, what this is changing and how the > new flow works would do the trick. > > >> >> When it gets filtered up to web developers and server operators, all they >> see is how to configure their server software, which is specific to that >> software. I.e. they would need to refer to their server software >> documentation. >> >> As for an overview for a non-participant to understand the protocol, >> section 1 gives an introduction, and section 3 of the draft covers the >> typical flow. Keep in mind this is not a web platform API, but a TLS >> extension that lives far, far below the HTTP abstraction, so one should not >> expect discussion of anything particularly webby. And, as noted above, >> anything at the level of configuring server software will be >> server-software-specific, so that also would not make sense here. >> > > The intro in section 1 is great, but the flow could use a simpler > explanation. > > >> >> >>> >>>> >>>> Specification https://datatracker.ietf.org/doc/html/draft-ietf-tls-esni >>>> >>>> Summary >>>> >>>> The TLS Encrypted ClientHello (ECH) extension enables clients to >>>> encrypt ClientHello messages, which are normally sent in cleartext, under a >>>> server’s public key. This allows websites to opt-in to avoid leaking >>>> sensitive fields, like the server name, to the network by hosting a special >>>> HTTPS RR DNS record. (Earlier iterations of this extension were called >>>> Encrypted Server Name Indication, or ESNI.) >>>> >>>> >>>> Blink component Internals>Network>SSL >>>> <https://bugs.chromium.org/p/chromium/issues/list?q=component:Internals%3ENetwork%3ESSL> >>>> >>>> Search tags ech <https://chromestatus.com/features#tags:ech>, esni >>>> <https://chromestatus.com/features#tags:esni>, tls >>>> <https://chromestatus.com/features#tags:tls>, ssl >>>> <https://chromestatus.com/features#tags:ssl> >>>> >>>> TAG review Not applicable; this is a protocol under IETF >>>> >>>> TAG review status Not applicable >>>> >>>> Risks >>>> >>>> >>>> Interoperability and Compatibility >>>> >>>> As a networking protocol, interoperability risks look different from a >>>> web platform API: This is a draft of a developing protocol, so the final >>>> standard will differ from what we ship now. We manage this as in other >>>> protocol work: the draft uses different codepoints in the DNS record and >>>> ClientHello, set up to not conflict with the final standard. There is also >>>> a risk of breaking buggy servers or network middleware. ECH is DNS-gated, >>>> so non-ECH servers won't be exposed to ECH itself. We do implement ECH's >>>> GREASE mechanism (section 6.2 of the draft), but this should appear as any >>>> normal unrecognized extension to non-ECH servers. Servers and network >>>> elements that are compliant with RFC 8446, section 9.3, should not be >>>> impacted. We will be monitoring for these issues as part of the experiment, >>>> comparing error rates and handshake times both for HTTPS servers as a >>>> whole, and the subset of those that advertise ECH in DNS. >>>> >>>> >>>> *Gecko*: In development ( >>>> https://blog.mozilla.org/security/2021/01/07/encrypted-client-hello-the-future-of-esni-in-firefox >>>> ) >>>> >>>> *WebKit*: No signal >>>> >>>> Could we please request a signal? >>>> >>>> https://github.com/WebKit/standards-positions/issues/new/choose >>>> >>>> >>>> *Web developers*: Positive ( >>>> https://blog.cloudflare.com/encrypted-client-hello) >>>> >>>> *Other signals*: >>>> >>>> Ergonomics >>>> >>>> ECH is part of TLS, so it is largely abstracted away from web platform >>>> APIs themselves. >>>> >>>> >>>> Activation >>>> >>>> This is a network protocol and thus inherently requires server software >>>> changes. It also requires keys deployed in the HTTPS DNS record. At this >>>> stage in the process, we do not expect ECH to be deployed beyond a few >>>> early adopters. Rather, this experiment is part of real-world testing for >>>> the developing protocol. The connection with the DNS record is of >>>> particular note. It is possible that, due to DNS caching, etc., that the >>>> DNS record we fetch is out of sync with the server instance we talk to. ECH >>>> has a built-in recovery mechanism to repair these mismatches. >>>> >>>> Can you expand on these recovery mechanisms? (maybe as part of the >>> explainer requested above) >>> >> >> See section 3.2 and 6.1.6 of the draft. >> >> Broadly, if the server fails to decrypt the inner ClientHello, it >> handshakes with the outer one instead and provides replacement keys. That >> handshake is authenticated against the config's public name, which >> authenticates the replacement keys and the client retries the connection. >> > > Here again, an explainer would've been useful, assuming you don't expect > reviewers and interested folks to read through the entire I-D. > > >> >>> One of the aims of the experiment will be to validate this mechanism. >>>> >>>> >>>> Security >>>> >>>> See >>>> https://datatracker.ietf.org/doc/html/draft-ietf-tls-esni-14#section-10 >>>> for security considerations in the specification >>>> >>>> >>>> WebView application risks >>>> >>>> Does this intent deprecate or change behavior of existing APIs, such >>>> that it has potentially high risk for Android WebView-based applications? >>>> >>>> No WebView-specific risks >>>> >>>> >>>> Debuggability >>>> >>>> Servers that use ECH are visible in the DevTools security panel. >>>> >>>> >>>> Will this feature be supported on all six Blink platforms (Windows, >>>> Mac, Linux, Chrome OS, Android, and Android WebView)? Yes >>>> >>>> While supported on all platforms, ECH requires keys fetched via DNS in >>>> the new HTTPS record. Chrome can currently fetch the HTTPS record over DoH >>>> and over our built-in DNS resolver. >>>> >>>> Do we already support the HTTPS record for other purposes? Or would >>> this intent also add HTTPS record support? >>> >> >> We already support the HTTPS record. (That support could be improved, but >> that's separate from this launch and something for the loading/networking >> team to work on. This launch is about using ECH keys when we manage to >> fetch them.) >> >>> >>>> Is this feature fully tested by web-platform-tests >>>> <https://chromium.googlesource.com/chromium/src/+/main/docs/testing/web_platform_tests.md> >>>> ? No >>>> >>>> Can you expand on why? Is it due to implementation complexity of >>> network tests in python? >>> >> >> web-platform-tests has never been suitable for testing network protocols, >> especially not TLS extensions. In addition to the limitations caused by >> Python (not just implementation complexity, it's simply the wrong tool for >> that job), the infrastructure needed for testing network protocols is >> completely different, since it's not based on code running under a web >> page. Like most networking features, ECH is broadly invisible to the web >> platform itself. It's all behind the HTTP abstraction. >> https://github.com/web-platform-tests/wpt/issues/20159 >> >> This comes up for every networking protocol launch. Perhaps we need to >> refine the processes here, so that networking protocol features go through >> a slightly different template? >> > > Alternatively, you could have a generic doc or issue that outlines those > issues with WPT and networking tests. Then you could point to it in this > section. > The issue is the bug I linked above. In fact, that bug was already listed in chromestatus.com entry. It looks like this is actually a Blink process bug, where chromestatus.com does not fill this field into this section of the email. I've filed https://github.com/GoogleChrome/chromium-dashboard/issues/3335 In the meantime, I guess folks need to remember that the process is buggy and you need to go to the chromestatus entry if you see a "No" here when reviewing. > Flag name on chrome://flags encrypted-client-hello >>>> >>>> Finch feature name None >>>> >>>> Non-finch justification None >>>> >>>> Requires code in //chrome? False >>>> >>>> Tracking bug https://crbug.com/1091403 >>>> >>>> Launch bug https://crbug.com/1349902 >>>> >>>> Availability expectation Feature is also being launched in Firefox. >>>> >>>> Sample links >>>> https://tls-ech.dev >>>> >>>> Estimated milestones >>>> Shipping on desktop 117 >>>> OriginTrial desktop last 116 >>>> OriginTrial desktop first 115 >>>> DevTrial on desktop 105 >>>> Shipping on Android 117 >>>> OriginTrial Android last 116 >>>> OriginTrial Android first 115 >>>> DevTrial on Android 105 >>>> >>>> Anticipated spec changes >>>> >>>> Open questions about a feature may be a source of future web compat or >>>> interop issues. Please list open issues (e.g. links to known github issues >>>> in the project for the feature specification) whose resolution may >>>> introduce web compat/interop risk (e.g., changing to naming or structure of >>>> the API in a non-backward-compatible way). >>>> n/a >>>> >>>> Link to entry on the Chrome Platform Status >>>> https://chromestatus.com/feature/6196703843581952 >>>> >>>> Links to previous Intent discussions Intent to prototype: >>>> https://groups.google.com/a/chromium.org/g/blink-dev/c/YEo4LqB7nWI >>>> >>>> Intent to Experiment: >>>> https://groups.google.com/a/chromium.org/d/msgid/blink-dev/CAF8qwaB488g2%3D1WdmFPnWaAYaXB2pXaVv0-Xe-XXqYFRi5y20A%40mail.gmail.com >>>> >>>> >>>> This intent message was generated by Chrome Platform Status >>>> <https://chromestatus.com/>. >>>> -- >>>> You received this message because you are subscribed to the Google >>>> Groups "blink-dev" group. >>>> To unsubscribe from this group and stop receiving emails from it, send >>>> an email to blink-dev+unsubscr...@chromium.org. >>>> To view this discussion on the web visit >>>> https://groups.google.com/a/chromium.org/d/msgid/blink-dev/CAGkh42KgSdG0D1YT3H8EjXkm4zys4i5A1jskyZcXGbaedGvxHQ%40mail.gmail.com >>>> <https://groups.google.com/a/chromium.org/d/msgid/blink-dev/CAGkh42KgSdG0D1YT3H8EjXkm4zys4i5A1jskyZcXGbaedGvxHQ%40mail.gmail.com?utm_medium=email&utm_source=footer> >>>> . >>>> >>>> -- >>>> You received this message because you are subscribed to the Google >>>> Groups "blink-dev" group. >>>> To unsubscribe from this group and stop receiving emails from it, send >>>> an email to blink-dev+unsubscr...@chromium.org. >>>> To view this discussion on the web visit >>>> https://groups.google.com/a/chromium.org/d/msgid/blink-dev/d066fa66-d356-4be7-99ec-56db593280b0%40chromium.org >>>> <https://groups.google.com/a/chromium.org/d/msgid/blink-dev/d066fa66-d356-4be7-99ec-56db593280b0%40chromium.org?utm_medium=email&utm_source=footer> >>>> . >>>> >>> -- You received this message because you are subscribed to the Google Groups "blink-dev" group. To unsubscribe from this group and stop receiving emails from it, send an email to blink-dev+unsubscr...@chromium.org. To view this discussion on the web visit https://groups.google.com/a/chromium.org/d/msgid/blink-dev/CAF8qwaBXoBLSj-iB-QAuyy41L39byuwP2FCMfBoaNo3eFdB4Ug%40mail.gmail.com.