Wat is DNS? En waarom kan het internet niet zonder?
Zonder het Domain Name System (DNS) is er geen internet mogelijk. Maar wat is het? Een explainer bij het verhaal van de dag.
Het internet werkt niet alleen met namen (decorrespondent.nl), maar ook met nummers, de zogenoemde IP-adressen (.211.235.78). Omdat die nummers niet te onthouden zijn, gebruiken we namen. Maar die namen moeten wel ergens in nummers worden omgezet.
In de jaren zeventig, toen het internet nog ARPANET heette, werd dat handmatig gedaan. In het Network Information Center (NIC) van het Stanford Research Institute hield Jon Postel een overzicht bij van enkele honderden IP-adressen en bijbehorende domeinnamen.
Vanwege de groei van het internet was het handmatig bijhouden van alle adressen begin jaren tachtig niet meer te doen. De Amerikaanse computerwetenschapper Paul Mockapetris ontwierp daarom in 1983 een gedistribueerde database: je kon op verschillende servers IP-adressen omzetten in domeinnamen. Al die servers bij elkaar vormden het Domain Name System (DNS). Sinds 1998 wordt dat door ICANN beheerd.
Hoe werkt het DNS?
Al die verspreide adresboeken leidden echter tot een belangrijk probleem. Ieder IP-adres en iedere domeinnaam is uniek. Hoe zorg je er dan voor dat de informatie die op de verschillende servers staat altijd dezelfde is? En dat die informatie klopt? De oplossing was een hiërarchie van taken en databases.
Een voorbeeld.
Je typt https://decorrespondent.nl in de adresbalk van je browser.
Je browser en besturingssysteem kijken of ze het IP-adres kennen. Zo niet, dan wordt je verzoek doorgestuurd naar een resolving name server, meestal beheerd door je internet service provider. Als deze server het niet weet, gaat die op zoek naar het IP-adres.
Als eerste klopt hij aan bij de root zone database van het DNS. Dit zijn dertien databases waar de vertaling van namen naar nummers begint. Deze bevatten een authentieke lijst van top level domains (TLD’s). Dit zijn de codes aan het einde van de domeinnaam: .com, .info, .net en .org. Daarnaast zijn er landencodes (ccTLD’s), zoals .nl, .uk, .de, .be, .ru en .dk.
Als de root zone server aangeeft dat je naar het .nl-domein moet, wordt de resolving name server doorgestuurd naar de server van dat landendomein, in dit geval beheerd door Stichting Internet Domeinnamen Nederland (SIDN). Die stichting wordt een registry genoemd. SIDN heeft een overzicht van wie welke domeinnamen eindigend op .nl beheert. De server ziet bijvoorbeeld dat decorrespondent is geregistreerd door IS Group in Amsterdam en dat het volledige IP-adres te vinden is op drie servers, namelijk ns1.nxs.nl, ns2.nxs.nl en ns3.nxs.nl.
Vervolgens word je naar een van die drie servers gestuurd. Daar krijg je het volledige IP-adres van de server waarop decorrespondent.nl draait (die staat in Amsterdam-Zuidoost, bij LeaseWeb). Vervolgens geeft de resolving name server dit door aan je besturingssysteem en je browser en kun je daadwerkelijk naar decorrespondent.nl en bijvoorbeeld dit verhaal lezen.
Dit hele proces duurt nog geen seconde.
Is het DNS een veilig systeem?
Ja en nee.
In 2002 lagen de dertien root servers van het DNS bijvoorbeeld onder vuur door een DDoS-aanval. En terwijl ik dit stuk schreef, was er een storing bij een DNS-server van CloudFlare, waardoor ik een aantal sites een tijdje niet kon bereiken. Maar dit zijn tijdelijke onderbrekingen.
Er is echter ook een aantal structurele kwetsbaarheden.
De eerste is dat DNS niet heel privacyvriendelijk is. Google heeft ook een aantal DNS-servers (je Android-smartphone maakt daar gebruik van). Dat betekent dat Google altijd kan zien welke sites je wilt bezoeken: jouw IP-adres en het verzochte IP-adres zijn immers altijd bekend. Google heeft keer op keer laten weten deze data niet te analyseren of te gebruiken, maar de vraag is natuurlijk of dat zo blijft.
Daarnaast gebruiken cybercriminelen en inlichtingendiensten het DNS om netwerkverkeer te onderscheppen. Ze kunnen bijvoorbeeld een zogenoemde man-in-the-middle attack uitvoeren en jouw verzoeken aan een DNS-server onderscheppen en zelf een vals IP-adres teruggeven, waardoor je naar een andere site wordt geleid en daar bijvoorbeeld malware downloadt. De NSA heeft dit soort onderscheppingstechnieken gebruikt. Cybercriminelen gebruiken DNS-servers ook om DDoS-aanvallen uit te voeren: ze bevragen zoveel mogelijk servers tegelijk en laten het antwoord massaal doorsturen naar een doelwit.
Wat gebeurt er om die kwetsbaarheden te verhelpen?
Er wordt van alles gedaan om het DNS te verbeteren. Zo zijn er verschillende methodes ontworpen om het DNS privacyvriendelijker te maken. Delen van het verzoekende en het gevraagde IP-adres kunnen bijvoorbeeld versleuteld worden. Daarnaast wordt al jarenlang gewerkt aan de invoering van DNSSEC, een protocol waarmee je computer kan controleren of je met een betrouwbare DNS-server te maken hebt.
Maar de spannendste ontwikkeling is een heel prille: Namecoin. Deze webdienst maakt gebruik van het protocol van Bitcoin. Het DNS, en alle wijzigingen die volgen, worden publiekelijk vastgelegd in een onveranderlijke blockchain - een verzameling transacties die cryptografisch zijn versleuteld. De blockchain neemt dan de plek in van de root zone database, een authentieke en zeer betrouwbare bron, zonder dat er een centrale server nodig is.
Het gebruik van Namecoin is nog zeer beperkt en de dienst wordt geplaagd door allerlei praktische problemen, maar als denkrichting - een DNS dat door niemand gemanipuleerd kan worden - is het een interessante ontwikkeling.