DNSSEC @ Softwaregeek.nl

Eerst maar het slechte nieuws: iedere keer dat u een website bezoekt, maakt u gebruik van een goedgelovig systeem dat gemakkelijk te hacken is. Het goede nieuws: Dat is nu verleden tijd. Softwaregeek.nl gebruikt nu namelijk ‘DNSSEC’. Dat betekent dat u als bezoeker van deze site weer een beetje veiliger kunt kijken en lezen. We hopen dat andere websites snel volgen.

Om DNSSEC te kunnen begrijpen, dient u eerst meer te weten over DNS.


Geschiedenis van DNS

Elke computer die met het internet verbonden is moet een IP-adres hebben om op afstand bereikbaar te zijn. Zo’n computer wordt een host genoemd. Omdat hij fungeert als gastheer voor de gebruiker die er op afstand gebruik van maakt. Een nadeel is dat zulke nummers voor mensen moeilijk te onthouden zijn, daarom kreeg elke computer daarnaast een naam toegekend.

In 1968 hebben Paul Baran en Donald Davies het eerste computernetwerk bedacht met de naam ARPANET.

Dat werd in de software die internetverbindingen maakt ingebouwd zodat zulke namen gebruikt konden worden, door hun nummer op te zoeken in een tabel. Deze tabel was aanvankelijk een bestand, /etc/hosts, soms hosts.txt genoemd, dat op elke computer dat aan het Internetverkeer deelnam aanwezig moest zijn.

Naarmate het aantal en de omvang van de deelnemende netwerken groeide werd het actueel houden van dat bestand op elke deelnemende computer ondoenlijk. Daarom werd het DNS-protocol ontworpen, zodat deze informatie over het Internet kon worden opgevraagd. Daardoor kan een organisatie de toewijzing van nummers aan namen altijd aanpassen zonder dat voor het doorvoeren van die wijziging bij anderen expliciete acties nodig zijn.

Alle software die een Internetverbinding gebruikt ondersteunt DNS, maar ook nog steeds het hosts bestand. Soms wordt dit laatste bestand nog gebruikt om bijvoorbeeld lokale computers een makkelijke naam te geven. Of om tijdelijk voor een specifieke host het DNS systeem te negeren, soms handig bij het testen van een nieuwe website die nu nog een andere URL heeft of lokaal draait.

Een 2e toepassing is het opnemen van een lijst van domeinnamen die als ongewenst zijn geklasseerd. In het hosts bestand is er een verwijzing naar een ander adres (dan een DNS-server), zoals naar 127.0.0.1. De Localhost genoemd. Het netwerk kijkt naar zijn eigen host, zichzelf.

DNS is een online telefoonboek

Computers kunnen maar één ding, en dat is rekenen. Ze denken en communiceren in getallen. Dat is ook het geval als u een website bezoekt. Gaat u bijvoorbeeld naar Softwaregeek.nl, dan wordt dit ‘onder de motorkap’ vertaald naar een adres dat bestaat uit cijfers. Dat ziet er zo uit: 185.104.28.118. Dat is echter niet wat u in uw adresbalk typt of ziet staan: https://www.softwaregeek.nl.

Wanneer u dit in de adresbalk zet ziet uw computer ziet een reeks getallen. Dat noemt men een IP-adres. Het systeem dat de naam en de daarbij behorende getallen aan elkaar koppelt, heet het Domein Name System (DNS). Dit systeem maakt gebruik van een soort online telefoonboek waardoor uw browser weet welke naam precies bij welk IP-adres hoort.

Maar we zijn te grazen genomen

Het probleem met DNS is dat het te goedgelovig is. Malafide hackers weten het DNS dikwijls om de tuin te leiden door een andere naam aan een IP adres te koppelen. De gewone internetters worden dan, ongemerkt, omgeleid naar een namaakwebsite. Waar ze door de hackers te grazen worden genomen. Terwijl er in de adresbalk staat dat ze gewoon op de website van hun keuze zitten. Zelfs het slotje is aanwezig! Alsof u de bank binnenloopt wat eigenlijk een nep bank is, gerund door criminelen die achter uw creditcardgegevens aanzitten.

En DNSSEC?

