skip to content

Signature and Key Records

DNSKEY, RRSIG, DS and the CDS/CDNSKEY pair: what each record carries and which one the parent zone publishes. Interviewers ask to see whether you can read a signed zone, not just name it.

on this pageshow

questions

6

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

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

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

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

What do DNSSEC CDS and CDNSKEY records contain, where must a child zone publish them, and what does their delete form look like?

level: seniorimportance: nice to knowfreq 8%

basics

~20 s

CDS (type 59) copies the DS format and CDNSKEY (type 60) the DNSKEY format; a child publishes them at its apex to state the DS RRset it wants. 'CDS 0 0 0 0' or 'CDNSKEY 0 3 0 0' asks for all DS removed.

open as a page