Skip to main content
DNS Checker(beta)
What DNSSEC is and how to enable it
10 min read

What Is DNSSEC and Why Should You Enable It?

Ishan Karunaratne

Ishan Karunaratne

Software Architect & Infrastructure Engineer

The Domain Name System is one of the most critical pieces of internet infrastructure. Every time you visit a website, send an email, or use an API, DNS translates human-readable domain names into the IP addresses that computers use to communicate. But DNS was designed in the 1980s without any built-in security mechanism to verify that the answers it provides are genuine.

This means that without additional protection, an attacker can intercept DNS queries and return forged responses, redirecting users to malicious servers without their knowledge. The attack is invisible to the end user because their browser still shows the correct domain name in the address bar.

DNSSEC (DNS Security Extensions) was created to solve this problem. It adds a layer of cryptographic verification to DNS, allowing resolvers to confirm that the DNS data they receive is authentic and has not been tampered with. Despite being standardized for over a decade, DNSSEC adoption remains surprisingly low. This article explains what DNSSEC is, how it works, why you should care, and how to enable it for your domain.

The Problem DNSSEC Solves: DNS Cache Poisoning and Spoofing

To understand why DNSSEC matters, you need to understand the attacks it prevents.

DNS Cache Poisoning

DNS resolvers cache query results to improve performance. When you visit example.com, your ISP's resolver stores the IP address so that subsequent requests do not require a full lookup. Cache poisoning occurs when an attacker injects a fraudulent DNS record into a resolver's cache.

Here is how a cache poisoning attack works in simplified terms:

  1. The attacker sends a flood of forged DNS responses to a recursive resolver, each claiming to be the answer for bank.com.
  2. If a forged response arrives before the legitimate one and matches the expected query ID, the resolver accepts it as valid.
  3. The resolver now caches the attacker's IP address for bank.com.
  4. Every user who queries that resolver for bank.com is sent to the attacker's server.
  5. The attacker's server hosts a convincing replica of the bank's website, harvesting login credentials.

The most famous demonstration of this vulnerability was the Kaminsky attack in 2008, which showed that cache poisoning could be executed far more easily than previously thought. This discovery accelerated the push for DNSSEC deployment.

DNS Spoofing

DNS spoofing is a broader category that includes any attack where DNS responses are forged. This can happen through cache poisoning, man-in-the-middle attacks on network traffic, or compromising a DNS server directly. The result is the same: users are directed to the wrong IP address while believing they are visiting the correct domain.

Without DNSSEC, a recursive resolver has no way to verify that a DNS response genuinely came from the authoritative server for that domain. It accepts whatever answer arrives first, as long as it matches the query parameters.

How DNSSEC Works: The Chain of Trust

DNSSEC does not encrypt DNS traffic (that is a common misconception). Instead, it uses public-key cryptography to sign DNS records, allowing resolvers to verify that responses are authentic and unmodified.

The Core DNSSEC Record Types

DNSSEC introduces several new DNS record types that work together:

RRSIG (Resource Record Signature)

Every DNS record set (e.g., all A records for a domain) is signed with a digital signature. This signature is stored in an RRSIG record. When a resolver receives DNS data, it also receives the corresponding RRSIG, which it can verify using the zone's public key.

example.com.  300  IN  A      93.184.216.34
example.com.  300  IN  RRSIG  A 13 2 300 20250401000000 20250301000000 12345 example.com. <base64-signature-data>

DNSKEY (DNS Public Key)

Each DNSSEC-signed zone publishes its public keys in DNSKEY records. There are typically two keys:

  • Zone Signing Key (ZSK) -- Used to sign the actual DNS records within the zone. This key is rotated more frequently.
  • Key Signing Key (KSK) -- Used to sign the DNSKEY record set itself. This key is rotated less frequently and is the anchor of trust for the zone.
example.com.  3600  IN  DNSKEY  256 3 13 <base64-zsk-public-key>
example.com.  3600  IN  DNSKEY  257 3 13 <base64-ksk-public-key>

The flag value 256 indicates a ZSK; 257 indicates a KSK.

DS (Delegation Signer)

The DS record is the link between a child zone and its parent zone. It contains a hash of the child's KSK and is published in the parent zone. This is what creates the chain of trust: the parent zone vouches for the child zone's key.

example.com.  3600  IN  DS  12345 13 2 <sha256-hash-of-ksk>

NSEC / NSEC3 (Authenticated Denial of Existence)

