skip to content

DNSSEC

The extensions that let a resolver prove a DNS answer came from the zone owner: signed RRsets, DS delegations and a chain to the root. Interviewers probe it because DNS itself is unauthenticated.

on this pageshow

explore

questions

page 1 of 2

What does a DNSSEC RRSIG record returned alongside an answer prove about that answer, and what does it leave unprotected?

level: juniorimportance: must knowfreq 45%

answer

  1. origin and integrity, not secrecy
  2. one RRset per signature
  3. a window, not a timestamp of freshness
  4. the key still needs vouching for

basics

~20 s

A DNSSEC RRSIG proves one RRset was signed with the private key behind a zone's DNSKEY and is unchanged, within its inception-to-expiration window. It adds no secrecy, no freshness inside that window and no DoS protection.

solid answer

~50 s

An `RRSIG` carries a digital signature over one **RRset** — every record sharing an owner name, class and type — plus the RRSIG's own fields. If it verifies against a `DNSKEY` in the zone named by the signer's name field, the resolver knows the data came from whoever holds that zone's private key and was not altered in transit or in a cache. What it does not give: confidentiality (RFC 4033 §4 says DNSSEC is not designed to provide it), protection against denial of service, or proof that this is the *latest* version of the data — a captured answer replays successfully until its expiration time. Nor does it prove a name is absent (that is the job of NSEC or NSEC3), and it is only meaningful once the key itself is authenticated, through a DS chain or a configured trust anchor.

go deeper

for a junior

Recall the two words: origin and integrity. DNSSEC signs data so a resolver can tell it is genuine and unchanged; it does not hide anything.

for a middle

Explain that the unit of signing is the RRset and that the signature has an inception and an expiration time, and say why the key must be authenticated separately.

for a senior

Show you know the limits an operator lives with: replay inside the validity window, no denial-of-service protection, and absence proved by different records entirely.

for a principal

Frame the trade-off: longer validity windows ease signing operations but widen the replay window, so window length is a security decision, not just an operational convenience.

## What an RRSIG record is DNSSEC (RFC 4033-4035, named together as BCP 237 by RFC 9364) adds **data origin authentication** and **data integrity** to DNS. It does that with public-key signatures stored in a resource record of type `RRSIG` (type value 46, RFC 4034 §3). A signed zone carries, for every authoritative RRset, at least one RRSIG at the same owner name (RFC 4035 §2.2). Two terms matter: - **RRset** — all records with the same owner name, class and type, for example every `A` record at `www.example.net`. DNSSEC signs RRsets, never single records. - **Validity window** — the RRSIG's `Signature Inception` and `Signature Expiration` fields. Outside that window the signature MUST NOT be used (RFC 4034 §3.1.5). ## What a verified RRSIG proves The signature covers the RRSIG's own RDATA (minus the signature) followed by the RRset in canonical form (RFC 4034 §3.1.8.1). When a resolver verifies it with the matching public key, it learns: 1. **Origin** — the RRset was signed with the private key that pairs with a `DNSKEY` in the zone named in the `Signer's Name` field. 2. **Integrity** — no record in the RRset was added, removed or edited after signing; changing any byte breaks the signature. 3. **The parameters were signed too** — the type covered, algorithm, labels count, original TTL and the validity window are inside the signed data, so they cannot be altered without detection either. ## What it leaves unprotected | Property | Provided by an RRSIG? | Where it comes from instead | |---|---|---| | Confidentiality of queries and answers | No — RFC 4033 §4 | Encrypted DNS transports | | Protection against denial of service | No — RFC 4033 §4 | Rate limits and capacity | | Proof that the answer is the newest version | Only bounded by the expiration time | Short validity periods | | Proof that a name or type does not exist | No | NSEC or NSEC3 records | | Trust in the signing key itself | No | A DS record in the parent and the chain above it | | Protection of zone transfers and dynamic updates | No — RFC 4033 §4 | Transaction-level message authentication | The **replay** row is the one candidates miss. An RRSIG says "this was true when signed", not "this is true now". If an operator changes an address but the old signed RRset is still inside its validity window, an attacker who captured it can serve it and it will validate. RFC 6781 treats the signature validity period as the bound on that risk, which is why it recommends short windows where the data changes or a key may be compromised. The **key** row matters just as much. A signature only proves which key signed the data. If anyone could publish any `DNSKEY` and have it believed, an attacker would simply sign forged data with a key of their own. Unless it is itself a configured trust anchor, the key is trusted only because a `DS` record in the parent zone vouches for it, and the parent's key is vouched for in turn, up to a trust anchor. ## Why the RRset, not the record Because the unit is the RRset, a validator cannot accept two of three `A` records and reject the third: either the whole set verifies or none of it does. An RRset may carry several RRSIGs (one per signing key or algorithm), and an RRSIG itself is never signed, since that would loop forever (RFC 4035 §2.2). ## What to say in an interview - DNSSEC answers "is this the data the zone owner published?", not "can anyone see it?". - The signature is time-bounded, so freshness is only as good as the expiration time. - A signature without an authenticated key proves nothing; the DS chain is what makes it count.

  • Can an attacker replay a captured, validly signed DNSSEC answer after the zone owner changes the record?
    Yes, until the RRSIG's expiration time passes. The signature proves the data was signed, not that it is current, and nothing in the record tells a validator the zone has since changed. RFC 6781 treats the signature validity period as the limit on this replay risk, which is one reason volatile data gets shorter windows.
  • Does one RRSIG cover a single A record or every A record at a name?
    Every A record at that name: the signature covers the whole RRset of one owner name, class and type in canonical order. You cannot sign or validate one record of the set on its own. An RRset can carry more than one RRSIG, for instance one per key during a key change.

