Intent to Implement: Expect-CT header

677 views
Skip to first unread message

Emily Stark

unread,
Jan 6, 2017, 3:34:39 PM1/6/17
to blink-dev

(Note: net-dev@ on bcc)


Contact emails

est...@chromium.org


Spec

https://datatracker.ietf.org/doc/draft-stark-expect-ct/


Summary

A new HTTP header that allows websites to instruct user agents to expect valid Signed Certificate Timestamps (SCTs) to be served on their connections. By turning on Expect-CT, sites can discover misconfigurations in their Certificate Transparency deployments and ensure that misissued certificates accepted by UAs are discoverable in Certificate Transparency logs.


Motivation

Certificate Transparency (CT) is a system that allows TLS certificates to be audited and monitored in public logs. Chrome is in the process of adopting Certificate Transparency fully, which will allow site owners to discover misissued certificates in CT logs and take action (such as revocation). However, it will be quite a while before Chrome can require CT for all certificates, meaning that site owners cannot yet get the full security benefits of CT. Expect-CT allows security-conscious site owners to opt in to CT enforcement well before CT is fully required for all certificates.


(A common question is "What about Chrome's plan to require CT in October 2017? Won't Expect-CT be useless then?" In October 2017, we plan to require CT for all *new* certs, which does not protect site owners from previously issued bad certificates, or from a bad CA that issues a backdated cert, which has been known to happen.)


Also note that we've had an experimental report-only version of Expect-CT on canary/dev/beta for some time now, for a limited set of sites that are on a baked-in hardcoded list. This Intent introduces an HTTP header for Expect-CT (allowing any site to opt in to the feature without being on the hardcoded list) and an enforcement mode (allowing sites to specify that they want connections to be closed, not merely reported, if they are not CT-compliant).


Interoperability and Compatibility Risk

Interop: The main interoperability risk of this feature is that it is up to the browser to decide details of CT enforcement, e.g. how many SCTs are required and from what CT logs. Thus, a certificate that satisfies the CT policy of one browser may not satisfy the CT policy of another. However, this is an interop risk of CT in general, and not specific to Expect-CT; multiple browsers are in the process of implementing CT fully and working closely together to develop CT policies that are harmonious.


Compatibility: There is no compat risk for existing web content, since Expect-CT is an opt-in feature. Much like other opt-in security features such as HSTS and HPKP, Expect-CT presents an opportunity for a footgun, in that a site might turn on Expect-CT, but due to misconfiguration or misunderstanding, serve a certificate that is not CT compliant, resulting in the site becoming inaccessible in Chrome until the Expect-CT configuration expires. We are minimizing this risk by supporting a reporting mode, in which a site owner will receive reports if their site becomes inaccessible due to Expect-CT.


Ongoing technical constraints

No


Will this feature be supported on all six Blink platforms (Windows, Mac, Linux, Chrome OS, Android, and Android WebView)?

Yes


OWP launch tracking bug

https://crbug.com/679012


Link to entry on the feature dashboard

https://www.chromestatus.com/feature/5677171733430272


Requesting approval to ship?

No

rsl...@chromium.org

unread,
Jan 6, 2017, 3:46:07 PM1/6/17
to blink-dev


On Friday, January 6, 2017 at 12:34:39 PM UTC-8, Emily Stark wrote:

As this is being pushed through the IETF DataTracker, where's the best way to send feedback? Is there a GitHub repository? As it's an individual submission, I'm assuming there isn't an IETF WG that has adopted this.
 

Also note that we've had an experimental report-only version of Expect-CT on canary/dev/beta for some time now, for a limited set of sites that are on a baked-in hardcoded list. This Intent introduces an HTTP header for Expect-CT (allowing any site to opt in to the feature without being on the hardcoded list) and an enforcement mode (allowing sites to specify that they want connections to be closed, not merely reported, if they are not CT-compliant).


What details can you share about the results of those experiments? Has anything resulted in those that has increased or decreased confidence in going to a wider release?
 

Interoperability and Compatibility Risk