These records prove that a specific domain name or record type does not exist. Without them, an attacker could forge "this domain doesn't exist" responses. NSEC3 uses hashed names to prevent zone enumeration (walking through all names in a zone).

The Chain of Trust in Action

When a DNSSEC-validating resolver queries www.example.com, the verification process follows the DNS hierarchy:

  1. Root zone (.) -- The resolver already has the root zone's public key built in (the root trust anchor). It verifies the DS record for .com using the root's DNSKEY.

  2. TLD zone (.com) -- The resolver retrieves .com's DNSKEY records and verifies them against the DS record from the root. It then uses .com's key to verify the DS record for example.com.

  3. Authoritative zone (example.com) -- The resolver retrieves example.com's DNSKEY records and verifies them against the DS record from .com. It then uses example.com's ZSK to verify the RRSIG on the A record for www.example.com.

  4. Validation complete -- If every signature in the chain verifies correctly, the resolver marks the response as authenticated (AD flag set). If any link in the chain fails, the resolver returns a SERVFAIL error rather than delivering potentially poisoned data.

This hierarchical verification is what makes DNSSEC robust. An attacker would need to compromise the cryptographic keys at some level of the chain to forge a response, which is computationally infeasible with modern key sizes.

Why DNSSEC Adoption Is Still Low

Despite the clear security benefits, DNSSEC adoption has been gradual. As of recent measurements, roughly 30-40% of the world's DNS zones that could be signed are actually signed, and a smaller percentage of resolvers perform full validation.

Several factors contribute to slow adoption:

  • Complexity. Setting up DNSSEC requires generating keys, signing zones, publishing DS records with your registrar, and managing key rollovers. Mistakes can take your domain offline.
  • Key management burden. DNSSEC keys must be rotated periodically. A failed key rollover can cause widespread resolution failures for your domain.
  • Larger DNS responses. DNSSEC signatures increase the size of DNS responses, which can cause issues with networks that block large UDP packets. This sometimes requires falling back to TCP, adding latency.
  • Registrar support varies. Not all domain registrars make it easy to upload DS records or manage DNSSEC settings. Some charge extra for DNSSEC support.
  • Perceived low risk. Many domain owners do not consider cache poisoning a likely threat to their specific domain, so they do not prioritize the mitigation.

However, the landscape is shifting. Major DNS providers like Cloudflare, Google Cloud DNS, and AWS Route 53 now offer automated DNSSEC signing with one-click setup, dramatically reducing the operational burden.

How to Enable DNSSEC for Your Domain

The process for enabling DNSSEC depends on your DNS hosting provider and domain registrar. Here is the general workflow:

Step 1: Enable DNSSEC Signing at Your DNS Provider

Your authoritative DNS provider must sign your zone. With managed providers, this is typically a single toggle:

  • Cloudflare: Navigate to DNS > Settings > DNSSEC and click "Enable DNSSEC." Cloudflare handles key generation and zone signing automatically.
  • AWS Route 53: Enable DNSSEC signing in the hosted zone settings. Route 53 creates a KSK using AWS KMS.
  • Google Cloud DNS: Enable DNSSEC on the managed zone. Google handles signing and key management.

If you run your own authoritative DNS servers (e.g., BIND or PowerDNS), you will need to generate keys and configure zone signing manually:

# Generate a KSK and ZSK for BIND
dnssec-keygen -a ECDSAP256SHA256 -f KSK example.com
dnssec-keygen -a ECDSAP256SHA256 example.com

# Sign the zone
dnssec-signzone -A -3 $(head -c 1000 /dev/random | sha1sum | cut -b 1-16) -N INCREMENT -o example.com -t example.com.zone

Step 2: Publish the DS Record at Your Registrar

After your DNS provider signs the zone, you need to create a DS record in the parent zone. This is done through your domain registrar's control panel.

Your DNS provider will give you the DS record details, which typically include:

  • Key Tag: A numeric identifier for the DNSKEY (e.g., 12345)
  • Algorithm: The signing algorithm number (e.g., 13 for ECDSA P-256)
  • Digest Type: The hash algorithm (e.g., 2 for SHA-256)
  • Digest: The hash value of the KSK

Enter these values in your registrar's DNSSEC management section. The registrar then publishes the DS record in the parent zone (e.g., .com for a .com domain).

Step 3: Verify the Chain of Trust

After both the zone signing and DS record are in place, verify that the full chain of trust is working. You can use command-line tools:

# Check if DNSSEC is active and the chain validates
dig +dnssec example.com A

# Verify the DS record exists in the parent zone
dig DS example.com @a.gtld-servers.net