Het DNS-protocol is kwetsbaar voor misbruik. Onder meer door middel van zogenaamde DNS cache pollution aanvallen (zoals de ‘Kaminsky Aanval’), is het DNS om de tuin te leiden. Als gevolg hiervan kunnen argeloze gebruikers bijvoorbeeld naar een valse, malafide website worden gestuurd. In antwoord op deze bedreiging is een uitbreiding op het DNS protocol ontwikkeld: de Domein Name System Security Extensions, kortweg DNSSEC.

Met behulp van deze internet standaard zijn DNS antwoorden cryptografisch te beveiligen, zodat ze niet meer kunnen worden vervalst. Dit gebeurt op basis van zogenaamde digitale handtekeningen, die met een private sleutel worden gegenereerd en met behulp van een publieke sleutel kunnen worden gevalideerd.

Van DNS-antwoorden is zodoende de integriteit en authenticiteit gegarandeerd, ook als dit een ontkennend of leeg antwoord is. Het is echter een misverstand om te veronderstellen dat DNSSEC het DNS verkeer ook beschermt tegen afluisteren.

Een echtheidskeurmerk

Het is in feite een uitbreiding op het oude, onveilige telefoonboek voor computers. DNSSEC werkt echter net iets anders dan DNS. Waar DNS met een authoritative (gezaghebbende) server (is de autoriteit voor zijn zone), genoegen neemt. Het bevraagt ​​en wordt bevraagd door andere naamservers in de DNS. De gegevens die het ontvangt als reactie van andere naam servers, worden in de cache opgeslagen. Gezaghebbende servers zijn niet gezaghebbend voor gegevens die in de cache staan. Vraagt de DNSSEC server ook nog om een recursive (recursief) DNS server op de aanvraag van een naam.


Een recursieve DNS?

Bij een recursieve DNS lookup communiceert een DNS-server met verschillende andere DNS-servers om een ​​IP-adres op te sporen en terug te sturen naar de cliënt (uw PC). Dit in tegenstelling tot een iteratieve DNS query, waarbij de cliënt rechtstreeks communiceert met elke DNS-server die bij het opzoeken betrokken is. Ook al is dit een zeer technische definitie, een nadere blik op het DNS-systeem en het verschil tussen recursie en iteratie moet de zaken ophelderen.

DNS DNSSEC wij leggen uit wat het is
Schema: DNSSEC

Wat is het verschil tussen recursie en iteratie?

Recursie en iteratie zijn computerwetenschappelijke termen die twee verschillende methoden beschrijven voor het oplossen van een ​​probleem. Bij recursie roept een programma zichzelf herhaaldelijk aan totdat aan een voorwaarde is voldaan, terwijl bij iteratie een reeks instructies wordt herhaald totdat aan een voorwaarde is voldaan. Dit subtiele verschil is moeilijk te illustreren zonder in code te treden, maar het belangrijkste is dat recursie een oplossing is die zichzelf herhaaldelijk aanroept.


Alle adressen die in DNSSEC staan hebben een echtheidskeurmerk, hackers kunnen door DNSSEC het systeem onmogelijk nog voor de gek kunnen houden. Met DNSSEC weet u zeker dat de website die u bezoekt ook daadwerkelijk de website is die u wilt bezoeken.

Dan is het probleem toch opgelost?

Probleem opgelost, dat zou u denken. Maar helaas is het zo simpel ook weer niet. Want lang niet alle websites zijn al opgenomen in de DNSSEC lijst. Belangrijke websites die eigenlijk heel veilig zouden moeten zijn, zoals die van banken en de Overheid doen lang niet altijd mee. Dat komt doordat het soms veel werk en geld kost om een domein helemaal compatibel te maken met DNSSEC.

En omdat DNSSEC pas werkt als zowel de website als de internetprovider het ondersteunt, ontstaat er een kip en ei probleem. Veel websitebeheerders, maar ook Hosts (degene die zorgt dat de website op internet komt) wachten tot internetproviders DNSSEC ondersteunen. Daar in tegen wachten internetproviders juist tot meer websites het gebruiken. Op die manier kunt u dus lang wachten.

Softwaregeek.nl gebruikt DNSSEC

Daarom gebruiken wij, samen met 45% van de Nederlandse websites DNSSEC; iedereen die onze site bezoekt is direct veilig. En die overige 55% dan? Daarvan kan de veiligheid helaas niet gegarandeerd worden. We hopen dat er snel meer websites maar ook internetproviders zullen volgen.