Wanneer: 19/01/2012 - 00:00
Om te begrijpen hoe het omzeilen van een internetblokkade door een ISP werkt is wat basale kennis over de structuur van het internet en de werking van netwerkprotocollen die gebruikt worden bij filesharing wel zo handig. Hieronder leg ik daarom de technische werking van het downloaden met behulp van een torrent van The Pirate Bay uit.
Het is ze dan eindelijk gelukt. Brein heeft het justitiële apparaat op haar knieën gekregen.
Gezien het bovenstaande lijkt me burgerlijke ongehoorzaamheid aangaande deze wetgeving niet misplaatst.
Om te begrijpen hoe het omzeilen van een internetblokkade door een ISP werkt is wat basale kennis over de structuur van het internet en de werking van netwerkprotocollen die gebruikt worden bij filesharing wel zo handig. Hieronder leg ik daarom de technische werking van het downloaden met behulp van een torrent van The Pirate Bay uit.
Stel Henk heeft een computer met een internetaansluiting bij XS4ALL. Henk wil met behulp van een torrent het boek Mutual Aid van Peter Kropotkin downloaden. Henk vindt de volgende link https://thepiratebay.org/torrent/6388655/Peter_Kropotkin_-_Mutual_Aid__A_Factor_of_Evolution_(Audiobook), downloadt de torrent, verbindt met Jan en Piet die seeders van de torrent zijn, ontvangt van hen de inhoud van de torrent, en ligt na een kwartiertje wachten op de bank naar zijn boek te luisteren. Wat is er nu zojuist gebeurd?
Stel X is Henk's computer. X is verbonden met een centrale van XS4ALL, net zoals andere XS4ALL gebruikers. XS4ALL is op zijn beurt weer verbonden met andere ISPs. Hoe de relaties tussen ISPs precies in elkaar steken weet ik ook niet exact, maar dat is voor deze tutorial van ondergeschikt belang (het werkt o.a. met Internet Exchange Points waar verschillende ISPs en andere IXPs elkaar treffen om data uit te wisselen). Henk's computer heeft van XS4ALL een uniek nummer gekregen waarmee anderen op het internet slechts met hem kunnen communiceren, het IP adres. Alle op het internet aangesloten apparaten hebben een uniek IP adres, dus ook servers die een website hosten, zoals The Pirate Bay.
Wanneer Henk dus naar https://thepiratebay.org gaat, verbind hij technisch gezien met een IP adres. Dat het domeinnaam thepiratebay.org verwijst naar 194.71.107.15, het IP adres van de The Pirate Bay, ligt opgeslagen in het zogenaamde Domain Name System (DNS). Servers van dit systeem zijn over de hele wereld verspreid, en gewoonlijk bij elke ISP aanwezig, zodat de klanten van die ISP niet zelf de IP adressen hoeven te onthouden.
Als Henk verbindt met The Pirate Bay gebeurd er dus het volgende: (Dat The Pirate Bay zich in een datacentrum bevindt negeren we even.)
Zie hieronder een illustratie van de netwerktopologie zoals uitgelegd (en negeer de IXPs):
Nu dat wij weten hoe men een internetpagina (of welke ander soort data dan ook) ontvangt, kijken we naar het torrentprotocol.
Torrents werken met een centrale tracker en peers. Peers zijn de IP adressen (denk: personen / gebruikers / computers) die óf het bestand aangegeven in de torrent bezitten en als download aanbieden, óf het bestand willen downloaden. De tracker houdt voor elke torrent bij wie er het bestand aanbieden (de seeders) en wie het bestand willen downloaden (de leechers). De tracker geeft als het ware de contactinformatie van peers aan elkaar en zodoende kunnen de seeders dus direct hun bestand uploaden naar de leechers. Strikt gezien download je dus niet van de The Pirate Bay, maar van de gebruikers van The Pirate Bay. The Pirate Bay heeft zelf trouwens geen tracker meer, maar maakt nu onder andere gebruik van tracker.ccc.de, tracker.openbittorent.com en tracker.publicbt.com.
Stel dat in het bovenstaande voorbeeld IP adres Y en Z in het bezit zijn van de door X gewilde data en deze via torrents aanbieden. Wanneer X dan aan de torrenttracker van The Pirate Bay de IP adressen van andere peers opvraagt zullen de IP adressen van Y en Z aan hem doorgegeven worden en zullen Y en Z de data naar X uploaden.
Nu dat we iets meer weten over de structuur van het internet en de werking van het bittorrentprotocol gaan we kijken naar de verschillende mogelijke censuurmethoden en de manieren om deze te omzeilen. De methoden op niveau 1 en 2 zijn de methoden die XS4ALL en Ziggo moeten gaan toepassen. De omzeilingsmethoden bij elk niveau zijn specifiek toegespitst op de gebruikte censuurmethode. Omzeilingsmethoden op hogere niveaus hebben dikwijls ook de eigenschappen van die lagere niveaus en zijn daarom tevens geschikt om de lagere niveaus van censuur te omzeilen.
Censuurmethode: DNS-filter
Omzeiling: Alternatieve DNS server, eigen DNS server, systemen die geen gebruik maken van DNS
Dit is de meest simpele vorm van censuur. De DNS server van de provider wordt zo geconfigureerd dat hij bij een verzoek tot het verkrijgen van een IP adres van een bepaalde site niet meer het IP adres terugstuurt. Vaak wordt je dan verwezen naar een webpagina van de provider met een verklaring van de blokkade.
De oplossing hiervoor is je computer zo in te stellen dat hij niet meer de DNS server van je provider gebruikt, maar een alternatieve DNS server, die wél censuurvrij is. Schematisch ziet deze oplossing er zo uit:
Een aantal alternatieve DNS servers zijn:
Een eenvoudige handleiding voor Windowsgebruikers is hier te vinden: http://www.youtube.com/watch?v=NtR-fiTAzUs
Je kunt ook je eigen DNS server maken, maar omdat dit geen "point and click" werk is neem ik dit in deze tutorial niet op.
De ideale oplossing voor dit probleem zou een gedistribueerd (P2P) DNS systeem zijn. Er zijn een aantal projecten die pogen een dergelijk systeem te maken, maar tot op heden is er nog geen voor de eindgebruiker bruikbaar prototype. Kijk bijvoorbeeld naar http://www.furidamu.org/p2p-dns en https://werebuild.eu/wiki/DNS.
Een andere oplossing is gebruik te maken van systemen die überhaupt geen gebruik maken van DNS adressen. Deze komen later in deze tutorial aan bod.
Censuurmethode: IP-filter
Omzeiling: Gebruik maken van een IP adres dat nog wel toegang tot The Pirate Bay heeft.
Het omzeilen van een IP blokkade is iets minder triviaal dan een DNS blokkade. Aangezien je normaliter slechts één manier hebt om het internet te bereiken, namelijk, via de server van je provider, en aangezien die server dataverkeer naar het IP adres van The Pirate Bay onmogelijk maakt, moeten we ons verkeer naar The Pirate Bay als het ware een omweg laten nemen. We doen dit door gebruik te maken van een IP adres dat zo vriendelijk is om als tussenpersoon te fungeren voor ons dataverkeer van en naar The Pirate Bay, en zelf geen last van blokkades heeft. In dit geval is de data dus de The Pirate Bay homepage en de torrents die door The Pirate Bay gehost worden. Dit ziet er schematisch als volgt uit:
In dit scenario is een omweg slechts nodig om toegang te krijgen tot de The Pirate Bay website en de daarop gehoste torrentbestanden. Het binnenhalen van de gewilde bestanden zoals onder het kopje achtergrondinformatie beschreven wordt door het censureren van het IP adres van The Pirate Bay niet aangetast. Zodra we het torrentbestand eenmaal binnen hebben is er dus geen censuur meer mogelijk.
Van deze dienst (vaak ook een proxy genoemd) zijn meerdere varianten. Omdat we slechts een kleine hoeveelheid data hoeven te downloaden en anonimiteit geen prioriteit is, is de lijst hieronder gerangschikt naar geschiktheid voor dit doel aan de hand van het criterium gebruiksgemak:
1. Webproxies Dit zijn webdiensten die de door jouw gewilde informatie voor je ophalen en vervolgens aan je tonen. Ook torrentbestanden kunnen hiermee gedownload worden. Een van de grotere indexsites voor webproxies is https://proxy.org, maar er zijn honderden zo niet duizenden webproxies die met een eenvoudige zoekopdracht te vinden zijn. Een handige plugin om dit proces te automatiseren is ¨MAFIAAFire: ThePirateBay Dancing!¨. Deze plugin haalt automatisch de website van The Pirate Bay via een willekeurige webproxy voor je op. De plugin vind je hier: https://addons.mozilla.org/en-US/firefox/addon/mafiaafire-piratebay-dancing
2. Proxies Dit zijn diensten die het mogelijk maken om het dataverkeer van bepaalde programma's via die dienst te laten lopen. Als een programma SOCKS4 of SOCKS5 ondersteunt kan het gebruik maken van SOCKS4 of SOCKS5 proxies. Maak je niet druk om deze termen. Het belangrijkste is dat browsers het gebruik van proxies ondersteunen. Een korte handleiding voor het gebruik van een proxy in Firefox samen met links naar websites met lijsten van gratis proxies vind je hier onder het kopje Free Proxies: http://activepolitic.com:82/News/2012-01-13a/thepiratebay__Circumventing_Censorship.html
3. VPNs Deze diensten maken het mogelijk om ál je internetverkeer om te leiden. Dit gebeurd dan ook niet in de browser maar met een programma als OpenVPN. VPNs zijn transparanter in gebruik, maar zijn vaak niet gratis. De kosten van een VPN verbinding komen meestal niet boven 15 euro per maand uit. Ipredator, van de heren van The Pirate Bay, biedt bijvoorbeeld voor 5 euro per maand een ongelimiteerde verbinding aan. Voor een overzicht van VPN diensten kun je bijvoorbeeld http://www.bestvpnservice.com of http://myvpnreviews.com gebruiken. Er zijn een aantal gratis VPN diensten die gelimiteerd zijn in gebruik. https://www.vpnreactor.com, https://hotspotshield.com en http://securitykiss.com zijn hier voorbeelden van.
VPNs hebben het bijkomend voordeel dat het verkeer tussen de VPN dienst en de gebruiker versleuteld is. Mocht je ISP besluiten dat torrentbestanden niet meer gedownload mogen worden, dan is met het gebruik van een VPN niet te detecteren dat je een torrent download.
Omdat VPNs meestal bedoeld zijn voor de overdacht van grotere hoeveelheden data is dit misschien niet de meest economische oplossing wanneer je slechts de torrentbestanden binnen wilt halen. VPNs zijn natuurlijk uitermate geschikt voor het omleiden van al je verkeer (lees: het verhullen van je IP adres), maar daarover later meer.
4. Anonimiseringsdiensten. Dit zijn proxysystemen die speciaal ontworpen zijn voor anonimiteit. Van de verschillende diensten is hier eigenlijk alleen het Tor netwerk nuttig. Dit anonimiseringsnetwerk stuurt data via 3 andere IP adressen naar de eindbestemming, en andersom. Het gaat voor deze tutorial te ver om uit te leggen hoe dit precies werkt, maar de eerste en de tweede relay weten niet wat de bestemming van de data is, en de tweede en derde weten niet wie de zender van de data is. Tussen de zender en de eerste node, en tussen de eerste en tweede node, is de data versleuteld. Slechts de derde relay, een exit node genaamd, kan de data zelf observeren, behalve wanneer het verkeer tussen afzender en bestemming versleuteld is. Bijvoorbeeld wanneer je naar een URL die begint met https:// gaat. Het is trouwens ten strengste af te raden je torrentverkeer via Tor om te leiden.9 Ten eerste kan dit je anonimiteit compromiteren, en ten tweede is het moreel onverantwoord omdat het de gelimiteerde bandbreedte van het Tor netwerk opslokt. Ik denk dat Syrische activisten wiens leven af kan hangen van het gebruiken van Tor toch wel voorrang hebben op jouw luisterboek.
Een alternatieve manier om de "front-end" van het filesharen (de torrentbestanden en de indexatie daarvan) resistent tegen censuur te maken is het decentraliseren van het hosten ervan. Een mogelijke manier om dit te doen is bijvoorbeeld door de forumsoftware Osiris SPS (Serverless Portal System) te gebruiken. Hiermee kun je een forum maken dat gehost wordt bij alle individuele gebruikers van dat forum. Er is dus geen centraal punt wat geblokkeerd of offline gehaald kan worden. Deze software is volledig functioneel en te vinden op https://www.osiris-sps.org. Een ander decentraal alternatief voor de front-end is Tribler - een torrentclient gemaakt door een team aan de TU Delft. Zowel het vinden van torrents als het downloaden en uploaden gebeurd binnen Tribler, en dit alles volledig decentraal. Tribler vind je op https://tribler.org. Deze alternatieven zijn meer future-proof dan de hierboven genoemde omzeilingsmethoden omdat ze structureel moeilijker aan te vallen zijn. Er zijn meer vormen van decentrale dynamische datasystemen te bedenken. Je zou zelfs, al is het wat lomp, een archief van een hele lading torrents, bijvoorbeeld alle torrents op The Pirate Bay, in één torrent kunnen stoppen. (Yo dawg, I heard you liked torrents..)
Censuurmethode: IP-filter inclusief IPs van trackers
Omzeiling: DHT
Zei ik bij het bespreken van het vorige niveau iets over oncensureerbaarheid zodra de torrent binnen is? Oh, dat was niet helemaal correct. Deze censuurmethode en alle anderen die nog volgen zijn niet onderdeel van de justitiële eis, maar zijn technisch gezien zeker mogelijk.
Zodra niet alleen het IP adres van The Pirate Bay, maar ook die van de door haar gebruikte trackers geblokkeerd worden, is het niet meer mogelijk om de IP adressen van andere peers van een bepaalde torrent te weten te komen. Dit is een effectieve blokkade van het torrentverkeer van The Pirate Bay.
Gelukkig is hier een oplossing voor: Distributed Hash Tables, oftewel DHT. Dit is een tamelijke complexe technologie, maar het is gelukkig niet noodzakelijk de technologie te begrijpen om er gebruik van te maken. Je kunt je DHT het beste voorstellen als een onder alle torrentgebruikers verdeelde gedistribueerde tracker. Wanneer een nieuwe peer zich bij een torrentswarm wilt voegen om de data van de torrent te downloaden vraagt hij aan een andere torrentgebruiker de adressen van de peers van deze torrent op. Die ene torrentgebruiker is al in het bezit van die (of een aantal van die) adressen omdat hij DHT gebruikt. Er is op deze manier geen centrale tracker nodig om andere peers te weten te komen. Nu zul je je misschien afvragen hoe een nieuweling dan zichzelf op kan laten nemen in het DHT netwerk. Dit werkt met zogeheten bootstrapping nodes, die vaak samen met een DHT-ondersteunend programma geleverd worden. Vaak wordt DHT naast trackers gebruikt om gemakkelijker nieuwe peers te vinden. Mocht er iemand zijn die DHT beter uit weet te leggen, voel je vrij dit document aan te passen en er deze kennis aan toe te voegen.
Programma's als µTorrent worden DHT-gereed geleverd. Het blokkeren van trackers is dus waarschijnlijk niet iets dat het torrentverkeer van The Pirate Bay zal doen stoppen. Zorg er dus voor dat DHT in je torrentclient ingeschakeld is.
Nog even een schema voor de volledigheid:
Censuurmethode: Monitoren van individuele gebruikers d.m.v. het observeren van een torrentswarm.
Omzeiling: VPNs, I2P, F2F filesharing
Als Henk een torrent kan downloaden en een lijst met IP adressen van peers uit de swarm van die torrent kan krijgen, zij het van een tracker of uit een DHT swarm, dan kunnen minder goedaardige partijen dat natuurlijk ook, en wel op grote schaal. Je hebt misschien recent wel gehoord van de site http://youhavedownloaded.com. Het is een ontnuchterend voorbeeld van wat je kunt doen wanneer je op grote schaal de IP adressen in meerdere torrentswarms monitort. Dit soort databases zijn al eerder samengesteld door academici10 en ik neem aan de entertainmentindustrie. Dit is de manier waarop de IP adressen voor een massarechtszaak worden verzameld. Massarechtszaken met bewijs dat op deze manier verzameld is zijn in Nederland nog niet voorgekomen, maar dit sluit toekomstige rechtszaken van dit soort niet uit. Helemaal met Teeven's nieuwe beleid aangaande uploaders.11
Hier is het dus zaak om het IP adres te verhullen. Hiervoor kun je een VPN gebruiken, zoals al eerder uitgelegd. Dit is waarschijnlijk de meest gemakkelijke oplossing, maar het kost je wel 2 biertjes per maand. Het schema hieronder geeft deze omzeiling weer in het geval dat X, Y en Z alledrie gebruik maken van dezelfde VPN dienst. Wanneer zij van verschillende diensten gebruik zouden maken zou er natuurlijk een fysieke pijl tussen deze VPN diensten lopen.
Een andere oplossing is Friend-to-Friend (F2F) filesharing. Dit houd in dat je bestanden aanbied, maar dan slechts aan personen die je vertrouwd. Op die manier maak je geen onderdeel uit van een publiek systeem dat gemakkelijk te monitoren is. Een tweede voordeel van F2F filesharing is de versleuteling van al het verkeer tussen twee peers. Hierdoor kunnen andere partijen niet zien wat er verzonden word (maar natuurlijk wel dát er verzonden word). Binnen sommige F2F netwerken is het mogelijk te zoeken in bestanden van personen die jij níet als vriend hebt toegevoegd. Dit werkt door een zoekopdracht te sturen naar zowel je vrienden als naar de vrienden van je vrienden (en zo verder). De zoekopdracht naar de vrienden van je vrienden wordt verzonden via een van jouw vrienden. Hierdoor zul jij niet het IP adres van de vriend van een vriend kunnen achterhalen. Dit geldt tevens voor het downloaden of uploaden van of naar een vriend van een vriend. Dit verloopt allemaal via de tussenliggende vriend. De twee meest populaire F2F filesharingprogramma's lijken mij op dit moment OneSwarm en RetroShare te zijn. Deze zijn beide te vinden op deze Wikipediapagina: https://en.wikipedia.org/wiki/Friend-to-friend
De laatste en sterkste oplossing is de torrentfunctionaliteit van het I2P anonimiseringsnetwerk. Het I2P netwerk lijkt sterk op het Tor netwerk, maar waar het Tor netwerk zich richt op het anonimiseren van verbindingen naar websites die ook zonder Tor bereikt kunnen worden, richt I2P zich bijna exclusief op diensten die zich enkel binnen het netwerk bevinden. Het IP adres van zowel de gebruikers van de dienst als de dienst zelf wordt hiermee verborgen. Net als bij het Tor netwerk wordt het dataverkeer over andere peers gestuurd, al zijn het 2 in plaats van 3 peers zoals bij het Tor netwerk. Bovendien is al het dataverkeer standaard versleuteld. Alle I2P peers zijn standaard ook relays. Alle gebruikers dragen dus een deel van hun bandbreedte bij aan het netwerk, in tegenstelling tot Tor. Ook is het netwerk, wederom in tegenstelling tot Tor, volledig decentraal. Het torrentprotocol binnen I2P is dat helaas niet, omdat het nog geen DHT ondersteund. Wel wordt I2P geleverd met een ingebouwde torrentclient en zijn er op dit moment al enkele trackers actief. Het I2P torrentnetwerk is dus operationeel. I2P is hier verkrijgen: https://geti2p.net
Censuurmethode: Deep Packet Inspection, analyse van dataverkeer
Omzeiling: Encryptie
De hierboven behandelde censuurmethoden zijn relatief niet-intrusief, maar Deep Packet Inspection, ook wel DPI, opent een heel nieuw blik met wormen. Met DPI kan men dataverkeer inhoudelijk analyseren. Dit kan het filteren van torrentbestanden zijn, maar ook het filteren van specifieke gegevens, verkeerstypen of sleutelwoorden. Vele autoritaire regimes met een voor burgers toegankelijk internet hebben reeds dergelijke systemen. Hiermee kan gevoelige informatie real-time gefilterd worden. Op deze manier is het mogelijk om het zoeken van informatie over de protesten op het Plein van de Hemelse Vrede onmogelijk te maken, ongeacht bij welke dienst men zoekt. Iran heeft Deep Packet Inspection in combinatie met gestolen SSL certificaten van het Nederlandse bedrijf DigiNotar gebruikt om versleuteld verkeer naar onder andere gmail.com en torproject.org af te luisteren.12 Het is niet onwaarschijnlijk dat hier mensen door zijn omgekomen. Bovendien word de technologie die dit soort praktijken mogelijk maakt veelal door Westerse bedrijven geleverd.13
De manier waarop analyse van dataverkeer voorkomen kan worden is het versleutelen van het verkeer. Op deze manier is de inhoud slechts door de partijen die daadwerkelijk data uitwisselen te ontcijferen. Voorbeelden hiervan zijn SSL verbindingen (de s in https://), PGP encryptie, en OTR instant messaging.
Ervan uitgaande dat DPI slechts toegepast wordt om auteursrechtelijk beschermd materiaal te herkennen en te blokkeren kan ik kort zijn over de omzeilingstechnieken: Alle in niveau 3 genoemde technieken versleutelen het verkeer en zijn dus bestand tegen dit gebruik van DPI. Standaard torrentverkeer is niet versleuteld en kan met deze vorm van DPI gecensureerd worden, zelfs wanneer men de DNS- en IP-blokkade omzeilt én men gebruik maakt van DHT.
Censuurmethode: Al het bovenstaande plus een verbod op encryptie, het blokkeren van de IP adressen van I2P of Tor nodes en het filteren van al het I2P, Tor en F2F verkeer. Publieke executies van filesharers.
Omzeiling: Offline of gelokaliseerd filesharen
Niet dat dit op afzienbaar termijn gaat gebeuren (althans, niet in Nederland), maar omwille van de toekomstbestendigheid van deze korte handleiding -en omdat veel van deze projecten ter omzeiling op zichzelf bezien al belangrijk zijn- behandel ik ze toch. Ik ga er in dit scenario van uit dat het veilig uitwisselen van bestanden op het internet op geen enkele manier meer mogelijk is. We moeten dus op zoek naar filesharingsystemen die niet afhankelijk zijn van het internet.
1. Meshnetwerken Een meshnetwerk is een digitaal netwerk zonder centraal onderdeel. Je zou kunnen zeggen dat het de toepassing van het P2P principe op de fysieke structuur van een netwerk is. Mesh networking is complexe materie, maar praktisch functionerende meshnetwerken bestaan al een aantal jaar. Het Freifunk project in Berlijn is hier een voorbeeld van, evenals het guifi.net project in Catalonië (met meer dan 15000 operationele nodes!). Er zijn vele meshnetwerkprojecten. Voorbeelden zijn: Project Byzantium (http://wiki.hacdc.org/index.php/Byzantium), Village Telco (http://villagetelco.org), en FabFi (http://fabfi.fablab.af). Een community die zich bezig houdt met meshnetwerken vind je hier: https://pay.reddit.com/r/darknetplan
2. Dead Drops Dead Drops zijn USB sticks die men op publieke plaatsen achter kan laten zodat anderen er anoniem gebruik van kunnen maken. Je treft ze meestal gecementeerd in een muur aan, maar je hebt vrij in het plaatsen van je Dead Drop, zolang hij maar vast zit en vrij toegankelijk is. Website: https://deaddrops.com
3. PirateBox Een PirateBox is een portable WiFi netwerk met een aan het netwerk verbonden opslagmedium. Wanneer je met een PirateBox verbindt word je automatisch doorverwezen naar de enige beschikbare website op het netwerk, die van de PirateBox zelf. Vervolgens kun je hier bestanden downloaden en uploaden. Je kunt tevens met anderen chatten. Website: http://wiki.daviddarts.com/PirateBox