saying these in an interview costs you the question

  • DNSSEC encrypts DNS answers so on-path observers cannot read them.
  • An RRSIG signs the whole DNS response message, header flags included.
  • A valid RRSIG proves the record is the latest version in the zone.
  • Each individual record in a signed zone gets its own separate RRSIG.
  • A verified signature is enough on its own; the key needs no further vouching.
open as a page

When a DNSSEC-validating resolver cannot verify an answer's signatures, what does the client receive, and why does it look like an outage?

level: juniorimportance: must knowfreq 35%

basics

~20 s

The client gets SERVFAIL (RCODE 2) and no records: the resolver withholds bogus data rather than pass on a possible forgery. SERVFAIL also reports unreachable or broken servers, so to users the domain simply seems down.

open as a page

How does a DNSSEC-validating resolver build a chain of trust from the root trust anchor down to the A record of www.example.com?

level: middleimportance: must knowfreq 40%

basics

~20 s

From the root anchor down, at every zone cut the parent's signed DS must match a digest of a child DNSKEY, and that key must sign the child's DNSKEY RRset. A key of the last zone then verifies the RRSIG over the A record.

open as a page

In a DNSSEC-signed zone, how does an NSEC record prove that a queried name or record type does not exist?

level: middleimportance: must knowfreq 30%

basics

~20 s

An NSEC record names the next existing name in canonical order and lists the types at its owner. A signed NSEC spanning the queried name proves the name absent; one at that name, lacking the type, proves no data.

open as a page

Why does DNSSEC's NSEC record let anyone list every name in a signed zone, and what does NSEC3 change about it?

level: middleimportance: must knowfreq 25%

basics

~20 s

Each NSEC names the next existing name, so following the chain from the apex lists the whole zone. NSEC3 hashes owner names with SHA-1, so the chain shows hashes, not names, though guessable names still fall to offline dictionary attacks.

open as a page

For a DNSSEC zone-signing key, how do pre-publish and double-signature rollovers differ, and when would you choose each?

level: middleimportance: must knowfreq 28%

basics

~20 s

Pre-publish adds the new ZSK unused, waits out the DNSKEY TTL, switches signing, and removes the old key after its signatures expire. Double-signature signs everything with both keys at once, then drops the old one. Pre-publish keeps responses small; double-signature is simpler.

open as a page

In a DNSSEC-signed delegation, what do the DNSKEY, RRSIG, DS and CDS/CDNSKEY records each carry, and which zone publishes each one?

level: middleimportance: must knowfreq 35%

basics

~20 s

DNSKEY holds a zone's public keys at the child apex; RRSIG signs each RRset beside it; DS, in the parent at the delegation, holds a digest of a child key; CDS and CDNSKEY at the child apex request the DS the child wants.

open as a page

Why does a DNSSEC-signed zone usually use two keys, a key-signing key and a zone-signing key, and what does each one sign?

level: middleimportance: must knowfreq 38%

basics

~20 s

A DNSSEC zone-signing key signs every authoritative RRset; the key-signing key signs only the apex DNSKEY RRset, which the parent's DS record points at. The split is operational: the ZSK rolls without the parent, and the KSK can stay offline.

open as a page

In a DNSSEC lookup, what do the DO, AD and CD bits each signal, and which party sets each one?

level: middleimportance: must knowfreq 32%

basics

~20 s

DO, in the EDNS0 OPT record, is set by a querier to request DNSSEC records. AD is set by a validating resolver on answers it verified. CD is set by a querier to say it will do the checking itself.

