Contact emails
kou...@chromium.org, kin...@chromium.org, kenji...@chromium.org
Explainer
https://developers.google.com/web/updates/2018/11/signed-exchanges
Spec
Signed Exchanges format:
https://wicg.github.io/webpackage/draft-yasskin-http-origin-signed-responses.html
Loading signed exchanges:
https://wicg.github.io/webpackage/loading.html
Tag Review:
https://github.com/w3ctag/design-reviews/issues/235
Summary
Support application/signed-exchange format of origin-signed HTTP Exchanges in Chrome’s loading pipeline, so that signed Web documents can be loaded and navigated as if they came from particular origins regardless of where they are actually served from.
Link to “Intent to *” blink-dev discussion
Link to Origin Trial feedback summary
Origin Trial feedback summary (as of Jan 10, 2019)
Is this feature supported on all six Blink platforms (Windows, Mac, Linux, Chrome OS, Android, and Android WebView)?
Yes
Demo link
Note: Need to enable chrome://flags/#allow-sxg-certs-without-extension
Debuggability
The status of Signed HTTP Exchange loading (including its error status) are shown on DevTools.
Risks
Interoperability - Medium:
Other browser engines have not signed on, but the versioning scheme gives us the confidence that we can make breaking changes if necessary. We are adding shared test suites in Web Platform Tests to welcome other implementers.
Edge: No direct public signals (platform dashboard entry);
Firefox: “Harmful”: https://mozilla.github.io/standards-positions/
We addressed the concern about a decrease in confidentiality on the IETF mailing list.
The concern about "contacting the authoritative server" is shared with "secondary certificates", which are continuing through the IETF process. We're actively watching the discussion around that specification for mitigations we can adopt for signed exchanges. See the "Security" section below.
Safari:
Public skepticism expressed at the onset
Web developers: Multiple publishers, teams, projects and AMP are showing interest.
Cloudflare support for Signed Exchange for a live demo at Chrome Dev Summit, and actively investing in it for a future milestone.
AMP partners interested and experimenting, e.g. 1-800 flowers at CDS.
Yahoo Japan, Microsoft Bing, Baidu Search, Google Search and AMP interested and/or experimenting.
DigiCert built support for Signed Exchange Certificates.
Protocol Labs experimenting with Signed Exchange on top of IPFS.
Compatibility - Low:
Signed exchanges include a "fallback URL" in a fixed location, so as we change the spec or completely remove support, browsers will at worst do an extra redirect to the original URL. Sites using old versions will lose any performance advantage, but will still work. The Accept header tells servers which version of the signed exchange format to send.
Security
The draft lists several security concerns, especially that: Signed HTTP Exchanges
relax the on-path restriction for attackers with an illegitimate certificate,
relax the on-path restriction for attackers with a stolen private key, and
allow attackers to continue using buggy code for up to 7 days after it's fixed on the real server.
Individual domains opt into these security risks by acquiring a certificate with the "CanSignHttpExchanges" extension. The intent of this explicit extension is to ensure that additional steps are taken by site operators to protect the key from compromise, to mitigate the relaxation of the on-path requirement. To mitigate the risk of illegitimate certificates, SXG requires certificates comply with Chrome’s Certificate Transparency (CT) policy, regardless of issuance date. Mis-issuance by a CA that issues one of these super-powered certificates allows the attacker to MITM for at least approximately 2 weeks, depending on how closely the compromised origin watches the CT logs, and whether the CA hands the attacker future-dated OCSP signatures.
We addressed the security concerns we have received since the Intent-to-Implement. For example, as stated above signed exchanges now require a certificate with CanSignHttpExchanges extension+SCT+OCSP. We revised the format to avoid re-serializing of the received bytes.
Ergonomics
We expect Signed HTTP Exchanges to be used with prefetch. Signed HTTP Exchanges enable faster page loads while preserving user privacy.
In the future, we expect Signed HTTP Exchanges to be used along other navigation performance/UX primitives we are exploring such as Portals.
Activation
We have a set of Go tools on public github repository for generating and examining Signed HTTP Exchanges.
Is this feature fully tested by web-platform-tests? Link to test suite results from wpt.fyi.
Yes. https://wpt.fyi/results/signed-exchange?label=master
Entry on the feature dashboard
It may also be a good idea to limit the lifetime of certificates used
in SXG, to reduce the amount of time that an illegitimate certificate
can be used, in case an attacker exploits a CA vulnerability to obtain
future-dated good OCSP responses.
Regards,
Andrew
To view this discussion on the web visit https://groups.google.com/a/chromium.org/d/msgid/blink-dev/20190116134134.ad2dd08024dc9cf6d9a7a24a%40andrewayer.name.
It may also be a good idea to limit the lifetime of certificates used
in SXG, to reduce the amount of time that an illegitimate certificate
can be used, in case an attacker exploits a CA vulnerability to obtain
future-dated good OCSP responses.Yep. It seems better in the long run to forbid CAs from signing that a certificate will still be un-revoked at a future date, but since we can't have nice things, I'm happy to specify some limit to the lifetime of certificates with the CanSignHttpExchanges extension. What should that limit be?Devin, do you have some feeling for the shortest certificate lifetime publishers and SXG caches will tolerate?
Thanks Jeffrey!
From: Jeffrey Yasskin <jyas...@chromium.org>
Sent: Wednesday, January 16, 2019 4:32 PM
To: Andrew Ayer <ag...@andrewayer.name>; Clint Wilson <clint....@digicert.com>
Cc: Kouhei Ueno <kou...@google.com>; 'Kouhei Ueno' via blink-dev <blin...@chromium.org>; Devin Mullins <twi...@google.com>
Subject: Re: [blink-dev] Intent to Ship: Signed HTTP Exchanges (SXG)
Thanks for the comments!
[CW] - CAA is definitely tractable as an option and I’d support that, though it would require a bit of time to build out that logic. That doesn’t, however, feel like it truly belongs in an IETF document and would fit better into the BRs or similar policies, assuming the underlying expectation that these certificates require public trust remains true. What did you have in mind around where this policy should exist? Similarly, if we’re operating under the assumption that we can expect policy enforcement of checking CAA, can we retain the same benefits in other ways, like requiring specific domain validation methods (such as 3.2.2.4.7-based DNS verification) be utilized by the issuing CA? That type of change could be implemented quicker, from my perspective, but I want to be sure that would adequately address the concerns you raise.
It may also be a good idea to limit the lifetime of certificates used
in SXG, to reduce the amount of time that an illegitimate certificate
can be used, in case an attacker exploits a CA vulnerability to obtain
future-dated good OCSP responses.
Yep. It seems better in the long run to forbid CAs from signing that a certificate will still be un-revoked at a future date, but since we can't have nice things, I'm happy to specify some limit to the lifetime of certificates with the CanSignHttpExchanges extension. What should that limit be?
Devin, do you have some feeling for the shortest certificate lifetime publishers and SXG caches will tolerate?
[CW] - I like the idea of short-lived certs here, somewhere in the same range as an OCSP response’s validity. Something around 7-10 days would be a nice target IMO, but even restricting to 30-90 days would be a substantial improvement.
Regards,
Andrew
Spec
Signed Exchanges format:
https://wicg.github.io/webpackage/draft-yasskin-http-origin-signed-responses.html
Loading signed exchanges:
On Wed, 16 Jan 2019 15:31:40 -0800
Jeffrey Yasskin <jyas...@chromium.org> wrote:
> CAA seems like a plausible additional way to opt into these
> certificates. I can look into the structure of CAA records and
> propose something, but if you already have an idea for exactly what
> to specify, I'm happy just to copy that.
I don't have anything specific in mind, but it probably makes the most
sense to define a parameter to the issue and issuewild properties. For
instance:
example.com. IN CAA 0 issue "example.net; cansignhttpexchanges=yes"
For an example of an I-D that defines new CAA parameters, see
https://tools.ietf.org/html/draft-ietf-acme-caa-06
> Yep. It seems better in the long run to forbid CAs from signing that a
> certificate will still be un-revoked at a future date, but since we
> can't have nice things, I'm happy to specify some limit to the
> lifetime of certificates with the CanSignHttpExchanges extension.
> What should that limit be?
7-14 day range would be great.
We've talked in the IETF about either the HTTPWG adopting the signed-exchanges spec, or creating a Web Packaging WG to hold both signed exchanges and bundles. I need to write a draft charter for the second, regardless, and I'll ask the HTTPWG chairs if they've developed any preferences.
The Loading spec will eventually need to merge into Fetch, and I haven't planned for it to live anywhere other than the WICG while it doesn't yet have the 2 implementations needed to change Fetch.
It's possible that the Fetch editors will prefer that the non-monkeypatch parts wind up in a separate WHATWG or W3C specification.
On Friday, January 18, 2019 at 11:19:26 AM UTC+11, Jeffrey Yasskin wrote:We've talked in the IETF about either the HTTPWG adopting the signed-exchanges spec, or creating a Web Packaging WG to hold both signed exchanges and bundles. I need to write a draft charter for the second, regardless, and I'll ask the HTTPWG chairs if they've developed any preferences.It's good to hear that those discussions are happening. From a Mozilla perspective, we are still worried about this being a single engine solution (though its encouraging to see Microsoft above expressing interest).The Loading spec will eventually need to merge into Fetch, and I haven't planned for it to live anywhere other than the WICG while it doesn't yet have the 2 implementations needed to change Fetch.Right, the same concern applies at the WICG: ideally, incubation involves multiple implementers... as happened with Feature Policy, IntersectionObserver, event listener options. All serve as ideal incubation examples, to name a few. The perception at Mozilla is that this hasn't happened with Signed Exchanges, and that the WICG process has been somewhat circumvented to legitimize a technology that has limited buy-in from other engines.
That's not to say that folks working on Signed Exchanges have not made a good-faith effort to engage other browser vendors: On the contrary, clearly you all have through the HTTP mailing list, the Mozilla Positions thread, etc. But the perception and concern remains that, despite those efforts, this remains a single vendor solution being pushed onto the Web - and one that Mozilla has serious concerns about being harmful to the Web at large.Obviously, Mozilla can't tell the Blink project not to ship something. But we remain extremely concerned about the impact of this technology at scale (as in our stated position on the technology).It's possible that the Fetch editors will prefer that the non-monkeypatch parts wind up in a separate WHATWG or W3C specification.That makes sense. I've cc'ed Anne and a few other folks in case they have anything to add.
--
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+...@chromium.org.
To view this discussion on the web visit https://groups.google.com/a/chromium.org/d/msgid/blink-dev/8dff0159-9dc5-42e6-9b5b-6820232757b0%40chromium.org.
Can you expand on how the WICG process have been circumvented here?
On Friday, January 18, 2019 at 4:27:47 PM UTC+11, Yoav Weiss wrote:Can you expand on how the WICG process have been circumvented here?The perception is that despite folks from WebKit and Mozilla expressing concerns, incubation of the spec continued by a single vendor to the point where it's now about to ship (with little buy-in from others during the incubation process itself).
This is different from how we would ideally like to see incubations happen: where a lot folks from different browser engines collaborate, or experiment, or implement together.
--
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+...@chromium.org.
To view this discussion on the web visit https://groups.google.com/a/chromium.org/d/msgid/blink-dev/273d997f-fa20-4b76-a8cf-0af743f92314%40chromium.org.
On Fri, Jan 18, 2019 at 6:43 AM <mcac...@mozilla.com> wrote:On Friday, January 18, 2019 at 4:27:47 PM UTC+11, Yoav Weiss wrote:Can you expand on how the WICG process have been circumvented here?The perception is that despite folks from WebKit and Mozilla expressing concerns, incubation of the spec continued by a single vendor to the point where it's now about to ship (with little buy-in from others during the incubation process itself).
I'd like to clarify one point that this intent to ship is definitely not meant to be a last call. We actually expect that we will have further feedback as the spec and other implementations mature, and therefore we’ve designed the versioning with the expectation that we can make breaking changes even after we ship.
After sending the intent to implement about a year ago we’ve been working hard to address the concerns that have been expressed, as well as trying to engage with the community and other browser vendors. That's said we're aware that this intent might be still sent before other implementors had enough time to evaluate this in detail, and therefore we are committed to keep doing that (and again, can make breaking changes whenever necessary).
If your side will have more feedback on the feature we’d definitely love to hear and address them together.
--Currently the process doesn't include any requirement for multi-engine support, and even if it did, up until recently, this proposal would have passed the bar.This is different from how we would ideally like to see incubations happen: where a lot folks from different browser engines collaborate, or experiment, or implement together.--
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+...@chromium.org.
To view this discussion on the web visit https://groups.google.com/a/chromium.org/d/msgid/blink-dev/273d997f-fa20-4b76-a8cf-0af743f92314%40chromium.org.
You received this message because you are subscribed to the Google Groups "blink-dev" group.
To view this discussion on the web visit https://groups.google.com/a/chromium.org/d/msgid/blink-dev/CACj%3DBEjvuehzJ11%2BGg_KDH1mihMpMu%2B629W0N1w2QJiUK8XQ-Q%40mail.gmail.com.
--
You received this message because you are subscribed to the Google Groups "blink-dev" group.
To view this discussion on the web visit https://groups.google.com/a/chromium.org/d/msgid/blink-dev/20190122121316.6e4c9d423cb5d75e6b4f58af%40andrewayer.name.
Thank you for your feedback.
Let me try to summarize the current state of the discussions:
Mitigating the BGP hijack risk via requiring CAA record to issue certificates.
We believe this is a great idea and will address this via the spec PR #377.
Require shorter lifetime for SXG certs.
We are convinced that SXG certs should have a shorter maximum lifetime than the 2-year maximum for TLS certificates. We plan to specify a maximum lifetime of 90d to bound the latency for making any other changes, and then continue discussing what the maximum should actually be.
We don’t think we need to enforce this maximum lifetime in Chrome 73, although we might in Chrome 74, and let’s seek consensus on exactly how many days the lifetime requirement should say (github).
Specification plan post-WICG
IETF: jyasskin: We'll be presenting progress to the IETF HTTPWG at the end of March. Then we plan to hold a BOF for a new WPACK WG at IETF105 in July, which will own the IETF parts of both signed exchanges and bundles.
Loading spec: We have filed an issue in the fetch spec github repo to merge the Loading spec's monkeypatches, and we'll do this as soon as the Fetch editor feels there's enough cross-implementation buy-in.
--
kouhei
To view this discussion on the web visit https://groups.google.com/a/chromium.org/d/msgid/blink-dev/CAPVAxLWq_98rE0WvKDf6RPhWBWGKWft4k62shPMX-yPdkLyuoQ%40mail.gmail.com.
Thanks a lot Devin for sharing the feedback!
Kouhei and probably API owners too will be updating this thread again, but we also got some feedback from API owners, and one of them was requesting for sharing more feedback from the outcomes of the origin trials-- I believe this detailed feedback is really helpful in the context as a real voice from the customer's pov.
Hi Kinuko, I'm happy to provide some feedback.First off, AMP project is excited to have a solution to a major pain point for users and publishers alike -- proper URL attribution and proper origins for things like cookies, local storage, and CORS -- while maintaining two major pillars of AMP’s ability to provide good UX -- privacy-preserving prefetch and and AMPHTML validation.In terms of the tradeoffs, I think it’s feasible for content publishers and distributors to generate signed exchanges, and feasible for intermediaries to cache them and serve them to supporting browsers. On the other hand, in regards to cross-cutting concerns such as security and privacy, Jeffrey and Kouhei have been very thorough in soliciting feedback from domain experts, and understanding and incorporating that feedback into the spec. As I’m not a security or privacy expert, I’d rather not opine as to whether the risks around things like the removal of the on-path requirement have been sufficiently mitigated, but it seems like the right folks have been involved.
Thanks. And yeah there is surely some tension and tradeoff, and we care a lot about how the users/developers would feel, while we also want to address any security and privacy issues as they have been so far the biggest concerns. As you hinted there has been lots of discussions arduously trying to address the concerns, they can be also found on github as well as on many past IETF discussion threads.
In the run up to origin trial, during implementation, we found that the bugs we were filing against the spec and the Chrome implementation were diminishing in both number and severity, to the point where I feel it’s stable. For instance, the last few bugs we filed before OT had mostly to do with improving the debugging experience (e.g. http://crbug.com/890199, http://crbug.com/899364). We have one major feature request to help us monitor the effectiveness of our intermediary (https://github.com/w3c/network-error-logging/issues/99), but is dependent on this feature, not blocking it.
Yes, and thanks for filing and raising these issues. And just to share the status with this thread, the Network Error Logging one is currently being actively worked on by Horo (wip PR here).
To view this discussion on the web visit https://groups.google.com/a/chromium.org/d/msgid/blink-dev/1e691139-0e09-40ee-a4a0-817de9999fa9%40chromium.org.
Thanks a lot Devin for sharing the feedback!
Kouhei and probably API owners too will be updating this thread again, but we also got some feedback from API owners, and one of them was requesting for sharing more feedback from the outcomes of the origin trials-- I believe this detailed feedback is really helpful in the context as a real voice from the customer's pov.
To unsubscribe from this group and stop receiving emails from it, send an email to blink-dev+...@chromium.org.
To view this discussion on the web visit https://groups.google.com/a/chromium.org/d/msgid/blink-dev/CAMWgRNZ59rZCiUh7DMUd09QCt8PdUZtBVwNTbj3%3D5WkZD6pNJQ%40mail.gmail.com.
To view this discussion on the web visit https://groups.google.com/a/chromium.org/d/msgid/blink-dev/15eb73b8-3ca0-4e2e-b734-f2bb11a493b7%40chromium.org.
To view this discussion on the web visit https://groups.google.com/a/chromium.org/d/msgid/blink-dev/CANMdWTsCGDzyWedVF8y4xOM-2amNm7iBDPXaJ3%3DTZTe2tjr0AQ%40mail.gmail.com.
Some support for a feature from other browser vendors is a key factor when
we decide whether to ship a feature, but at some time we have to determine
that the Chromium development team has done everything reasonable to get
others onboard despite nobody else supporting it and that is the case
here. Then the question becomes if this is valuable enough to ship anyway.
User feedback: Will this be used? Is this solving a problem? We did
request feedback from the experiment, and we got some. All in all it seems
to solve an important problem for CDNs and similar parties, a problem that
has really weak work-arounds today. Does it solve a problem for end-users
or web developers? Well, it's supposed to be invisible for end-users, and
the problem it solves for web developers mostly has to do with
distribution. It might unlock better page load performance due to a better
CDN experience and that is something users and web developers usually like.
Given all of the above, I think shipping is the way to go (lgtm4), but
also that the effort to get other vendors onboard needs to continue.
Anne asked about running an experiment instead of shipping. An experiment
has been running for a couple of months and it seems to have produced
positive results but given the investment required to use this feature, I
think the feature has to be backed by a longer term commitment (shipping)
before we can get more feedback.
/Daniel
On Mon, 04 Feb 2019 10:48:39 +0100, Anne van Kesteren <ann...@annevk.nl>
wrote:
> On Fri, Feb 1, 2019 at 11:28 PM Mike West <mk...@chromium.org> wrote:
>> With those mitigations in mind, we should ship some running code, and
>> continue working towards rough consensus with other vendors as we learn
>> together from that implementation experience.
>
> To be clear, there's only running code. There's no rough consensus or
> an accepted web standard. If what you want is implementation
> experience, why not make this an experiment for a while?
>
--
/* Opera Software, Linköping, Sweden: CET (UTC+1) */
--
You received this message because you are subscribed to the Google Groups "blink-dev" group.
To view this discussion on the web visit https://groups.google.com/a/chromium.org/d/msgid/blink-dev/op.zwouypz0rbppqq%40cicero2.linkoping.osa.
Thank you for your valuable feedback.
We just enabled Signed HTTP Exchange by default on ToT. As Daniel mentioned, we believe this is the best way forward to gather broader feedback from users.
Shipping a feature is not an end of our work by any means. We are fully committed to continue work in the space. Your feedback is highly welcomed at any stage.
We will continue to seek support from other browser vendors. I highly appreciate the fact that other browser vendors are starting to engage in the WICG/webpackage repository.
Especially given the current situation, we believe it is important to maintain the state where Signed HTTP Exchange is not required for any web content. This will not only avoid us subsetting the Web, but also allow us to make breaking changes to Signed HTTP Exchange and evolve. The fallbackUrl is one of our attempts to enforce this from spec.
--
kouhei
To unsubscribe from this group and stop receiving emails from it, send an email to blink-dev+...@chromium.org.
To view this discussion on the web visit https://groups.google.com/a/chromium.org/d/msgid/blink-dev/CAPVAxLVvXR%2BDXxG2D3-1ORWQBM04R%2BiXxj0J-oa4bb0_AQpaPQ%40mail.gmail.com.
To unsubscribe from this group and stop receiving emails from it, send an email to blink-dev+unsubscribe@chromium.org.
To unsubscribe from this group and stop receiving emails from it, send an email to blink-dev+...@chromium.org.
To view this discussion on the web visit https://groups.google.com/a/chromium.org/d/msgid/blink-dev/CAPVAxLVvXR%2BDXxG2D3-1ORWQBM04R%2BiXxj0J-oa4bb0_AQpaPQ%40mail.gmail.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+...@chromium.org.
To view this discussion on the web visit https://groups.google.com/a/chromium.org/d/msgid/blink-dev/d5c5cf6b-9466-4de2-88fe-7b1e6ae4376bn%40chromium.org.
To unsubscribe from this group and stop receiving emails from it, send an email to blink-dev+unsubscribe@chromium.org.
To view this discussion on the web visit https://groups.google.com/a/chromium.org/d/msgid/blink-dev/CAPVAxLVvXR%2BDXxG2D3-1ORWQBM04R%2BiXxj0J-oa4bb0_AQpaPQ%40mail.gmail.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+unsubscribe@chromium.org.