Privacy Enhancing Technologies Symposium
July 11, 2013
Research paper (20 pages)
Use services that make HTTP requests to carry data between a censored user and a circumvention bridge.
A censor is able to blacklist IP addresses, and is reluctant to cause “collateral damage” by censoring services that have non-circumvention uses.
There is an online scanning service (OSS) outside the firewall, able to make HTTP requests to a circumvention proxy and the client.
The relay acts as a web server. The client asks an OSS to scan a URL on the relay.
“Dear OSS, please retrieve
http://relay.com/?data=UGxlYXNlIG5vdGUgdGhhdCB0aGlzIGRvY3VtZW50IGlzIHByb3ZpZGVkIGluIG9yZGVyIHRvIGRvY3VtZW50CkRlYmlhbidzIGhpc3RvcnkuICBXaGlsZSB0aGUgZ2VuZXJhbCBpZGVhcyBzdGlsbCBhcHBseSBzb21lIGRldGFpbHMKY2hhbmdlZC4KCgoqKioqKioqKioqKioqKioqKioqKgpBcHBlbmRpeApUaGUgRGViaWFuIE1hbmlmZXN0bwoqKioqKioqKioqKioqKioqKioqKgoKCgkJCVRoZSBEZWJpYW4gTGludXggTWFuaWZlc3RvCgoJCQlXcml0dGVuIGJ5ICBJYW4gQS4gTXVyZG9jawoJCQkgICAgIFJldmlzZWQgMDEvMDYvOTQKCgpXaGF0IGlzIERlYmlhbiBMaW51eD8KPT09PT09PT09PT09PT09.”
Both client and relay act as web servers. The client’s first request embeds a return address. The relay’s response contains a redirect back to the client.
The client’s response to the redirected request is another redirect back to the relay. And so on.
OSSes (with few exceptions) stop following redirects after a while. The client needs to kick off a new scan (and chain of redirects) after the previous one is exhausted.
The client needs to poll to see if the relay has anything new to send.
HTTP/1.0 301 Moved Permanently Location: URL
<frameset><frame src="URL"><frameset>
<meta http-equiv="refresh" content="0; url='URL'">
<body onload="document.form.submit();">
OSS | # of HTTP redirects | # of meta- refresh |
---|---|---|
AdSense | 5 | 5 |
Dr.Web | ∞ | 0 |
GoMo | 15 | ∞ |
goo.gl | 15 | 30 |
NoVirusThanks | 10 | 0 |
PDFmyURL | ∞ | ∞ |
VirusTotal | 5/20 | 0/≈150 |
vURL | 20 | 0 |
W3C | 7 | 0 |
Chromium | 20 | ∞ |
Firefox | 20 | ∞ |
Internet Explorer | 120 | ∞ |
Safari | 16 | ∞ |
OSS | capacity of HTTP redirects | capacity of meta-refresh |
---|---|---|
AdSense | 2047 | 2047 |
Dr.Web | 8181 | 0 |
GoMo | ∞ | ∞ |
goo.gl | 2047 | 2047 |
NoVirusThanks | ≈128000 | 0 |
PDFmyURL | ∞ | ∞ |
VirusTotal | 2047 | 0/∞ |
vURL | ≈128000 | 0 |
W3C | 8181 | 0 |
Chromium | ≈262144 | ∞ |
Firefox | ∞ | ∞ |
Internet Explorer | ∞ | ∞ |
Safari | ∞* | ∞* |
OSS | bytes / s |
---|---|
AdSense | 500 |
Dr.Web | 20,000 |
GoMo | 22,000 |
goo.gl | 350 |
NoVirusThanks | 21,000 |
PDFmyURL | 220,000 |
VirusTotal | 1,000 |
vURL | 250 |
W3C | 4,600 |
http://relay.com/91a37a20/6fe7703b/123/50/? &data=UGxlYXNlIG5vdGUgdGhh...
flashproxy-reg-url
, manual rendezvous for flash proxy.
flashproxy-reg-appspot
, rendezvous using a static OSS we
control, hidden behind https://www.google.com/.