The problem DNSSEC solves

Plain DNS is unauthenticated. An attacker who can intercept or inject UDP traffic — a malicious resolver, a hostile network, a cache-poisoning attack — can hand a client whatever address they like and the client has no way to detect it. DNSSEC closes that gap by signing records cryptographically; the resolver verifies signatures against a chain of trust anchored at the root zone.

The four core record types

RecordRole
DNSKEYThe zone's public key(s). Used to verify signatures inside the zone.
RRSIGCryptographic signature over an RRset, made with the zone's private key.
DSDelegation Signer — a hash of the child zone's DNSKEY, placed in the parent zone. This is the link in the chain of trust.
NSEC / NSEC3Proves authenticated denial of existence — "this name doesn't exist, and I can prove it."

The chain of trust

A validating resolver builds trust like this:

  1. Start at the root, whose key (the "trust anchor") is pre-configured.
  2. Resolve a TLD's DS record in the root and verify the root's signature over it.
  3. Resolve the TLD's DNSKEY and verify it hashes to the DS.
  4. Repeat down the tree: each parent zone signs a DS over the child's DNSKEY.
  5. Finally, the leaf zone's records carry RRSIGs that can be verified against its DNSKEY.

What DNSSEC does not do