Weet iemand hoe dit in een notendop werkt?
Het nieuwsartikel is erg vaag en de originele bron (een paper) helpt niet echt om het snel en comfortabel te begrijpen.
Deze omschrijving is een stuk simpeler.
Huge internet companies like Google, Amazon and Microsoft offer their web services using CDNs (Content Delivery Networks). Not only do they offer their own services using these, but also the ones you can host on their servers (Amazon CloudFront for instance). That means that thousands of internet domains are all pointing to the same CDN. At CloudFront the domains include d3dsacqprgcsqh.cloudfront.net (9GAG), deayhd4nq31b0.cloudfront.net (DealPly), a0.awsstatic.com (General domain for static web content of AWS) and so on.
So, how is this useful? Let’s look at how Tor takes advantage of this: The Tor Project hosts a simple nice server that you can use as a Tor entry point. In Amazon’s CDN, that’s d2zfqthxsdq309.cloudfront.net. If you would just connect to this in the usual way, it could be easily censored by blocking that domain in the DNS or in many other ways. But what happens if we connect to another domain of Amazon’s CDN but set d2zfqthxsdq309.cloudfront.net as our host header?
(...)
We actually can talk to that Tor entry while looking like a web browser talking to 9GAG, Amazon or a whole lot of other websites from the outside. The host header is only transmitted via TLS so that no firewall can see it. Also, we never asked our DNS server for d2zfqthxsdq309.cloudfront.net. A censor like the Great Firewall of China cannot see, if you are actually talking to 9GAG. It also hopefully won’t dare to block this kind of sites in general because the colateral damage would be to big. Just to block this, the censor would have to block any single AWS site, in meek’s case also every Microsoft Azure service as well, making the Internet for a lot of people pretty damn unuseable.
Met andere woorden:
content delivery networks (CDN's) zoals cloudfront.net kunnen verschillende diensten hosten. Bij hun maakt het niet uit of je met DNS naam a.cloudfront.net of b.cloudfront.net verbindt. Cloudfront is geïnteresseerd in de hostnaam die je browser (encrypted) naar hun stuurt.
Stel dat je dus met 'b.cloudfront.net' wilt verbinden. Al doe je dat direct, dan doe je een plain text DNS verzoek. Tevens zal je browser plain text de hostnaam communiceren om een SSL/TLS sessie op te zetten. Al deze informatie kan gebruikt worden om de verbinding te blokkeren als 'b.cloudfront.net' gecensureerd zou worden.
Maar stel dat je voor DNS en voor de plain text data om een SSL/TLS sessie op te bouwen met 'a.cloudfront.net' verbindt, die niet gecensureerd is omdat het een volledige andere dienst betreft, en (encrypted) via de browser aan de server aangeeft dat je eigenlijk met b.cloudfront.net wilt communiceren. Cloudfront verbindt je dan intern door met b.cloudfront.net zonder dat externe partijen dit kunnen zien.
Kort samengevat gaat het om de volgende kerninformatie die essentieel is bij het opbouwen van een sessie tussen een client (browser/applicatie) en server:
1. Het DNS verzoek (plain text)
2. Het domeinverzoek van de browser om een SSL/TLS sessie op te bouwen (plain text)
3. Het domeinverzoek van de browser in de HTTPS sessie naar de server (encrypted)
Maak van 1 en 2 een verzoek naar een niet gecensureerd subdomein om een veilige verbinding op te zetten, en laat de server via 3 weten met welk subdomein (mogelijk gecensureerd) je eigenlijk wilt verbinden.
Natuurlijk komt er wat meer bij kijken al lees je het originele paper. Zo moet je fingerprinting voorkomen bij het opbouwen van de SSL/TLS sessie. In het paper doen zij dat door daadwerkelijk een browser te gebruiken om de SSL/TLS sessie op te zetten. Signal zou dit kunnen doen door zoveel mogelijk een gewone browser te simuleren bij het opbouwen van de verbinding.
Waarom is dit zo moeilijk te blokkeren? Je kan in theorie van zeerpopulairewebdienstABC.cloudfront.net gebruik maken voor 1 en 2. Stel dat die geblokkeerd wordt, dan kan je gebruik maken van zeerpopulairewebdienstXYZ.cloudfront.net, enzovoort. Een overheid zou een hele CDN (en mogelijk ook andere CDN's, als de applicatie er meer ondersteunt) moeten blokkeren om Signal te kunnen blokkeren. Dat legt de drempel voor censuur hoger, doordat veel belangrijke partijen (ook die overheden liever niet censureren) gebruik maken van CDN's.
[Reactie gewijzigd door The Zep Man op 25 juli 2024 15:45]