SecurityIntermediateAbout 14 min including practice

DNSSEC and the chain of trust

Learn what DNSSEC validates, how trust moves from parent to child zones, and why signing is not encryption.

Updated

DNSSEC and the chain of trust: topic overview

Allow about 4 minutes to read and 10 minutes for the exercises. Reading is estimated at 200 words per minute; optional videos and lab setup add time. All worked output is synthetic.

What you’ll learn

  • Explain authenticity and integrity in DNSSEC
  • Describe the DS, DNSKEY, and RRSIG relationship
  • Distinguish secure, insecure, and bogus validation outcomes

What DNSSEC does—and does not do

DNSSEC lets a validating resolver verify that DNS data is authentic and has not been altered since it was signed. It does not encrypt DNS queries or hide which names a client requests. Confidentiality requires a separate transport such as DNS over TLS or DNS over HTTPS.

A signed zone publishes DNSKEY records and signatures called RRSIG records. A validator uses the public key to verify the signature over a record set.

How the chain of trust works

Trust begins with a configured trust anchor, normally for the DNS root. A parent zone publishes a DS record that identifies a key in its signed child zone. The validator checks the parent, follows the DS reference to the child’s DNSKEY, and then validates the child’s signed records.

  • DNSKEY publishes the zone’s public signing keys
  • RRSIG contains a signature over a DNS record set
  • DS in the parent points to a trusted key in the child
  • NSEC or NSEC3 provides authenticated denial of existence

Understand validation results

Secure means the answer validated through a chain of trust. Insecure means the resolver has established that there is no authentication chain from its trust anchors to the data; the data may still be signed. It does not establish the zone operator’s intent. Bogus means a chain is expected but validation fails. Indeterminate means the resolver lacks enough information to decide whether the data should be signed.

Bogus responses commonly surface to clients as SERVFAIL. Check time synchronization, expired signatures, incorrect DS records, key rollovers, and delegation before disabling validation.

Operations matter more than the first signature

DNSSEC success depends on repeatable key rollover, signature refresh, monitoring, and coordination with the parent zone. Automation should make state visible and reversible. A stale DS record can make an otherwise healthy zone unreachable to validating resolvers.

DNSSEC protects the authenticity of DNS data. It does not make DNS private.

Worked example: signatures without an authentication chain

These are synthetic lab observations, not live claims about example domains. Use a resolver you trust over a trusted channel. Querying with +dnssec requests DNSSEC records; dig does not become a full validating resolver merely because that option is present.

A signed child with no authenticated parent DS — shortened output
$ dig @192.0.2.53 signed.example. A +dnssec
;; status: NOERROR; flags: qr rd ra
signed.example. 300 IN A 192.0.2.80
signed.example. 300 IN RRSIG A ...
$ dig @192.0.2.53 signed.example. DS +dnssec
;; status: NOERROR; ANSWER: 0
;; authority: signed NSEC/NSEC3 proof of no DS (abbreviated)
  • An RRSIG is present, but presence is not validation. The omitted signature bytes make this an explanatory transcript, not a replayable proof.
  • If the validator authenticates the absence of DS and has no separate child trust anchor, the child can be classified Insecure even though it is signed.
  • A missing AD flag by itself does not establish Insecure: inspect validator diagnostics and trust-anchor configuration.

Worked example: investigate a bogus chain

In a second lab, the parent DS refers to an old key that the child no longer publishes. A validating lookup returns SERVFAIL. A diagnostic query with checking disabled returns data, narrowing the investigation toward validation without proving the precise cause.

Compare validation behavior — synthetic result
$ dig @192.0.2.53 broken.example. A +dnssec
;; status: SERVFAIL
$ dig @192.0.2.53 broken.example. A +dnssec +cdflag
;; status: NOERROR; flags: qr rd ra cd
broken.example. 300 IN A 192.0.2.81
  • +cdflag requests checking disabled for this diagnostic query. Its returned data is not evidence of authenticity.
  • Compare parent DS with child DNSKEY and its digest; inspect RRSIG inception/expiry and resolver clock.
  • SERVFAIL also has non-DNSSEC causes. Use logs and direct authoritative reachability checks before assigning root cause.

Practice: classify evidence and plan recovery

Spend ten minutes classifying three cases: an authenticated chain and valid signature; authenticated no-DS proof with no other trust anchor; and a published DS whose matching child key is missing. Then list what evidence you still need if necessary DNSSEC records cannot be fetched.

  • Expected states: Secure, Insecure and Bogus respectively. Insufficient evidence may be Indeterminate; it is not proof of an intentionally unsigned zone.
  • For the bogus case, coordinate parent and child changes using the key-rollover plan and cache lifetimes. Never remove a DS casually as a repair shortcut.
  • Retest through validating resolvers after correction and confirm the expected authentication status; remove any temporary diagnostic exceptions.
DNSSEC proves origin and integrity within a trust policy. Authority, record presence, encryption, and successful validation are four different facts.
Knowledge check

Make the lesson stick

Answer these quick questions. A perfect result marks the lesson complete.

1What protection does DNSSEC provide?
2Which record in a parent zone points to a trusted key in a signed child zone?
Go to the source

References and further reading

KnowDDI lessons are explanatory guides. Standards and primary documentation remain the authority for implementation decisions.