We are fine with being flexible with the details when the defaults don't work out, but every field/question has an underlying purpose that we try to satisfy through some means. Sometimes some fields might seem superfluous, but the explainer field is one that is always valuable.

The "explainer" has a couple of different consumers (not quite overlapping but why make it too easy). It serves as a way to introduce non-experts to a feature, it serves as an executive summary of a complicated feature and it serves to fill in some non-technical gaps for web developers, possibly with usage examples. When there is a public announcement of a feature in a certain Chromium version, that is most often based on the explainer, not any specification.

Just as an example of something an explainer might have mentioned is why this involves keys in DNS and if HTTPS depends on DNS, what about DNS over HTTPS? It often say things that are obvious to area experts, but might not be obvious to everyone exposed to this change.

Quite often an explainer can be lifted/extracted from another source, like a previous blog post, or the human friendly part of specification, but it still has to be packaged in non-scary way. You mentioned a release note, maybe that one was all that was needed?

/Daniel

On 2023-09-19 01:04, 'David Adrian' via blink-dev wrote:
> Could we please request a signal?

Done (and positive!). I had forgotten to add it to Chrome Status. https://github.com/WebKit/standards-positions/issues/46

As for the explainer, between sending the I2S and now, I updated the Chrome Status description to cover most of what David Benjamin discussed, and match what was previously communicated in Chrome release notes. I should have done this before sending the I2S, although I was under the impression that an RFC would be a sufficient explainer. I do understand why it is useful to provide information at a slightly higher and holistic level---I hope the updated description and David Benjamin's comments can stand as that for this Intent.

More broadly, David Benjamin is right that we are effectively jamming a TLS change from the IETF through a process designed for the Web Platform and W3C. We mostly do this so that launches show up in Chrome Status, and organizations who are interested in following TLS changes can see them there.

Now that launches show up in Chrome Status regardless of whether or not they are a Blink launch, we may want to consider no longer sending TLS launches through the Intent process, since they exist outside of the Web Platform, and primarily cause discussion about process confusion (we're trying our best to fit them in!), and not actual impact.





On Mon, Sep 18, 2023 at 9:53 AM David Benjamin <[email protected]> wrote:

    On Mon, Sep 18, 2023 at 10:06 AM Yoav Weiss
    <[email protected]> wrote:



        On Sat, Sep 16, 2023 at 5:35 PM David Benjamin
        <[email protected]> wrote:

            On Sat, Sep 16, 2023 at 1:12 AM Yoav Weiss
            <[email protected]> wrote:



                On Fri, Sep 15, 2023 at 10:05 PM Mike Taylor
                <[email protected]> wrote:

                    On 9/11/23 6:34 PM, 'David Adrian' via blink-dev
                    wrote:


                            Contact emails

                    [email protected], [email protected]


                            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 <http://chromestatus.com> entry. It
    looks like this is actually a Blink process bug, where
    chromestatus.com <http://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
                    [email protected].
                    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
                    [email protected].
                    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 [email protected]. To view this discussion on the web visit https://groups.google.com/a/chromium.org/d/msgid/blink-dev/CAGkh42JXymYrVqkLD2_-da-FhUVQAS6js1sP9B7ZmrjOC4pnYQ%40mail.gmail.com <https://groups.google.com/a/chromium.org/d/msgid/blink-dev/CAGkh42JXymYrVqkLD2_-da-FhUVQAS6js1sP9B7ZmrjOC4pnYQ%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 [email protected].
To view this discussion on the web visit 
https://groups.google.com/a/chromium.org/d/msgid/blink-dev/223c706e-3ddd-3fa0-635b-bf609fe6d24e%40gmail.com.

Reply via email to