It's not a good sign in general, because it shows that at least one
censor (the GFW) has a pretty large tolerance for collateral damage. But
I don't think it spells the end of domain fronting, for a few reasons.
On collateral damage, see "Why You Can't Read The Atlantic in China":
http://www.theatlantic.com/international/archive/2014/11/why-you-cant-read-the-atlantic-in-china/382883/
"It’s not that The Atlantic or Sony had just uploaded subversive
content .... the Chinese government tried to block certain sites
served up by EdgeCast. But EdgeCast serves up content for tens
of thousands of sites, and the Chinese authorities seem to be
blocking many others as well."
We've learned that the GFW can tolerate breaking a certain number of web
sites in the course of blocking circumvention. However, it doesn't mean
that their tolerance for collateral damage is unlimited.
https://edgecastcdn.net/ is blocked but
https://github.com/, which is
also used for circumvention purposes, is still not.
The EdgeCast block was likely in response to the kind of mirrors
GreatFire was cleverly hosting at URLs like
https://edgecastcdn.net/00107ED/g/
(there are more at
https://github.com/greatfire/wiki). The idea is
similar to domain fronting, in that part of the request (here the path
component of the URL rather than the Host header) is hidden from the
censor under HTTPS, and only the domain is revealed.
The blocking of
edgecastcdn.net is by DNS poisoning (click one of the
dates at
https://en.greatfire.org/https/edgecastcdn.net for more
details), the mildest of the blocking techniques GFW is known to employ.
If they were really serious about blocking EdgeCast, they would also do
IP blocking and inject TCP RSTs--but they aren't doing that. And I
suggest that they couldn't actually do that. There's a big difference
between blocking the specific DNS name
edgecastcdn.net, and blocking the
entire EdgeCast CDN. Blocking just the domain name effectively blocks
the mirror sites, and also any unrelated web sites that happen to
hardcode "
edgecastcdn.net". But most, I would guess, sites that use
EdgeCast actually use their own CNAME alias for
edgecastcdn.net. Those
sites are unaffected by DNS poisoning, but would be broken if the entire
CDN was blocked. In other words, the collateral damage could have been
greater, but it appears the GFW took an expedient step that also limited
damage.
A very similar event happened at the end of September on Akamai, but it
didn't get as much attention. The special domain
a248.e.akamai.net is
roughly the equivalent of
edgecastcdn.net, was also used for mirror
hosting, and it was also blocked by DNS poisoning.
https://en.greatfire.org/https/a248.e.akamai.net
The few web sites that happened to hardcode
a248.e.akamai.net would have
been broken, but that's not the common way to use Akamai. The common way
is to use your own CNAME, and let Akamai direct the request according to
the Host header (which is exactly what we take advantage of in domain
fronting). GFW didn't block everything on Akamai (which would have truly
enormous collateral damage), they only blocked one specific name.
What makes meek and similar systems more resilient is the domain
fronting trick. We can still direct traffic to our own domain; it just
means that
edgecastcdn.net and
a248.e.akamai.net no longer work as front
domains--you have to use something else. For the front domain you can
choose any domain that CNAMEs to the CDN, or even a large set of them.
The strategy behind choosing a front is either to choose one that is so
important the censor can't block it without incurring too much damage,
or to rotate among a selection of lesser ones. So for example, we could
choose some other big domain hosted on Akamai, one the GFW is reluctant
to block, rather than the generic
a248.e.akamai.net.
In a way, the fact that a domain name was blocked is good news for us.
It means that at least one censor still prefers fairly crude methods of
blocking. The
edgecastcdn.net situation was pretty much ideal for
website fingerprinting–style attacks, after all: there's only a small
number of mirrored files, some with exact file sizes known in advance.
The fact that GFW decided to just suck up the collateral damage, rather
than deploy a DPI-type classifier, says something about the relative
attractiveness of different classes of attack to the censor.
I think this episode is a good example of the benefit of a slight change
in thinking regarding circumvention. We should think about systems not
in terms of a binary "can it be blocked?", but rather ask the question
"what does it *cost* to block it?" We can say that blocking domain
fronting costs the blocking of a domain; some censors can afford it,
others cannot. In this way we make blocking resistance at least somewhat
quantifiable. (Of course it's more complicated than that; there are
other potential attacks; but just take the one with the minimum cost as
representative. So far it appears that blocking a domain has the minimum
cost.)
The attack you mention, that of a censor pressuring a CDN to kick out
users like us, is a real one. As we assume that the censor controls
larger and larger sections of the network, it becomes harder and harder
to defeat. It's important to remember that the cost model cuts both
ways, though: CloudFlare needs China and China needs CloudFlare. But as
for which one needs the other *more*, who would prevail in a conflict;
that is an economic and political question, and that's how we should
think about it. Not only that one side could unilaterally deny service
to the other, but what incentives exist on all sides.
David Fifield