# Use delv for full chain-of-trust validation
delv @8.8.8.8 example.com A +rtrace

Look for the ad (Authenticated Data) flag in the response header, which indicates the resolver successfully validated the DNSSEC signatures.

Verifying DNSSEC Configuration With DNS Checker

Checking whether a domain has DNSSEC properly configured is straightforward with the right tools.

Use the DNS Checker DNS Inspector to query a domain's DNSKEY and DS records. If DNSKEY records are present in the response, the zone is signed. If DS records are present in the parent zone, the chain of trust is established.

You can also use the DNS Checker Propagation Checker to verify that DNSSEC-related records are consistent across DNS servers worldwide. Inconsistencies between servers during a key rollover can indicate a problem that needs immediate attention.

Key records to check:

  • DNSKEY records at your domain to confirm zone signing is active.
  • DS records in the parent zone to confirm the chain of trust is anchored.
  • RRSIG records alongside your A, AAAA, MX, and other records to confirm they are being signed.

If you are in the process of enabling DNSSEC, monitoring propagation is especially important. The DS record must be visible in the parent zone before resolvers will attempt DNSSEC validation for your domain. If the DS record is published before your zone is fully signed, resolvers will see a broken chain and return SERVFAIL errors, taking your domain offline.

Frequently Asked Questions

Key Takeaways

  • DNSSEC adds cryptographic signatures to DNS records, allowing resolvers to verify that responses are authentic and unmodified. It does not encrypt DNS traffic.
  • Cache poisoning and DNS spoofing are real threats that can redirect users to malicious servers without their knowledge. DNSSEC prevents these attacks.
  • The chain of trust works hierarchically: the root zone vouches for TLD zones, TLD zones vouch for domain zones, through DS and DNSKEY records at each level.
  • Four key record types power DNSSEC: RRSIG (signatures), DNSKEY (public keys), DS (delegation signer), and NSEC/NSEC3 (authenticated denial of existence).
  • Adoption is growing but still incomplete. Major DNS providers now offer one-click DNSSEC setup, making it far easier to enable than it was even a few years ago.
  • Misconfigurations can cause outages because resolvers return SERVFAIL when validation fails. Plan key rollovers carefully and monitor your DNSSEC records.
  • Use the DNS Checker DNS Inspector to check whether a domain has DNSKEY and DS records, and the Propagation Checker to monitor DNSSEC record consistency across global DNS servers.

DNSSEC is one of the most impactful security improvements you can make for your domain, and with modern DNS providers, it is easier to deploy than ever. The threat of cache poisoning is not theoretical. It has been demonstrated repeatedly, and without DNSSEC, your domain's DNS responses have no cryptographic proof of authenticity.

Check your domain's DNSSEC status now using the DNS Checker DNS Inspector and verify that your records are properly signed and propagated worldwide with the Propagation Checker.

AI-assisted editing disclosure: Portions of this article were reviewed and refined using AI-based editing tools to improve clarity and grammar. The content, expertise, and viewpoints reflect the author’s real-world experience.

About the Author

Ishan Karunaratne
Ishan Karunaratne

Software Architect & Infrastructure Engineer

US Army veteran with a B.S. in Information Technology, CompTIA A+, Network+, and Security+ certified. 20+ years building and securing web infrastructure.

B.S. Information Technology — Online SystemsCompTIA A+ (2009)CompTIA Network+ (2009)CompTIA Security+ (2009)US Army Veteran — Operation Iraqi Freedom

Share this article

Related Articles

Complete Guide to DNS Attacks and DNS Security (Prevention, Testing & Mitigation)

A comprehensive guide to DNS attack types including cache poisoning, amplification, tunneling, zone walking, and hijacking. Learn how attackers exploit DNS, how to test your own domains, and how to harden your infrastructure.

What Is DNS Cache Poisoning? How It Works and How to Prevent It

DNS cache poisoning injects forged records into a resolver's cache, silently redirecting users to malicious servers. Learn how the Kaminsky attack works, how to test your resolver, and how DNSSEC prevents it.

What Is an Open DNS Resolver? Why It's Dangerous and How to Fix It

An open DNS resolver accepts recursive queries from anyone on the internet, making it a weapon for DDoS amplification attacks. Learn how to check if your server is an open resolver and how to lock it down.

DNS Root Servers Explained: The 13 Servers That Run the Internet

A complete guide to DNS root servers — what they are, who operates them, how anycast makes 13 logical servers into 1,700+ physical instances, and why they matter for every DNS query.