open as a page

A DNSSEC-signed zone suddenly fails on validating resolvers while plain DNS lookups still work; which re-signing and rollover mistakes cause this, and how do you prevent them?

level: seniorimportance: must knowfreq 25%

basics

~20 s

Usually signatures expired because re-signing stopped or a secondary served a stale copy, or the parent's DS points at a removed key-signing key. Prevent it by monitoring signature expiry on every server and matching DS to DNSKEY before removing keys.

open as a page

In DNSSEC, what is a trust anchor, and why must a validating resolver be configured with the root's key instead of learning it from DNS?

level: juniorimportance: should knowfreq 32%

basics

~20 s

A DNSSEC trust anchor is a DNSKEY, or a DS-style hash of one, that a validating resolver trusts without proof. It must come from outside DNS, because anyone able to forge DNS answers could also forge a root key fetched through DNS.

open as a page

Why does swapping a DNSSEC zone-signing key in one step - new key in, old key out, zone re-signed - break validation for some resolvers?

level: juniorimportance: should knowfreq 18%

basics

~20 s

Validating resolvers cache the DNSKEY set and the signatures separately, each for its own TTL. After a one-step swap some pair new signatures with an old key set, or old signatures with a new key set missing the old key; both mismatches are bogus.

open as a page

How does the DNSSEC chain of trust differ from an X.509 certificate path, and what does the difference mean when a signer's key is compromised?

level: middleimportance: should knowfreq 18%

basics

~20 s

A DNSSEC chain follows the DNS tree: only a zone's parent can vouch for its key, from a single root. So a compromised DNSSEC key forges only names below its zone, while in the web PKI any trusted CA can issue for any name.

open as a page

Why does rolling a DNSSEC key-signing key involve the parent zone, and how do the double-KSK and double-DS methods order their steps?

level: middleimportance: should knowfreq 22%

basics

~20 s

The parent's DS record points at the key-signing key, so a new KSK is trusted only once a matching DS is published and cached. Double-KSK adds the new key first, then swaps the DS; double-DS adds the new DS first, then swaps the key.

open as a page

Reading the DNSSEC record 'example.net. 3600 IN DNSKEY 257 3 13 ...', what do the flags, protocol and algorithm fields tell you?

level: middleimportance: should knowfreq 20%

basics

~20 s

Flags 257 means a zone key (256) with the Secure Entry Point bit (1), the usual KSK marking; protocol is always 3; algorithm 13 is ECDSAP256SHA256. The key tag is not stored but computed from the record.

open as a page

When a DNSSEC-validating resolver receives a signed A record, what does it fetch and check before it treats the answer as secure?

level: middleimportance: should knowfreq 24%

basics

~20 s

It needs the RRSIG over the A RRset and the zone's authenticated DNSKEY RRset. It checks the RRSIG matches the RRset, its validity window and a zone key, then verifies the signature over the canonical RRset.

open as a page

A DNSSEC-validating resolver looks up a name in shop.example.com, delegated from signed example.com with no DS; why is the answer insecure rather than bogus, and what must the resolver see first?

level: seniorimportance: should knowfreq 15%

basics

~20 s

With no DS, the chain ends at that delegation, and the parent's signed proof that no DS exists makes everything below it provably insecure. Answers there are returned unvalidated, not rejected. Without that signed proof, a missing DS counts for nothing.

open as a page

A DNSSEC zone signed with NSEC3PARAM 1 0 100 AABBCCDD gets insecure or SERVFAIL negative answers from some validating resolvers; why, and what does RFC 9276 say to set?

level: seniorimportance: should knowfreq 12%

basics

~20 s

Every extra NSEC3 iteration adds hashing to each negative answer for servers and validators, so resolvers may treat counts above 0 as insecure or fail them. RFC 9276 requires 0 extra iterations and advises an empty salt: 1 0 0 -.

open as a page

A DNSSEC zone has a one-day DNSKEY TTL and its parent serves the DS with a two-day TTL; how long must each wait in a double-DS key-signing key rollover last?

level: seniorimportance: should knowfreq 12%

basics

~20 s

After the new DS appears at the parent, wait the parent's propagation delay plus two days before swapping the key-signing key; after the swap, wait the child's propagation delay plus one day before removing the old DS. The parent's registration delay comes on top.

open as a page

How do a DNSSEC DS record's key tag, algorithm, digest type and digest identify one child DNSKEY, and why must new DS records not use SHA-1?

level: seniorimportance: should knowfreq 15%

basics

~20 s