Interop: The main interoperability risk of this feature is that it is up to the browser to decide details of CT enforcement, e.g. how many SCTs are required and from what CT logs. Thus, a certificate that satisfies the CT policy of one browser may not satisfy the CT policy of another. However, this is an interop risk of CT in general, and not specific to Expect-CT; multiple browsers are in the process of implementing CT fully and working closely together to develop CT policies that are harmonious.


I'm only aware of Mozilla and Google participating on ct-p...@chromium.org. Were you thinking of more vendors?

We've already seen significant divergence being discussed between the Mozilla and Google policies. Does the introduction of this feature (unintentionally) ossify the policy in a way that benefits Google, but (effectively) discourages either Mozilla's policy or implementation of Expect-CT?
 

Compatibility: There is no compat risk for existing web content, since Expect-CT is an opt-in feature. Much like other opt-in security features such as HSTS and HPKP, Expect-CT presents an opportunity for a footgun, in that a site might turn on Expect-CT, but due to misconfiguration or misunderstanding, serve a certificate that is not CT compliant, resulting in the site becoming inaccessible in Chrome until the Expect-CT configuration expires. We are minimizing this risk by supporting a reporting mode, in which a site owner will receive reports if their site becomes inaccessible due to Expect-CT.


Does this fully capture the compat risks? It would seem like any potential changes to the spec may result in UAs applying different policies or failing to apply Expect-CT policies.

Who (IETF? W3C TAG? security-dev@?) will be performing the security analysis? For example, the introduction of an additional 'footgun' or the requirement that only a single occurrence of the header is respected.

Emily Stark

unread,
Jan 6, 2017, 4:30:44 PM1/6/17
to Ryan Sleevi, blink-dev
On Fri, Jan 6, 2017 at 3:46 PM, <rsl...@chromium.org> wrote:


On Friday, January 6, 2017 at 12:34:39 PM UTC-8, Emily Stark wrote:

As this is being pushed through the IETF DataTracker, where's the best way to send feedback? Is there a GitHub repository? As it's an individual submission, I'm assuming there isn't an IETF WG that has adopted this.


The best way to submit feedback would be on the Github repo: https://github.com/bifurcation/expect-ct
 
 

Also note that we've had an experimental report-only version of Expect-CT on canary/dev/beta for some time now, for a limited set of sites that are on a baked-in hardcoded list. This Intent introduces an HTTP header for Expect-CT (allowing any site to opt in to the feature without being on the hardcoded list) and an enforcement mode (allowing sites to specify that they want connections to be closed, not merely reported, if they are not CT-compliant).


What details can you share about the results of those experiments? Has anything resulted in those that has increased or decreased confidence in going to a wider release?

We are still waiting on the `Expect-CT: preload` header to be rolled out for QUIC connections, which somewhat limits the usefulness of the experiment so far with respect to Google sites. With that caveat, the results have been mostly silence on the wire -- that is, no reports, which increases confidence that valid SCTs are being served reliably.
 
 

Interoperability and Compatibility Risk

Interop: The main interoperability risk of this feature is that it is up to the browser to decide details of CT enforcement, e.g. how many SCTs are required and from what CT logs. Thus, a certificate that satisfies the CT policy of one browser may not satisfy the CT policy of another. However, this is an interop risk of CT in general, and not specific to Expect-CT; multiple browsers are in the process of implementing CT fully and working closely together to develop CT policies that are harmonious.


I'm only aware of Mozilla and Google participating on ct-p...@chromium.org. Were you thinking of more vendors?

No, I was referring to Chrome and Firefox.
 

We've already seen significant divergence being discussed between the Mozilla and Google policies. Does the introduction of this feature (unintentionally) ossify the policy in a way that benefits Google, but (effectively) discourages either Mozilla's policy or implementation of Expect-CT?

I'd argue that the policy is already fairly ossified; making it stricter would already be a major headache, since CT is already enforced for Symantec certificates and required for EV UI, and CAs are presumably already planning/making changes to support the Chrome policy in October.
 
 

