-
Notifications
You must be signed in to change notification settings - Fork 82
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Cloudflare has enabled ECH (staged) #393
Comments
Linking the past thread #292. Cloudflare had first deployed ECH a year ago, on 2023-09-29, but then disabled it again on 2023-10-11. 2023-09-29 https://blog.cloudflare.com/announcing-encrypted-client-hello/ (archive)
2023-10-11 https://community.cloudflare.com/t/early-hints-and-encrypted-client-hello-ech-are-currently-disabled-globally/567730 (archive)
|
You can't prove that ECH works. But,
and then, you can visit the website. So you can't prove that ECH works unless you banned UDP or you use wireshark. |
No, you can! Attach |
That's a real world observation on Firefox 130. The blocked website unexpectedly started to be reachable on its own, without any circumvention tools, and I debugged why does it work. ECH should work on TCP and QUIC, regardless of HTTP version. That's "just" a TLS extension. |
Also thing to note is that in |
Is |
Some known hosts which have been supports ECH. You can also use about:networking#dnslookuptool to test on Firefox. If it shows |
不是啊,这个是外层的明文 SNI,似乎全部启用了 ECH 的、使用 Cloudflare 网站的外层 SNI 都是一样的。 |
我是说 Cloudflare 是否强制使用这个 SNI,因为 GFW 可以封掉境外 DoH 并封掉这个 SNI I mean, does Cloudflare force the use of this SNI, because the GFW can block overseas DoH and block this SNI? |
很遗憾,是的。 |
The "public_name" https://www.ietf.org/archive/id/draft-ietf-tls-esni-22.html#section-4
https://www.ietf.org/archive/id/draft-ietf-tls-esni-22.html#section-6.1-7.5.1
The ECH specification also says that clients must not retry without ECH, if the ECH connection is blocked. https://www.ietf.org/archive/id/draft-ietf-tls-esni-22.html#section-8.1.1
|
For Cloudflare sites, another way to check is to request the URL path EDIT: This trick was already posted above, my mistake. |
I just checked, Cloudflare enforces the outer SNI There were discussions about the necessity of a specific outer SNI during ECH development. It was ultimately decided to keep it to allow the server to handshake the outer SNI/ClientHello if it rejects the inner ClientHello. Sadly, this necessity makes honest ECH distinguishable from GREASE ECH by crawling for publicly available echConfigs and their outer SNI hostnames. |
或许 IETF 的本意是以 SNI 作为不同 ECH 密钥对的区分标识,但 Cloudflare 整个 IP 都是自己的,强制使用某个 SNI 没有必要,有人去建议一下取消这种强制吗,还是说这是 Cloudflare 为了防止被完全封锁而做出的妥协之举?(它甚至与中国企业有合作) 不过 Cloudflare 可能不会改,因为在 ECH 之前它已停止支持域前置 Perhaps the IETF's original intention was to use SNI as a distinguishing identifier for different ECH key pairs, but Cloudflare owns the entire IP, and there is no need to force the use of a specific SNI. Can someone suggest that this restriction be lifted? Or is this a compromise made by Cloudflare to prevent being completely blocked? (It even has partnerships with Chinese companies.) However, Cloudflare is unlikely to change, as it stopped supporting domain fronting before ECH. |
The ECH draft allows servers to reject different SNI hostnames than the one specified in the ECH Config:
Other providers than Cloudflare might then be more lenient. I also suspect Cloudflare won't change their behavior as they are otherwise very strict about SNI usage. |
There's a convenient addon for firefox which adds ECH support indicator to your address bar, no need for manually checking it. Also it tells if the following requests from the site used ECH. |
不是停止支持。是停止支持Free plan. It's not that they discontinued support. They discontinued support for the free plan. |
What you are talk about is not domain fronting, but the legacy compatibility of no SNI. You can only omit the SNI but the HTTP Host header must be the site owner. They prohibited you from pretending to be connecting to another site. |
https://ntc.party/t/encrypted-clienthello-ech-is-now-enabled-on-cloudflare/10075/39 |
The flag in the control panel just controls the DNS record. Since the ECH key is the same for all the domains, you can still connect to any (?) domain even if it has ECH disabled.
|
All Cloudflare ECH-enabled services are blocked in Russia. It may be identified by DPI using the cloudflare-ech.com value in the handshake. Adding this domain to the blocklist in evading tools seems to fix the problem. The solution for desperate administrators could be to disable TLS 1.3 on the dashboard. Although this is not recommended in the long run for performance, security reasons. |
Thanks for sharing this information.
Can you share some more details and possibly data supporting the claim that "All Cloudflare ECH-enabled services are blocked"? The Do you know for example if this is only happening for users that have enabled Encrypted DNS in their browser? Firefox, for example, will use ECH if you have DNS over HTTPS enabled, but otherwise not. If you could share some of these sites that have started to be blocked in Russia recently that it's speculated is a result of ECH rollout, we can try to take a look at them. The blocking of only the We have an upcoming test in OONI Probe that should be able to test this, so it would be useful to collect some information on that once we have it out: ooni/probe#1453. |
They specifically block Cloudflare's ECH, it is detected by the presence of SNI = Both HTTP2 (TCP) and HTTP3 (QUIC) are getting filtered. ECH specification requires the user-agent to retry the connection without ECH if it fails with ECH for some reason, but the particular method Russia uses to filter prohibited requests on TSPU government boxes leads to very long timeout (about a minute) before the connection is marked as failed. TSPU "freezes" the connection, all subsequent packets are dropped after prohibited connection is detected, instead of tearing it down or sending TLS alert, or anything more appropriate. This is generally not the case of commercial DPI systems, which also are still used in Russia. |
"Centre of Monitor and Control of the Internet" has issued the following statement:
https://cmu.gov.ru/ru/news/2024/11/07/рекомендуем-отказаться-от-cdn-сервиса-cloudflare/ It's rare to see blocking confirmation at all, let alone written in a direct non-bureaucratic language. |
Does this mean that having the
According to the spec (https://www.ietf.org/archive/id/draft-ietf-tls-esni-22.html#name-handshaking-with-clienthello) clients MUST not retry without ECH if it fails, which I believe is to mitigate against middleboxes trying to downgrade clients to non-ECH connections. Probably the reason why people are experiencing difficulty accessing ECH enabled services is that Client do not failover to trying vanilla TLS 1.3 (I have yet to actually test if this is the behaviour on FF and Chrome). |
I use Firefox 131 on Linux, and I have ECH enabled even without encrypted ECH. This is the case on my Windows VM as well. |
That is correct (just edited the message with more info). |
Hrm, indeed.
It seems I'm wrong. Maybe the previous drafts had some sort of fallback, as I remember reading about it. |
Let's move the discussion of Cloudflare ECH blocking in Russia to a dedicated thread: I summarized the information from this thread there. |
According to the Mozilla wiki, the change to not require DoH happened in Firefox 129. https://wiki.mozilla.org/index.php?title=Security/Encrypted_Client_Hello&oldid=1251602
I found this from a post on NTC. |
Have you disable DOH in your system? Have you disable |
Seems like Cloudflare has gradually started to enable Encrypted ClientHello support. You can see it on
rutracker.org
andbo0om.ru
for example.ECH was instroduced on Cloudflare several years ago but has been disabled after very short test period. I could not find any announcement except for in CF documentation:
Rutracker now opens in Firefox 130 in Russia without any circumvention methods. Apparently Firefox 130 does not require DNS-over-HTTPS for ECH to work.
Cloudflare uses a single ECH key & configuration for all the domains
cloudflare-ech.com
is used as a canary domain (SNI) for TLS requestsThe text was updated successfully, but these errors were encountered: