Paper 2014/582

NSEC5: Provably Preventing DNSSEC Zone Enumeration

Sharon Goldberg, Moni Naor, Dimitrios Papadopoulos, Leonid Reyzin, Sachin Vasant, and Asaf Ziv


We use cryptographic techniques to study zone enumeration in DNSSEC. DNSSEC is designed to prevent attackers from tampering with domain name system (DNS) messages. The cryptographic machinery used in DNSSEC, however, also creates a new vulnerability, zone enumeration, enabling an adversary to use a small number of online DNSSEC queries combined with offline dictionary attacks to learn which domain names are present or absent in a DNS zone. We prove that the current DNSSEC standard, with NSEC and NSEC3 records, inherently suffers from zone enumeration: specifically, we show that security against (1) attackers that tamper with DNS messages and (2) privacy against zone enumeration cannot be satisfied simultaneously, unless the DNSSEC nameserver performs online public-key cryptographic operations. We then propose a new construction that uses online public-key cryptography to solve the problem of DNSSEC zone enumeration. NSEC5 can be thought of as a variant of NSEC3, in which the unkeyed hash function is replaced with a deterministic RSA-based keyed hashing scheme. With NSEC5, a zone remains protected against network attackers and compromised nameservers even if the secret NSEC5-hashing key is compromised; leaking the NSEC5-hashing key only harms privacy against zone enumeration, effectively downgrading the security of NSEC5 back to that of the current DNSSEC standard (with NSEC3).

Available format(s)
Cryptographic protocols
Publication info
Preprint. MINOR revision.
Contact author(s)
dipapado @ bu edu
2014-12-06: last of 8 revisions
2014-07-30: received
See all versions
Short URL
Creative Commons Attribution


      author = {Sharon Goldberg and Moni Naor and Dimitrios Papadopoulos and Leonid Reyzin and Sachin Vasant and Asaf Ziv},
      title = {NSEC5: Provably Preventing DNSSEC Zone Enumeration},
      howpublished = {Cryptology ePrint Archive, Paper 2014/582},
      year = {2014},
      note = {\url{}},
      url = {}
Note: In order to protect the privacy of readers, does not use cookies or embedded third party content.