DNS Security Introduction and Requirements
obsoletes
- rfc-2535 — Domain Name System Security Extensions
- rfc-3008 — Domain Name System Security (DNSSEC) Signing Authority
- rfc-3090 — DNS Security Extension Clarification on Zone Status
- rfc-3445 — Limiting the Scope of the KEY Resource Record (RR)
- rfc-3655 — Redefinition of DNS Authenticated Data (AD) bit
- rfc-3658 — Delegation Signer (DS) Resource Record (RR)
- rfc-3755 — Legacy Resolver Compatibility for Delegation Signer (DS)
- rfc-3757 — Domain Name System KEY (DNSKEY) Resource Record (RR) Secure Entry Point (SEP) Flag
- rfc-3845 — DNS Security (DNSSEC) NextSECure (NSEC) RDATA Format
updated by
- rfc-6014 — Cryptographic Algorithm Identifier Allocation for DNSSEC
- rfc-6840 — Clarifications and Implementation Notes for DNS Security (DNSSEC)
updates
- rfc-1034 — Domain names - concepts and facilities
- rfc-1035 — Domain names - implementation and specification
- rfc-2136 — Dynamic Updates in the Domain Name System (DNS UPDATE)
- rfc-2181 — Clarifications to the DNS Specification
- rfc-2308 — Negative Caching of DNS Queries (DNS NCACHE)
- rfc-3225 — Indicating Resolver Support of DNSSEC
- rfc-3226 — DNSSEC and IPv6 A6 aware server/resolver message size requirements
- rfc-3597 — Handling of Unknown DNS Resource Record (RR) Types
Extracted elements (28)
Authentication of DNS keys and data is ultimately a matter of local policy, which may extend or override the DNSSEC protocol extensions. A validating resolver must always be guided by local policy when deciding whether to authenticate a new public key.
DNSSEC deliberately does not provide confidentiality, as DNS was designed on the assumption that responses are identical regardless of the querier and all data is visible. Access control lists and differentiation between inquirers are explicitly out of scope.
DNSSEC provides object security (data origin authentication for DNS RRsets) rather than channel security (transaction authentication). This means DNSSEC keys are associated with the zone itself, not with its authoritative name servers. Transaction authentication (TSIG, SIG(0)) is a separate mechanism.
The DS RR at a delegation point contains a hash of the child zone's DNSKEY, simplifying cross-organizational signing by allowing the parent zone administrator to vouch for the child zone's key without needing to sign the child's data directly.
The KSK/ZSK operational split allows the KSK to remain offline even for zones with dynamic update enabled (where the ZSK must be kept online for re-signing). This limits the exposure of the more stable, longer-lived key signing key.
Any security-oblivious DNS software between a security-aware resolver and the authoritative name servers—including NAT proxies with built-in DNS proxies—will interfere with DNSSEC, potentially preventing the resolver from obtaining or validating signed data or DS RRs.
DNSSEC alone does not protect zone transfer operations, since signed zones still contain unsigned non-authoritative data (glue and NS RRs). Zone transfers must be secured by additional channel-security mechanisms such as TSIG, SIG(0), or IPsec.
The current DNSSEC signaling mechanism does not distinguish between the Indeterminate and Insecure states, and no format is defined for communicating why a response was found to be bogus; these are identified as topics for future work.
TTL values and RRSIG validity periods are distinct: TTL controls cache coherency and cannot extend signature validity, but a resolver may use the RRSIG expiration time as an upper bound on the TTL it assigns to a cached signed RRset.
A security-aware name server should include appropriate DNSSEC records (RRSIG, DNSKEY, DS, NSEC) in all responses to resolvers that have signaled willingness via the DO bit in the EDNS header, subject to message size limitations.
A security-aware resolver should be configured with at least one trust anchor as the starting point from which it attempts to establish authentication chains.
A security-aware resolver should take a signature's validation period into consideration when determining the TTL of data in its cache, using the time remaining before RRSIG expiration as an upper bound for the cached RRset TTL.
Because DNSSEC RRs can cause UDP message truncation and fallback to TCP, a security-aware name server must support the EDNS 'sender's UDP payload' mechanism.
DNSSEC requires EDNS0 support (RFC 2671) to accommodate larger DNS message sizes resulting from the addition of DNSSEC resource records.
Non-validating security-aware stub resolvers should use some form of channel security (e.g., TSIG, SIG(0), or IPsec) to defend against attacks on their communication with upstream recursive name servers.
Security-aware resolvers must be capable of forming an authentication chain from a newly learned zone back to an authentication key, which may require additional queries for DNSKEY, DS, and RRSIG records.
A Trust Anchor is a configured DNSKEY RR or DS RR hash of a DNSKEY RR that a validating resolver uses as the starting point for building an authentication chain. Trust anchors must be obtained via secure means outside the DNS protocol.
An Authentication Chain is an alternating sequence of DNSKEY RRsets and DS RRsets, each link vouching for the next. The typical form is DNSKEY->[DS->DNSKEY]*->RRset, anchored at a configured trust anchor and terminating at the signed zone data.
An Island of Security is a signed, delegated zone that lacks an authentication chain from its delegating parent (no DS RR in the parent zone). Responses from an island can only be authenticated via out-of-band means.
DNSSEC adds four new resource record types—RRSIG (Resource Record Signature), DNSKEY (DNS Public Key), DS (Delegation Signer), and NSEC (Next Secure)—plus two new message header bits: CD (Checking Disabled) and AD (Authenticated Data).
NSEC records provide authenticated denial of existence by linking existing names in canonical order and listing the RR types present at each name, thereby explicitly describing gaps between names in a zone.
The Key Signing Key (KSK) signs one or more other authentication keys for a zone (typically the ZSK), while the Zone Signing Key (ZSK) signs zone data. This distinction is purely operational; DNSSEC validation does not differentiate between them, and a single key may serve both roles.
DNSSEC does not protect against denial of service attacks and introduces new cryptographic DoS vectors: attackers can tamper with RRSIG RRs or construct complex signature chains to exhaust resolver resources, or flood a dynamic-update name server with updates to force excessive re-signing.
DNSSEC introduces significant additional complexity and many new opportunities for implementation bugs and misconfiguration. Enabling DNSSEC signature validation in a resolver may cause entire legitimate zones to become unreachable due to configuration errors.
For a security-aware resolver to validate a response, all zones along the path from the trust anchor to the response zone must be signed and all name servers and resolvers in the path must be security-aware. A break anywhere in the authentication chain prevents validation.
Non-authoritative data at zone cuts (glue records and NS RRs in the parent zone) are not signed by DNSSEC, leaving them vulnerable to tampering during zone transfer operations even for otherwise fully signed zones.
NSEC chains enable zone enumeration ('zone walking'): an attacker can query NSEC RRs in sequence to obtain all names in a signed zone, potentially mapping network hosts or resources. This is a direct consequence of the authenticated denial of existence mechanism.
A validating resolver assigns one of four states to a DNS response: Secure (trust anchor, chain of trust, all signatures verified), Insecure (chain of trust with proven absence of DS at some delegation), Bogus (secure delegation exists but response fails validation), or Indeterminate (no applicable trust anchor).