Hoe DNSSEC werkt — KSK, ZSK, DS, DNSKEY, RRSIG, NSEC uitgelegd
Een doorloop van de DNSSEC-vertrouwensketen: hoe KSK- en ZSK-handtekeningsleutels, DS-records, DNSKEY-records, RRSIG-handtekeningen en NSEC/NSEC3 samenwerken om DNS-antwoorden te authentiseren.
TL;DR
DNSSEC werkt door elke recordset in uw zone te ondertekenen met een privésleutel. De Zone-Signing-Key (ZSK) ondertekent alles behalve de DNSKEY-records; de Key-Signing-Key (KSK) ondertekent de DNSKEY-set. Een hash van de KSK wordt gepubliceerd als DS-record in uw bovenliggende zone, waardoor uw zone wordt gekoppeld aan de globale vertrouwensketen. RRSIG-records dragen de handtekeningen, NSEC/NSEC3-records bewijzen dat een naam niet bestaat, en validerende resolvers lopen de keten terug naar de rootsleutel die met hun software wordt geleverd.
What you'll learn
- De KSK-, ZSK- en CSK-rollen in DNSSEC-ondertekening onderscheiden
- Uitleggen hoe DNSKEY, DS en RRSIG samen een vertrouwensketen vormen
- Geauthenticeerde negatie met NSEC en NSEC3 begrijpen
- De stap-voor-stap-validatie volgen die een recursieve resolver uitvoert op een DNSSEC-antwoord
DNSSEC authentiseert DNS-data door een hiërarchie van cryptografische handtekeningen die zich keten van een record in uw zone helemaal terug tot een vertrouwensanker dat hardcoded is in elke validerende resolver. Deze gids loopt door de bewegende delen — DNSKEY, DS, RRSIG, NSEC/NSEC3, en de KSK/ZSK-rollen — op een niveau dat u in staat stelt te redeneren over werkelijke deployments zonder cryptograaf te zijn.
Voor de operationele rollover-procedures (pre-publish ZSK, double-signature KSK, algoritme-rollover), ga door naar DNSSEC-sleutelbeheer. Voor de hoogniveau-introductie zonder de mechaniek, is de pagina Wat is DNSSEC? een beter startpunt.
De betrokken records
DNSSEC introduceert vier recordtypes in een ondertekende zone, plus DS-records gepubliceerd in de bovenliggende zone:
| Record | Leeft in | Doel |
|---|---|---|
| DNSKEY | Uw zone | Publiek deel van elke handtekeningsleutel (KSK, ZSK of CSK) |
| RRSIG | Uw zone | Digitale handtekening over een recordset (één RRSIG per RRset, per actieve sleutel) |
| NSEC / NSEC3 | Uw zone | Geauthenticeerde negatie — bewijst dat een naam niet bestaat |
| DS | Bovenliggende zone | Hash van uw KSK; de schakel in de vertrouwensketen |
| CDS / CDNSKEY | Uw zone | Optionele automatisering: vertelt de bovenliggende welke DS te publiceren (RFC 7344) |
Handtekeningsleutels: KSK, ZSK, CSK
DNSSEC gebruikt historisch een twee-sleutel-splitsing: een KSK voor hoogwaardige operaties met lage frequentie, en een ZSK voor hoogfrequente operaties met lagere ceremonie. De motivatie is puur operationeel — cryptografisch doen beide sleutels hetzelfde (data ondertekenen met een privésleutel, verifiëren met een publieke).
Zone-Signing-Key (ZSK)
De ZSK ondertekent alles in uw zone behalve de DNSKEY-recordset. Wanneer een resolver de A-records van example.com opvraagt, komt het antwoord terug met een corresponderende RRSIG ondertekend door de ZSK. Elke ondertekende recordset heeft zijn eigen RRSIG.
ZSK's zijn typisch:
- Kleiner (1024-bit RSA was gebruikelijk in vroege deployments; ECDSA P-256 / 256-bit is de moderne norm)
- Relatief vaak geroteerd (elke 1–3 maanden historisch; sommige beheerders slaan nu geplande rotaties over met sterke sleutelopslag)
- Eenvoudiger te roteren omdat het DS-record van de bovenliggende zone niet hoeft te veranderen
Key-Signing-Key (KSK)
De KSK ondertekent alleen de DNSKEY-recordset. Die set bevat het publieke deel van elke actieve handtekeningsleutel in de zone. Door de DNSKEY-set te ondertekenen met de KSK, koppelt u elke andere sleutel in de zone (specifiek elke actieve ZSK) aan een sleutel waarvan de hash bij de bovenliggende zone is gepubliceerd.
KSK's zijn typisch:
- Groter (2048-bit RSA, ECDSA P-256 of Ed25519 zijn allemaal gangbaar)
- Zelden geroteerd (elke 1–5 jaar, of alleen bij vermoede compromittering)
- Duurder om te roteren omdat het DS-record bij de bovenliggende zone moet worden bijgewerkt, wat de registrar en TLD-timing erbij betrekt
Combined Signing Key (CSK)
Een CSK speelt beide rollen in een enkele sleutel. Dezelfde sleutel ondertekent DNSKEY (KSK-rol) en andere recordsets (ZSK-rol). Moderne deployments gebruiken steeds vaker CSK met ECDSA P-256 of Ed25519, omdat:
- Handtekeningen klein genoeg zijn dat de kosten per query verwaarloosbaar zijn
- Operationele complexiteit lager is (één sleutel om te beheren, één rotatie om te coördineren)
- HSM-ondersteunde sleutelopslag het beveiligingsargument om KSK en ZSK te scheiden, vermindert
DNScale gebruikt standaard CSK met ECDSA P-256 voor nieuwe zones, wat de standaard is voor de meeste moderne managed leveranciers.
DNSKEY: Publieke sleutels publiceren in de zone
Elke actieve handtekeningsleutel heeft zijn publieke deel gepubliceerd als DNSKEY-record op het zonetop:
example.com. 3600 IN DNSKEY 257 3 13 oJMR... ; KSK
example.com. 3600 IN DNSKEY 256 3 13 mZXp... ; ZSKDe velden gedecodeerd:
- Vlaggen (
257of256): bit 7 (SEP— Secure Entry Point) is gezet op de KSK, wat257geeft. De ZSK heeft256. Beide formaten delen ook bit 8 (Zone Key) die altijd is gezet in DNSKEY. - Protocol (
3): altijd 3 in geldige DNSSEC. - Algoritme (
13hier):13= ECDSA P-256,8= RSA SHA-256,15= Ed25519. Zie IANA DNSSEC algoritmen voor de volledige lijst. - Publieke sleutel (base64-gecodeerd): het werkelijke sleutelmateriaal.
Een validerende resolver haalt de DNSKEY-set op bij het valideren van elk record uit uw zone, en gebruikt de juiste sleutel (KSK voor de DNSKEY-RRSIG zelf, ZSK voor al het andere).
RRSIG: De handtekeningen
Elke ondertekende recordset in uw zone wordt vergezeld door een of meer RRSIG-records — één per actieve handtekeningsleutel voor die rol. Een RRSIG ziet er zo uit:
example.com. 3600 IN A 192.0.2.1
example.com. 3600 IN RRSIG A 13 2 3600 20260601000000 20260501000000 12345 example.com. 4kQp...De RRSIG-velden:
- Type covered (
A): het type recordset dat wordt ondertekend. - Algoritme (
13): moet overeenkomen met het DNSKEY-algoritme. - Labels (
2): aantal labels in de oorspronkelijk ondertekende naam. - Original TTL (
3600): de TTL die de recordset had toen deze werd ondertekend. - Handtekeningverloop (
20260601000000) en begin (20260501000000): UTC-tijdstempels. De handtekening is alleen geldig in dit venster. - Key tag (
12345): korte ID voor welke DNSKEY in de zone deze handtekening produceerde. Komt overeen met de key tag van het corresponderende DNSKEY-record. - Signer name (
example.com.): de zone wiens sleutel dit ondertekende. - Handtekening (base64-gecodeerd): de werkelijke cryptografische handtekening.
Handtekening-verloopvensters zijn waarom DNSSEC operationeel niet-triviaal is. Als uw autoritatieve server stopt met opnieuw ondertekenen van de zone — zelfs kort —, beginnen handtekeningen te verlopen, validerende resolvers beginnen SERVFAIL terug te geven, en uw domein gaat effectief offline. Managed DNS-leveranciers tekenen automatisch opnieuw; zelf-gehoste DNSSEC vereist een werkende signer-pipeline.
DS-records: De link naar de bovenliggende
Het DS (Delegation Signer)-record is het scharnier dat uw zone verbindt met de globale vertrouwensketen. Het leeft in de bovenliggende zone (.com, .eu, .de, etc.) en bevat een hash van uw KSK. U voegt het niet toe aan uw eigen zone — u publiceert het bij uw registrar, die het doorgeeft aan het TLD-register.
Een DS-record in de bovenliggende zone ziet er zo uit:
example.com. 86400 IN DS 12345 13 2 7c89...Velden:
- Key tag (
12345): ID voor welke KSK deze DS hasht (komt overeen met de DNSKEY-key tag). - Algoritme (
13): moet overeenkomen met het DNSKEY-algoritme. - Digesttype (
2): SHA-256 (2) of SHA-384 (4) — SHA-1 (1) is verouderd. - Digest (hex-gecodeerd): de werkelijke hash.
Wanneer een validerende resolver uw zone wil authentiseren, haalt hij het DS-record op van de bovenliggende (bv. van de .com-nameservers), haalt vervolgens uw DNSKEY-set op, berekent de hash van de overeenkomende KSK, en controleert dat deze gelijk is aan de digest in de DS. Als ze overeenkomen, vertrouwt de resolver de DNSKEY-set van uw zone, en bij uitbreiding de RRSIG's ondertekend met die sleutels.
Dit is de enige geautomatiseerde link van buiten uw zone naar het sleutelmateriaal van uw zone. Zorg dat de DS klopt of DNSSEC-validatie faalt — of erger, uw domein wordt onoplosbaar voor validerende clients.
NSEC en NSEC3: Geauthenticeerde negatie
Een subtiel maar belangrijk probleem: DNSSEC kan niet alleen de records ondertekenen die bestaan. Het moet ook bewijzen, wanneer een resolver nonexistent.example.com opvraagt, dat de naam echt niet bestaat in plaats dat het antwoord stilzwijgend wordt verworpen of vervalst.
Het mechanisme is NSEC (RFC 4034) of NSEC3 (RFC 5155).
NSEC
NSEC-records zijn alfabetisch gesorteerd en ketenen door de namen die in de zone bestaan. Bijvoorbeeld:
alpha.example.com. NSEC gamma.example.com. A NSEC RRSIG
gamma.example.com. NSEC zulu.example.com. A NSEC RRSIG
zulu.example.com. NSEC alpha.example.com. A NSEC RRSIG ; loopt rond naar het beginEen resolver die beta.example.com opvraagt krijgt de ondertekende NSEC voor alpha.example.com terug, wat bewijst dat er niets is tussen alpha en gamma — dus beta bestaat niet. De handtekening op de NSEC authentiseert het negatieve antwoord.
Het nadeel: NSEC-records sommen elke naam in de zone publiek op. Iedereen die de NSEC-keten doorloopt kan een complete lijst maken van elke recordnaam. Dit heet "zone walking" en wordt soms beschouwd als een privacy-lek.
NSEC3
NSEC3 registreert dezelfde keten maar gebruikt gehashte namen in plaats van platte, plus een iteratietelling en zout:
< hash van alpha >.example.com. NSEC3 1 0 10 abcd123... < hash van gamma > A RRSIG NSEC3Resolvers kunnen negatie verifiëren zoals voorheen (hash van de bevraagde naam berekenen, vinden welke NSEC3 hem dekt), maar een aanvaller kan de zone niet triviaal doorlopen — hij zou elke hash moeten kraken. NSEC3 ondersteunt ook opt-out, waarmee registers ondertekening van niet-ondertekende delegaties kunnen overslaan om niet elke niet-bestaande subzone NSEC3 te hoeven ondertekenen.
Moderne aanbeveling: NSEC3 met iteraties=0 en een vast zout (of geen zout). Hoge iteratietellingen voegen CPU-kosten toe zonder betekenisvol privacy-voordeel omdat aanvallers met GPU's elke niet-nul telling kunnen kraken. De "white lies"-aanpak (RFC 4470) is een andere manier om het zone walking-risico te verminderen terwijl de eenvoud van NSEC behouden blijft.
De validatieflow — Stap voor stap
Wat gebeurt er eigenlijk wanneer een validerende resolver een DNSSEC-ondertekend antwoord ontvangt? Bij dig +dnssec example.com @1.1.1.1:
- De resolver ontvangt het A-record + RRSIG van uw autoritatieve server.
- De resolver haalt de DNSKEY-set van uw zone + RRSIG op. Hij heeft nu zowel de data als de sleutels (in publieke vorm) nodig om alles te verifiëren.
- De resolver verifieert de data-RRSIG tegen de ZSK in de DNSKEY-set. Als de handtekening ongeldig is, faalt validatie onmiddellijk.
- De resolver verifieert de DNSKEY-RRSIG tegen de KSK in de DNSKEY-set. De KSK heeft de DNSKEY-recordset ondertekend, inclusief de ZSK. Deze stap verbindt de ZSK aan de KSK.
- De resolver haalt het DS-record op uit de bovenliggende zone (bv. van de
.com-nameservers). De DS bevat een hash van de KSK. - De resolver berekent de hash van de KSK en vergelijkt deze met de DS. Als ze overeenkomen, heeft de bovenliggende bevestigd welke KSK gezaghebbend is voor uw zone.
- De resolver herhaalt de keten bij de bovenliggende. Het DS-record zelf is ondertekend door de ZSK van de bovenliggende zone; de DNSKEY-set van de bovenliggende is ondertekend door de KSK van de bovenliggende; de KSK van de bovenliggende is gehasht in het DS van de groot-bovenliggende zone, enzovoort, tot aan de root.
- Bij de root vergelijkt de resolver de hash van de root-KSK met het vertrouwensanker dat hij hardcoded heeft (of automatisch geüpdatet via RFC 5011). De huidige root-KSK is gepubliceerd op https://data.iana.org/root-anchors/.
Als elke handtekening verifieert en de root teruggekoppeld is naar het vertrouwensanker, geeft de resolver het antwoord terug met de AD (Authenticated Data)-vlag gezet. Elke fout onderweg en de resolver geeft SERVFAIL terug — beter breken dan een mogelijk gemanipuleerd antwoord aanbieden.
Wat fout kan gaan
| Faalmodus | Wat gebeurt | Hoe te detecteren |
|---|---|---|
| DS-record verouderd bij registrar | Bovenliggende verwijst naar een oude KSK die niet meer in uw zone is | dig DS yourdomain @parent-ns; vergelijken met huidige DNSKEY |
| Handtekeningen verlopen | Autoritatieve server tekende niet op tijd opnieuw | dig +dnssec yourdomain → RRSIG-verloop controleren |
| Algoritme-mismatch | DS hasht een sleutel met algoritme X maar DNSKEY publiceert algoritme Y | Validators rapporteren SERVFAIL; DNSViz licht het uit |
| Niet-ondertekende records ingevoegd | Autoritatieve server geeft records zonder RRSIG terug | Validators wijzen af; resolvers vallen terug op SERVFAIL |
| Sleutel te vroeg verwijderd tijdens rotatie | Oude handtekeningen nog gecached maar bijbehorend DNSKEY verwijderd | Zichtbaar als TTL-begrensde validatiefouten |
| Zone-import zonder herondertekening | Records geïmporteerd van andere leverancier maar niet ondertekend | Alle RRSIG's ontbreken of ongeldig |
De eerste twee — verouderde DS en verlopen handtekeningen — veroorzaken de overgrote meerderheid van werkelijke DNSSEC-storingen. Managed leveranciers handelen herondertekening automatisch af; het DS-record bij de registrar is het door mensen aanraakbare faalpunt.
Het samenstellen — Een mentaal model
De schijnbare complexiteit van DNSSEC is meestal boekhouding. De werkelijke cryptografische vraag is eenvoudig: kwam dit antwoord van iemand die de privésleutel van de zone beheert? De vertrouwensketen is een reeks publieke-sleutel-bindingen, elk een normale "sleutel A ondertekent sleutel B" of "sleutel A ondertekent data D"-stap:
- De root-KSK ondertekent de root-DNSKEY-set (die de root-ZSK bevat).
- De root-ZSK ondertekent de DS-records van TLD's.
- De KSK van een TLD ondertekent de DNSKEY-set van de TLD (die de ZSK van de TLD bevat).
- De ZSK van de TLD ondertekent de DS-records van geregistreerde zones.
- De KSK van uw zone ondertekent uw DNSKEY-set (die uw ZSK bevat).
- Uw ZSK ondertekent elke recordset in uw zone — inclusief de NSEC/NSEC3-records die negatie afhandelen.
Elke schakel is gewoon een handtekening; de magie is dat de resolver alleen de rootsleutel nodig heeft om ze allemaal te verifiëren.
Referenties
- RFC 4033 — DNS Security Introduction and Requirements
- RFC 4034 — Resource Records for the DNS Security Extensions (DNSKEY, DS, NSEC, RRSIG)
- RFC 4035 — Protocol Modifications for the DNS Security Extensions
- RFC 5155 — DNSSEC Hashed Authenticated Denial of Existence (NSEC3)
- RFC 6781 — DNSSEC Operational Practices, Version 2
- RFC 7344 / 8078 — Automating DNSSEC Delegation Trust Maintenance (CDS / CDNSKEY)
- RFC 8624 — Algorithm Implementation Requirements and Usage Guidance for DNSSEC
- RFC 8901 — Multi-Signer DNSSEC Models
- IANA DNSSEC Algorithm Numbers
- IANA Root Trust Anchors
Gerelateerde lectuur
- Wat is DNSSEC? — top-of-funnel-introductie
- DNSSEC-sleutelbeheer — operationele rotatieprocedures
- DNSSEC-installatiehandleiding voor DNScale — productwalkthrough
- DNSSEC vs DNS over HTTPS — integriteit vs privacy
- DNS-cache-poisoning — de aanval die DNSSEC verslaat
- NIS2 en DNS-naleving — DNSSEC als regelgevende controle
Frequently asked questions
- Wat is het verschil tussen KSK en ZSK?
- De KSK (Key-Signing-Key) ondertekent alleen de DNSKEY-recordset van uw zone — de set die uw publieke sleutels bevat. De ZSK (Zone-Signing-Key) ondertekent al het andere (A, AAAA, MX, TXT etc.). De splitsing bestaat zodat u de ZSK vaak kunt roteren zonder de bovenliggende zone erbij te betrekken, terwijl de KSK — die de bovenliggende zone koppelt via het DS-record — zelden roteert met hoge ceremonie.
- Wat is een DS-record en waarom staat het bij de registrar?
- Het DS-record (Delegation Signer) bevat een hash van de KSK van uw zone. Het leeft in de bovenliggende zone (bv. .com) zodat een resolver die informatie over uw zone ophaalt het kan vinden en uw DNSKEY-records ertegen kan verifiëren. U publiceert de DS via uw registrar, die het doorgeeft aan het TLD-register. Zonder de DS is uw zone ondertekend maar losgekoppeld van de globale vertrouwensketen — resolvers zien handtekeningen maar hebben geen reden om ze te valideren.
- Wat is een RRSIG-record?
- RRSIG is het handtekeningrecord. Voor elke recordset in uw zone (de A-records voor example.com, de MX-records voor example.com, de DNSKEY-set, etc.), produceert DNSSEC een RRSIG met een digitale handtekening over die set. Resolvers halen data en RRSIG samen op, en verifiëren dan de handtekening tegen de juiste publieke sleutel (ZSK voor de meeste data, KSK voor de DNSKEY-set zelf).
- Hoe bewijst DNSSEC dat een naam NIET bestaat?
- Via NSEC- of NSEC3-records. Een ondertekend NSEC-record zegt 'tussen alpha.example.com en gamma.example.com is er geen andere naam' — wat bewijst dat beta.example.com niet bestaat. NSEC3 doet hetzelfde met gehashte namen zodat een aanvaller die bevraagt niet de hele zone kan opsommen. Zonder dit zou een aanvaller valse NXDOMAIN-antwoorden kunnen vervalsen; mét dit is zelfs negatie ondertekend.
- Wat is een CSK en wanneer zou ik die gebruiken?
- Een CSK (Combined Signing Key) speelt zowel KSK- als ZSK-rollen in een enkele sleutel. Het vereenvoudigt operaties — slechts één sleutel om te beheren en te roteren — ten koste van frequentere registrar-interactie tijdens rollovers (omdat elke rotatie het DS-record betreft). Met ECDSA P-256 zijn handtekeningen klein genoeg dat operationele eenvoud vaak wint, en veel moderne leveranciers gebruiken standaard CSK in plaats van afzonderlijke KSK/ZSK.
- Wat doet een resolver eigenlijk tijdens DNSSEC-validatie?
- Hij haalt de gevraagde recordset en zijn RRSIG op, haalt de DNSKEY-set van de zone op, verifieert de RRSIG van de data tegen de ZSK, haalt het DS-record van de bovenliggende zone op, berekent de hash van de KSK van de zone en controleert dat deze overeenkomt met de DS, en herhaalt het proces vervolgens omhoog door de keten naar de root. Als elke stap verifieert en terug leidt naar het hardcoded root-vertrouwensanker, wordt het antwoord gemarkeerd als geauthenticeerd (AD-vlag gezet).
Related guides
Wat is DNSSEC? Een eenvoudige gids voor DNS-beveiliging
DNSSEC uitgelegd vanaf de basis — wat het is, waarom het bestaat, hoe het op hoog niveau werkt, en wanneer u het zou moeten activeren voor uw domein.
DNSSEC-installatiehandleiding voor DNScale — Stap voor stap
Activeer DNSSEC op een DNScale-zone in minder dan 10 minuten — sleutels genereren, DS kopiëren naar uw registrar, verifiëren, en de meest voorkomende rotatiefouten vermijden.
NIS2 en DNS — Wat gereguleerde EU-operatoren moeten weten
Hoe de NIS2-richtlijn (EU 2022/2555) van toepassing is op DNS — verplichtingen van de leverancier, risicomanagementmaatregelen, incidentmelding en wat te eisen van uw DNS-leverancier.
Ready to manage your DNS with confidence?
DNScale provides anycast DNS hosting with a global network, real-time analytics, and an easy-to-use API.
Start free