The Internet has become so economically important that few countries can afford to cut off access altogether. Instead, repressive regimes allow 'Net access, but try to block individual websites they don't want their populations to see. Some users, aided by allies in the West, use circumvention technologies like Web proxies or TOR to access forbidden information. This has led to a long-running cat-and-mouse game in which censorship opponents establish new proxies while censors race to identify and block them.
Researchers at the University of Michigan have developed technology that they hope can decisively tilt the playing field toward free speech. Their system, called Telex, is an "end-to-middle" proxy scheme. That is, rather than explicitly directing traffic to a proxy server, users "tag" traffic they want proxied and transmit it to an ordinary website that happens to have a Telex-enabled router between it and the user. The router recognizes the tag and silently redirects the packets to their real destination.
The trick is that the tags need to be encoded in a way that the Telex system can detect but that the censor cannot. Otherwise, the censor would simply block tagged traffic.
The system accomplishes this using a clever tweak to the TLS handshake that occurs whenever a browser initiates an encrypted Web connection. One of the steps in that handshake requires the client to choose a random bit string known as a "nonce." If a client wants Telex to redirect the connection, it uses Telex's public key to generate a steganographic "tag." The tag format is carefully chosen so that someone who knows the Telex private key will be able to recognize the tag efficiently—but no one else will be able to distinguish it from a random string.
The Telex system consists of "stations" connected to routers at various points in the Internet's architecture. The stations use deep packet inspection to monitor all the TLS handshakes that go across the wire and look for nonces that are Telex tags. Once the Telex station sees a tag, it hijacks the connection, sending a TCP reset command to the original destination and serving as a proxy between the client and its actual destination.