Compatibility: There is no compat risk for existing web content, since Expect-CT is an opt-in feature. Much like other opt-in security features such as HSTS and HPKP, Expect-CT presents an opportunity for a footgun, in that a site might turn on Expect-CT, but due to misconfiguration or misunderstanding, serve a certificate that is not CT compliant, resulting in the site becoming inaccessible in Chrome until the Expect-CT configuration expires. We are minimizing this risk by supporting a reporting mode, in which a site owner will receive reports if their site becomes inaccessible due to Expect-CT.


Does this fully capture the compat risks? It would seem like any potential changes to the spec may result in UAs applying different policies or failing to apply Expect-CT policies.

Can you elaborate on this point? Since the spec doesn't specify a particular policy, I don't see how changes to the spec would result in UAs applying different policies.
 

Who (IETF? W3C TAG? security-dev@?) will be performing the security analysis? For example, the introduction of an additional 'footgun' or the requirement that only a single occurrence of the header is respected.

There's already been some lively discussion and security analysis on the HTTP WG mailing list, and I expect IETF would continue that analysis if the HTTP WG adopts it. If not, then I expect we would go the WICG route and request a W3C TAG review.
 

Ryan Sleevi

unread,
Jan 6, 2017, 4:52:56 PM1/6/17
to Emily Stark, Ryan Sleevi, blink-dev
On Fri, Jan 6, 2017 at 1:30 PM, Emily Stark <est...@chromium.org> wrote:
I'd argue that the policy is already fairly ossified; making it stricter would already be a major headache, since CT is already enforced for Symantec certificates and required for EV UI,

Neither of those decisions negatively affect Mozilla, as they're Chrome-only decisions.
 
and CAs are presumably already planning/making changes to support the Chrome policy in October.

Where Expect-CT does potentially introduce a negative effect is that sites would not be able to 'safely' send Expect-CT unless they supported the union of Chrome & Firefox behaviours.

For example, imagine a site begins sending Expect-CT today, after also making sure that its checking (server side) for compliance with Chrome policy. If Mozilla makes their policy any stricter than Chrome's, there's a greater compat risk for Mozilla, because sites which may have been 'incidentally' compliant at the time the Expect-CT was noted may fall out of compliance for Firefox, because server operators are only testing compliance with Chrome, rather than Firefox as well.

Considering that Mozilla is actively (in their latest policy draft) looking at policies that are more restrictive than Google, it does seem to suggest that Mozilla may take on greater risk supporting Expect-CT eventually, if their policy diverges from Chrome at all.

From a Chrome side, this seems like it introduces greater risk of ossification, because the risk of impact of CT policies goes from the union of (CAs required to use CT & EV certs) to being potentially any site. Decisions to distrust or disqualify logs now have a greater (negative) impact. And while it's true this impact will unquestionably be greater in October, it does seem to accelerate that impact during the same time period we're trying to get systems in place to minimize it.
 

Compatibility: There is no compat risk for existing web content, since Expect-CT is an opt-in feature. Much like other opt-in security features such as HSTS and HPKP, Expect-CT presents an opportunity for a footgun, in that a site might turn on Expect-CT, but due to misconfiguration or misunderstanding, serve a certificate that is not CT compliant, resulting in the site becoming inaccessible in Chrome until the Expect-CT configuration expires. We are minimizing this risk by supporting a reporting mode, in which a site owner will receive reports if their site becomes inaccessible due to Expect-CT.


Does this fully capture the compat risks? It would seem like any potential changes to the spec may result in UAs applying different policies or failing to apply Expect-CT policies.

Can you elaborate on this point? Since the spec doesn't specify a particular policy, I don't see how changes to the spec would result in UAs applying different policies.

As we saw with HSTS and HPKP during the IETF standardization process, any tokens that are introduced that 'loosen' the requirements in any way end up being impractical to deploy, because different UAs don't recognize those tokens. For example, this is partly why "report-only" had to be deployed as a unique header value, rather than as a token within the existing header.


Reply all
Reply to author
Forward
0 new messages