Om uit te leggen wat DNSSEC is en doet, is het eerst belangrijk om de volgende dingen te weten:
Websites worden gehost op servers. Deze servers zijn op het internet aangesloten en zijn te bereiken op een bepaald adres: het IP-adres. Die komen in twee 'smaken': IPv4 (bijvoorbeeld 185.48.101.178) en IPv6 (bijvoorbeeld 2001:470:1e13:6821:810b:e1e8:f20b:4226).
Nummers onthouden is lastig, vooral als het er zo veel zijn. Erg herkenbaar is het ook niet. Daarom zijn domeinnamen in het leven geroepen, zoals flexwebhosting.nl. Domeinnamen worden uitgegeven door een registry, zoals de SIDN voor .nl domeinnamen.
Het DNS is eigenlijk een soort online telefoonboek. Hierin staat van iedere domeinnaam waar dat onderdeel van de domeinnaam gehost wordt. De afkorting DNS staat voor Domain Name Servers en zo'n name server geeft je het antwoord op de vraag "Op welke IP-adres vind ik de server waar deze website op gehost wordt?" De registry weet van iedere domeinnaam in welke Name Server de DNS-informatie van een domeinnaam te vinden is.
So far, so good. Maar wat gebeurt er als er iemand jouw vraag onderschept en bewust een verkeerd antwoord geeft?
Als je een domeinnaam bezoekt, vraag je aan dat telefoonboek waar je moet zijn. Je verwacht dan een eerlijk antwoord terug, zodat jouw bezoek aan de website of een e-mail die je stuurt bij de juiste ontvanger aan komt. Je bent hiervoor wel volledig afhankelijk van de name server die je een antwoord geeft en moet er dan ook maar op vertrouwen dat dat antwoord klopt.
Hackers maken misbruik van dit vertrouwen. Ze kunnen jouw vraag afluisteren en je een ander IP-adres als antwoord geven. Je bezoekt dan een andere server of je stuurt je e-mail naar een ander adres. Dat mag natuurlijk niet kunnen.
Gelukkig is er een manier gevonden om dat te voorkomen. Met DNSSEC controleer je of het antwoord dat je krijgt ook klopt.
Dat zit zo. Zodra je voor een domeinnaam DNSSEC activeert, wordt er door de name server een digitale handtekening toegevoegd aan de DNS-informatie. Deze informatie en de handtekening worden versleuteld. De sleutel wordt doorgegeven aan de registry.
Zodra je een domeinnaam bezoekt, stuurt de registry je door naar de juiste name server. Dit is niet anders dan normaal. Alleen, als een domeinnaam DNSSEC actief heeft, weet de registry dat er een sleutel nodig is om de informatie te kunnen lezen. Deze sleutel geeft de registry dan mee door.
Als je bij de name server aanklopt met de vraag "Op welk IP-adres vind ik de server waar deze website op gehost wordt", geeft die name server antwoord. Dat antwoord zit "op slot". Alleen met de sleutel die jij bij je hebt, kun je de informatie lezen en weet je waar je heen moet.
Dit hele proces valt of staat met de controle van de gegevens. Het is heel gemakkelijk om te denken dat je er nu bent. Wel een sleutel maar geen goede gegevens? Dan geen website.
Deels heb je dan gelijk. Alleen, voor de zekerheid geeft de name server de DNS-informatie niet alleen "op slot" aan, maar ook een gewone leesbare versie. Voor het geval dat je sleutel niet klopt, zeg maar. Of dat je het slot niet kunt vinden.
Je krijgt dus altijd een antwoord. Het is aan je internetprovider om te bepalen wat er nu gaat gebeuren. Ze hebben twee opties.
Het eerste geval vindt meestal plaats bij de wat modernere verbindingen. Vooral glasvezelproviders en partijen die al met IPv6 werken, kiezen voor deze aanpak. Streng, maar wel veilig.
Partijen die niet (goed) controleren op de geldigheid van DNSSEC zijn dus eigenlijk niet goed bezig. Je kunt ze een handje helpen met een extensie voor je browser, bijvoorbeeld de DNSSEC Validator voor Chrome of DNSSEC voor FireFox.
DNSSEC is een extra stapje beveiliging en een welkome toevoeging aan het arsenaal aan mogelijkheden om internetgebruikers te beschermen tegen digitale criminaliteit. Het is nu aan de grote internetproviders om dit verder goed te gaan implementeren.