A DS holds a child key's key tag and algorithm to narrow the search, a digest type, and a digest of the key's owner name and RDATA. SHA-1 (type 1) is MUST NOT under RFC 9904's registry and RFC 9905; use SHA-256 (type 2).

open as a page

Reading a DNSSEC RRSIG line field by field, how do its labels, original TTL, inception and expiration, key tag and signer's name let a validator check it?

level: seniorimportance: should knowfreq 15%

basics

~20 s

An RRSIG names the type it covers, the algorithm, the owner's label count (smaller means wildcard expansion), the RRset's original TTL, a UTC validity window, and the key tag and signer's name that locate the verifying DNSKEY at the zone apex.

open as a page

How does signing a DNSSEC zone with RSA-2048, ECDSA P-256 or Ed25519 change response sizes, and why does that matter for DNS over UDP?

level: seniorimportance: should knowfreq 16%

basics

~20 s

An RSA-2048 DNSSEC signature is 256 octets; ECDSA P-256 and Ed25519 signatures are 64, with public keys of 64 and 32 octets. Smaller keys and signatures keep signed answers within UDP sizes, avoiding fragmentation and TCP retries.

open as a page

When should a DNSSEC zone be signed online at query time rather than pre-signed by a signer, and what does each choice cost the operator?

level: seniorimportance: should knowfreq 14%

basics

~20 s

A pre-signed DNSSEC zone ships stored RRSIGs, so private keys can stay off the public servers but every change needs re-signing. Online signing suits answers built per query, at the cost of private keys on Internet-facing servers and per-response signing load.

open as a page

A DNSSEC-signed zone nobody has edited for weeks starts failing validation; how do signature validity windows differ from TTLs, and how should re-signing be scheduled?

level: seniorimportance: should knowfreq 22%

basics

~20 s

A DNSSEC signature is valid only between the absolute inception and expiration times in its RRSIG, while a TTL only limits caching. An unedited zone still needs re-signing well before expiry, leaving days of slack for a stalled signer.

open as a page

Users of your DNSSEC-validating resolver report that one domain is down, yet it resolves through other resolvers; how do you confirm a validation failure rather than an outage?

level: seniorimportance: should knowfreq 22%

basics

~20 s

Repeat the query to the same resolver with CD set: SERVFAIL without CD but records with CD means validation failed, not reachability. Extended DNS Errors such as DNSSEC Bogus or Signature Expired, and another validator's result, confirm it.

open as a page

For a DNSSEC hosting platform signing many customer zones, how do you choose between precomputed NSEC3, RFC 4470 minimally covering NSEC and RFC 9824 compact denial?

level: principalimportance: should knowfreq 6%

basics

~20 s

Precomputed NSEC3 keeps keys off the servers and lets resolvers reuse spans, but leaks guessable names. Minimally covering NSEC and compact denial stop enumeration but need online keys and leave no reusable spans; compact denial also turns NXDOMAIN into NOERROR.

open as a page

How does RFC 5011 let a DNSSEC-validating resolver accept a new root key-signing key in-band, and why does it impose a 30-day add hold-down?

level: seniorimportance: nice to knowfreq 9%

basics

~20 s

Under RFC 5011, a new SEP key in a DNSKEY RRset validated by a current anchor becomes a trust anchor only after an add hold-down of at least 30 days, giving the owner time to revoke a stolen key first.

open as a page

A DNSSEC registry zone with millions of mostly unsigned delegations uses NSEC3 opt-out; what does an opt-out record stop proving, and when is that acceptable?

level: seniorimportance: nice to knowfreq 9%

basics

~20 s

An opt-out NSEC3 record's span may hold unsigned delegations without asserting whether they exist, so they change without re-signing. Inside such spans unsigned delegations can be inserted or deleted undetected; signed names stay protected. Use it only in huge, sparsely signed zones.

open as a page

Why must a DNSSEC denial of a name also rule out a wildcard, and why can NSEC3 need three records where NSEC needs two?

level: seniorimportance: nice to knowfreq 8%

basics

~20 s

A missing name might still match a wildcard, so a denial must rule one out. NSEC's cleartext names show which ancestor exists; NSEC3's hashes hide it, so NSEC3 must match the closest encloser and cover the next closer name and the wildcard.

open as a page

How do CDS and CDNSKEY records let a DNSSEC child zone update or delete its DS records at the parent without a manual submission?

level: seniorimportance: nice to knowfreq 7%

basics

~20 s

The child publishes CDS or CDNSKEY records at its apex stating the DS set it wants; the parent fetches them, validates them through the current DS, checks they keep the delegation working, and updates the DS. A single algorithm-0 record requests deletion.

open as a page

showing 1–30 of 33