Abstract: DNSSEC is designed to prevent network 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. In , we prove that the design underlying current DNSSEC standard, with NSEC and NSEC3 records, inherently suffers from zone enumeration: specifically, we show that security against network attackers and privacy against zone enumeration cannot be satisfied simultaneously unless the DNSSEC server performs online public-key cryptographic operations.
We then propose NSEC5, a new cryptographic construction that solves the problem of DNSSEC zone enumeration while remaining faithful to the operational realities of DNSSEC. NSEC5 can be thought of as a variant of NSEC3 in which the unkeyed hash function is replaced with an keyed hashing scheme. In  we present the original RSA-based version of NSEC5, and in  we present more performant version of NSEC5 based on elliptic curve cryptography (ECC). We show in  that our ECC-based NSEC5 can be viable even for high-throughput scenarios. Throughput at our authoritative nameserver implementation easily scales to a few tens of thousands of queries per second (64K query/second) on a moderately-sized multi-core server (i.e., 24 threads on 40 virtual cores). In fact, our ECC-based NSEC5 nameserver implementation achieves a throughput that is about 2x higher than the only widely-deployed nameserver implementation that prevents zone enumeration and is compliant with the DNSSEC standards (i.e., PowerDNS's implementation of online signing via NSEC3 White Lies). Our ECC-based NSEC5 responses easily fit into a single IP packet, and have lengths that are comparable to ECC versions of the current DNSSEC protocol (i.e., NSEC3 with ECDSA signatures).
NSEC5 that has been specified in the Internet draft , implemented, and its performance has been evaluated . The crypto behind NSEC5 is prototyped here. Shortly, we plan to release our full implementation of an authoritative nameserver and recursive resolver that support both RSA- and ECC-based NSEC5. (For the nameserver implementation, we extend the Knot DNS 1.6. For the recursive resolver, we extend Unbound 1.5.9.)
An updated view of the NSEC5 project, January 2017 (YouTube)
The original video introducing NSEC5 (YouTube)
FAQ: Frequently Asked Questions
NSEC5 at NDSS'17 DNS Privacy Workshop (.pdf) (Sharon Goldberg, 2/2017)
NSEC5 at DNS-OARC Fall'14 Workshop (.ppsx) (Sharon Goldberg, 10/2014)
NSEC5 at NDSS'15 (.pdf) (Asaf Ziv, 02/2015)
NSEC5 at IETF'92 (.pdf) (Jan Včelák, 03/2015)
Primary-Secondary-Resolver Systems at CANS'14 (.pptx) (Moni Naor, 10/2014)
Primary-Secondary-Resolver Systems at TCC'15 (.pptx) (Asaf Ziv, 3/2015)
Team: (in alphabetical order)
This material is based upon work supported by the US National Science Foundation under Grants 017907, 1347525, 1012798, and 1012910, a gift from Verisign Labs, the Israel Science Foundation , BSF and IMOS, and from the I-CORE Program of the Planning and Budgeting Committee and the Israel Science Foundation. Any opinions, findings and conclusions or recommendations expressed in this material are those of the authors and do not necessarily reflect the views of the sponsors.
Last updated February 24, 2017.