Gisteren berichtte de Correspondent dat het gratis draadloze (WiFi) netwerk in de trein volstrekt onveilig is. Vandaag nam o.a. de Volkskrant dat bericht over. Mijn eerste reactie was: wat een open deur! Maar in tweede instantie realiseerde ik mij dat het wel degelijk interessant is om te kijken wat er nou precies aan de hand is, of daar wat aan te doen is, en of de NS nou echt zoveel te verwijten is.
Stel je gebruikt gratis WiFi in de trien. Als je verder geen tegenmaatregelen hebt genomen (daarover later meer), kan iemand met een antenne en wat vrij verkrijgbare software eenvoudig zien dat je met je laptop, tablet of smartphone verbinding maakt, welke websites je bezoekt, en welke gegevens je daarmee uitwisselt.
Om te begrijpen hoe dat kan, is het (helaas) nodig om enigzins te begrijpen hoe een netwerk in het algemeen, en Internet in het bijzonder, werkt. Hieronder volgt een extreem versimpelde (en daarom niet helemaal accurate) beschrijving van hoe het ongeveer in elkaar steekt.
Een netwerk maakt het mogelijk dat twee computers (dat kan een PC, een laptop, een smartphone, een router, een server, etc. zijn) met elkaar gegevens uitwisselen. Daarvoor moeten ze direct (of indirect) op een of andere manier met elkaar verbonden zijn. Dat kan draadloos (WiFi) of met een kabel (Ethernet) zijn.
Vaak is het zo dat meerdere computers óf met een kabel óf draadloos direct met elkaar verbonden zijn. Die verbinding loopt dan via een zogenaamde switch (of router, in het geval van WiFi is dat een zogenaamd wireless access point). Gezamenlijk vormen die computers dan een zogenaamd Local Area Network (LAN). In het geval van de NS is die router het kastje dat het gratis WiFi netwerk aanbiedt. Zo wordt een LAN in de trein gevormd. Maar ook op kantoor (of thuis) ben je via zo'n LAN met het Internet verbonden.
Als één computer op een LAN iets verstuurt ontvangen in theorie alle andere computers in hetzelfde LAN dit bericht. Dit is natuurlijk niet de bedoeling. Vandaar dat iedere computer een zogenaamde MAC adres heeft. Dit MAC adres is uniek. Geen enkele andere computer in de wereld heeft hetzelfde MAC adres als jij. Sterker nog, je WiFi verbinding op je laptop heeft een ander MAC adres dan de LAN poort (als je die nog hebt, tenminste...). De verzender kan het MAC adres van de beoogde ontvanger van het bericht opgeven, en zijn eigen MAC adres als afzender toevoegen. Op die manier kan de ontvanger op het bericht gericht antwoord geven.
De WiFi ontvanger of de LAN poort op je laptop luisteren continu naar het netwerk, en laten alleen die berichten door (voor verwerking door je laptop) die voorzien zijn van het eigen MAC adres. Die zijn immers aan jou gericht. (Maar dit is slechts een afspraak, en veel ontvangers zijn zo te programmeren dat ze alle pakketjes doorgeven. Dit is de reden dat je eenvoudig al het data verkeer op een LAN af kunt tappen. Merk wel op dat vaak de router of de switch intelligent genoeg is om te weten waar apparaten met een specifiek MAC adres zich bevinden, en dus niet alle berichten overal naar door stuurt.)
Belangrijk om te onthouden uit dit verhaal is dat het MAC adres essentieel is om direct onderling berichten op het LAN uit te wisselen. Het MAC adres is daarom niet versleuteld. Daarnaast is het belangrijk om je te realiseren dat een LAN in principe een open netwerk is: alle aangesloten computers zien elkaars berichten (en dus de MAC adressen). Als je een ontvanger met antenne afstemt op de radio frequentie van WiFi, en nog wat vrij beschikbare software installeert, ben je eigenlijk een extra computer op het LAN geworden (behalve dan dat je alleen maar luistert).
Lokale netwerken zijn allemaal mooi en aardig, maar je maakt natuurlijk verbinding met het gratis WiFi netwerk om te Facebooken, Googlen of te appen. De servers staan niet in het lokale netwerk. Die staan aan de andere kant van de wereld. Het Internet zorgt ervoor dat je, via je LAN, uiteindelijk verbinding krijgt met die servers.
Dat werkt als volgt.
Internet heeft zijn eigen adressen. Zogenaamde IP adressen. Zo is 64.233.167.94 het IP adres van google.nl. Je hebt dit IP adres nodig om een zoekopdracht naar Google te kunnen sturen. En Google heeft jou IP adres nodig om het antwoord terug te kunnen sturen.
Het Internet gebruikt deze IP adressen om je zoekopdracht, via tussenliggende computers (zogenaamde routers) die stuk voor stuk direct met elkaar verbonden zijn, uiteindelijk bij de server van Google af te leveren. Internet verkeer wordt door je laptop verpakt in LAN berichten, die vervolgens door de eerste router (het wireless access point) weer worden uitgepakt om te kijken waar het bericht naar door gestuurd moet worden. Het bericht wordt weer ingepakt en verder gestuurd, waarna de eerstvolgende computer op de route richting de server van Google het bericht verwerkt en doorstuurt, net zo lang totdat het bericht uiteindelijk zijn bestemming bereikt.
Iemand met een antenne en de juiste software kan dus zien dat je met je laptop, tablet of smartphone verbinding maakt, welke websites je bezoekt, en welke gegevens je daarmee uitwisselt. Met de uitleg hierboven weten we nu hoe dat technisch gesproken werkt.
De afluisteraar kan het MAC adres van je laptop, tablet of smartphone lezen. Dit MAC adres zit immers onversleuteld in ieder berichtje dat je over het draadloze netwerk verstuurd. Het MAC adres is altijd hetzelfde en uniek. Dat betekent dus dat de afluisteraar jou kan herkennen als je een volgende keer met hetzelfde apparaat verbinding maakt met het WiFi network. Aan het MAC adres kun je bovendien zien wat soort apparaat het is. Dit is het gevolg van het feit dat MAC adressen globaal uniek moeten zijn. Daarom zit er structuur in, en is bijvoorbeeld het bedrijf dat het apparaat gemaakt heeft te vinden.
De afluisteraar ziet het IP adres van de website die je bezoekt (of van de server die bij de app hoort die je op dit moment gebruikt). Met een tool als whois is daar eenvoudig de leesbare domein naam van de dienst voor terug te vinden. En dan weet de afluisteraar dus dat je op zoek bent naar informatie over AIDS (https://aids.gov) of vreemd wilt gaan (http://www.secondlove.nl/).
Tenslotte ziet de afluisteraar alle data die je over de onbeveiligde verbinding met de website uitwisselt. Zo kan de afluisteraar zien welke pagina's je precies bezoekt, je status updates lezen, je account informatie en wachtwoorden achterhalen, of je credit card nummer lezen.
Dit alles als je geen tegenmaatregelen hebt genomen natuurlijk.
Je kunt er voor kiezen (en je doet er dus verstandig aan) je Internet verkeer extra te beveiligen. Dat kan op een aantal manieren.
De eerste manier is om alleen gebruik te maken van zogenaamde veilige websites. Dat zijn websites die een slotje in je browser laten zien en waarvan het adres begint met https://. Een tool zoals HTTPS Everywhere regelt dat automatisch voor je. De inhoud van je Internet verkeer wordt dan versleuteld (met TLS), en is dan niet meer leesbaar voor afluisteraars (zoals de routers op het pad naar Google, of de andere computers in je LAN). Wel is nog steeds het IP adres te zien van de website die je bezoekt. Dat kan ook niet anders, want alle routers op het Internet moeten immers weten waar ze jou verkeer naar door moeten sturen. Niet zichtbaar is welke pagina je bezoekt; dat is wel netjes versleuteld. Desalniettemin zegt het feit dat je naar zeg https://aids.gov surft (of http://www.secondlove.nl/) soms al voldoende...
De tweede manier is gebruik te maken van een Virtual Private Netwerk (VPN). Eigenlijk creëert een VPN een extra netwerk laag. Net zo goed als Internet verkeer verpakt wordt in LAN berichtjes, kun je VPN verkeer verpakken in Internet verkeer. Een VPN zet een veilige verbinding op tussen jou laptop en de VPN server. In essentie heeft dat hetzelfde effect als wat hierboven beschreven is voor een veilige website: de inhoud van het verkeer tussen jou laptop en je VPN server wordt versleuteld, en het enige dat een afluisteraar ziet is het adres van de VPN server. Dat is niet zo spannend, want dat is telkens hetzelfde adres. De VPN server is een soort doorgeefluik. In de berichten die je naar de VPN server stuurt zet je voor wie de berichten in werkelijkheid bestemd zijn. (Deze berichten zijn versleuteld, en de afluisteraar kan deze echte geadresseerde dus niet lezen.) En de VPN server stuurt (via dezelfde beveiligde verbinding) de antwoorden naar jou laptop terug. Het is overigens wel belangrijk een betrouwbare VPN service te kiezen. De VPN server ziet immers wel alle websites die je bezoekt.
Als laatste zou je gebruik kunnen maken van Tor, maar daar gaan we hier verder niet op in. Qua functionaliteit doet het in deze context hetzelfde als een VPN, maar het heeft als voordeel dat de je niet één VPN server hoeft te vertrouwen met al je verbindingen.
Merk op (zoals hierboven al is uitgelegd), dat het MAC adres van je laptop in al deze gevallen gewoon zichtbaar is.
Er is een aantal maatregelen die je zelf kunt nemen om jezelf te beschermen. Maar de terechte vraag is of (de aanbieder van) het draadloze netwerk zelf je niet in bescherming zou moeten nemen. Zou de NS niet een zogenaamde beveiligd draadloos netwerk aan moeten bieden?
Probleem is dat de beveiliging van zo'n netwerk net iets anders betekent dan je zou verwachten. Waar de beveiliging van zo'n beveiligd draadloos netwerk in de eerste plaats namelijk voor bedoeld is, is om te voorkomen dat onbevoegde personen toegang krijgen tot het netwerk. Vandaar dat je bij een beveiligd draadloos netwerk een wachtwoord moet invoeren als je probeert verbinding te maken. Zonder wachtwoord kom je er niet in. Heb je wel het wachtwoord, dan kun je verbinding maken, en wordt bovendien je verbinding versleuteld (met een sleutel die afhangt van het wachtwoord).
En daarmee hebben we in dit specifieke geval van een in principe vrij toegankelijk WiFi netwerk wel een probleem. Om het netwerk voor iedereen vrij toegankelijk te maken, moet iedereen dat wachtwoord kennen. Maar als iedereen dat wachtwoord kent, kan iedereen uiteindelijk ook de versleuteling ongedaan maken (en alsnog je verbinding afluisteren). Eerlijk is eerlijk: dat is niet helemaal recht-toe recht-aan. Je moet beginnen met afluisteren op het moment dat de laptop voor het eerst verbinding maakt met het WiFi access point. Kom je te laat, dan lukt het niet meer. Desalniettemin is de extra beveiliging die dit biedt beperkt.
Je kunt niet voorkomen dat een afluisteraar je MAC adres achterhaalt. Maak je gebruik van een WiFi netwerk, dan ben je dus traceerbaar. Het enige dat helpt is WiFi (en Bluetooth!) uitzetten - geen verbinding maken is niet genoeg: als WiFi aan staat probeert je apparaat om de zoveel tijd verbinding te maken met een access point, en geeft zo alsnog je MAC adres weg. (Sommige apparaten, zoals recente iPhones en iPads met iOS 8 gebruiken een random MAC adres in dit geval, en zijn dus niet kwetsbaar.)
Om te verhullen welke diensten je gebruikt en welke websites bezoekt moet je een VPN installeren en gebruiken. Dat is omslachtig, vooral omdat lang niet alle apparaten automatisch een VPN verbinding kunnen opzetten en (als de verbinding tijdelijk weg valt) kunnen herstellen. Voor hetzelfde geld denk je dat je een VPN verbinding hebt opgezet, terwijl je in werkelijkheid onbeschermd aan het Internetten bent.
Is NS in deze nou veel te verwijten? De NS zou in ieder geval het gebruik van een VPN toe moeten staan. Voor sommigen lijkt een VPN in de trein wel te werken; voor anderen niet. Maar meer dan dat kan de NS eigenlijk niet doen. Een beveiligd draadloos netwerk voegt immers nauwelijks extra bescherming toe. En bovendien heeft de Correspondent eerder al eens laten zien dat het erg eenvoudig is om een openbaar draadloos (WiFi) netwerk te hacken.
Uiteindelijk is dit weer een mooi, en triest, voorbeeld van het feit dat het niet voldoende nadenken over beveiliging en privacy bescherming bij het ontwerpen van een systeem uiteindelijk tot grote problemen leidt. Als we een echt veilig en privacy vriendelijk Internet willen, dan zullen we dat van de grond af opnieuw op moeten bouwen.
Update 12-08-2015: Een combinatie van WPA2-Enterprise en een specifieke manier van authenticatie (EAP-TTLS) maakt het mogelijk om zonder client certificates en een zelfgekozen gebruikersnaam en wachtwoord (i.e. zonder configuratie of aanmelden vooraf) veilig verbinding te maken met een draadloos netwerk. Deze methode wordt echter niet standaard ondersteund onder Windows. Iemand vertelde mij dat het draadloze netwerk van het Chaos Communication Camp 2015 gebruik maakt van deze methode.
Je kunt toch ook via het IP-adres checken of je met het echte NS netwerk of ander go-between netwerk bent verbonden. Volgens mij is WiFi in de trein altijd 10.187.204.100…of zit dat toch anders?
Dat werkt niet echt omdat a) niet iedereen dat adres kent, en b) iedereen datzelfde IP adres kan gebruiken.
“Je moet beginnen met afluisteren op het moment dat de laptop voor het eerst verbinding maakt met het WiFi access point. Kom je te laat, dan lukt het niet meer.”
Kleine correctie: Je kunt zo’n herconnectie forceren, en daarmee dus alle verkeer vanaf jouw gekozen moment alsnog onderscheppen. Zie “step 3” hier: http://www.aircrack-ng.org/doku.php?id=cracking_wpa#step_3_-_use_aireplay-ng_to_deauthenticate_the_wireless_client
Je hebt helemaal gelijk. Dit is een van de voorbeelden waar ik omwille van de eenvoud en helderheid dit detail weg heb gelaten.