DNSCurve is a proposed secure protocol for the
Domain Name System
The Domain Name System (DNS) is a hierarchical and distributed name service that provides a naming system for computers, services, and other resources on the Internet or other Internet Protocol (IP) networks. It associates various information ...
(DNS), designed by
Daniel J. Bernstein. It encrypts and authenticates DNS
packets between
resolvers and authoritative servers.
DNSCurve claims advantages over previous DNS services of:
* Confidentiality—conventional DNS requests and responses are not encrypted, so are readable to everyone along the path of transmission.
* Integrity—conventional DNS has some protection, but with patience and sniffing attackers can forge DNS records; this is prevented by DNSCurve cryptographic authentication.
*Availability—conventional DNS has no protection against
denial of service
In computing, a denial-of-service attack (DoS attack) is a cyberattack in which the perpetrator seeks to make a machine or network resource unavailable to its intended users by temporarily or indefinitely disrupting services of a host co ...
(DoS) by a sniffing attacker sending a few forged packets per second. DNSCurve recognizes and discards forged DNS packets, providing some protection, though
SMTP
The Simple Mail Transfer Protocol (SMTP) is an Internet standard communication protocol for electronic mail transmission. Mail servers and other message transfer agents use SMTP to send and receive mail messages. User-level email clients typi ...
,
HTTP
HTTP (Hypertext Transfer Protocol) is an application layer protocol in the Internet protocol suite model for distributed, collaborative, hypermedia information systems. HTTP is the foundation of data communication for the World Wide Web, wher ...
,
HTTPS
Hypertext Transfer Protocol Secure (HTTPS) is an extension of the Hypertext Transfer Protocol (HTTP). It uses encryption for secure communication over a computer network, and is widely used on the Internet. In HTTPS, the communication protoc ...
, are also vulnerable to
DoS.
Structure
DNSCurve uses
Curve25519 elliptic curve cryptography
Elliptic-curve cryptography (ECC) is an approach to public-key cryptography based on the algebraic structure of elliptic curves over finite fields. ECC allows smaller keys to provide equivalent security, compared to cryptosystems based on modula ...
to establish the identity of authoritative servers.
Public keys for remote authoritative servers are encoded in NS records as the host name component of the server's fully qualified domain name, so recursive resolvers know whether the server supports DNSCurve. Keys begin with the magic string
uz5
and are followed by a 51-byte
Base32
Base32 is an encoding method based on the Radix, base-32 numeral system. It uses an alphabet of 32 Numerical digit, digits, each of which represents a different combination of 5 bits (25). Since base32 is not very widely adopted, the question of no ...
encoding of the server's 255-bit public key. E.g., in
BIND
BIND () is a suite of software for interacting with the Domain Name System (DNS). Its most prominent component, named (pronounced ''name-dee'': , short for ''name Daemon (computing), daemon''), performs both of the main DNS server roles, acting ...
format:
The identity is used to establish keys used by an
authenticated encryption scheme consisting of
Salsa20 and
Poly1305
Poly1305 is a universal hash family designed by Daniel J. Bernstein in 2002 for use in cryptography.
As with any universal hash family, Poly1305 can be used as a one-time message authentication code to authenticate a single message using a sec ...
.The cryptographic setup is called a ''cryptographic box'', specifically .
The ''cryptographic box'' tool used in DNSCurve are the same used in CurveCP, a
UDP-based protocol which is similar to
TCP but uses elliptic-curve cryptography to encrypt and authenticate data. An analogy is that while
DNSSEC is like signing a webpage with
Pretty Good Privacy
Pretty Good Privacy (PGP) is an encryption software, encryption program that provides cryptographic privacy and authentication for data communication. PGP is used for digital signature, signing, encrypting, and decrypting texts, Email, e-mail ...
(PGP), CurveCP and DNSCurve are like encrypting and authenticating the channel using
Transport Layer Security
Transport Layer Security (TLS) is a cryptographic protocol designed to provide communications security over a computer network, such as the Internet. The protocol is widely used in applications such as email, instant messaging, and voice over ...
(TLS). Just as PGP-signed webpages can be sent over an encrypted channel using SSL, DNSSEC data can be protected using DNSCurve.
Operation
The resolver first retrieves the public key from the NS record, see above.
The resolver then sends to the server a packet containing its DNSCurve public key, a 96-bit
nonce, and a cryptographic box containing the query. The cryptographic box is created using the resolver's private key, the server's public key, and the nonce. The response from the server contains a different 96-bit nonce and its own cryptographic box containing the answer to the query.
Security
DNSCurve uses 256-bit elliptic-curve cryptography, which
NIST
The National Institute of Standards and Technology (NIST) is an agency of the United States Department of Commerce whose mission is to promote American innovation and industrial competitiveness. NIST's activities are organized into physical s ...
estimates to be roughly equivalent to 3072-bit RSA.
ECRYPT reports a similar equivalence. It uses per-query public-key crypto (like SSH and SSL), and 96-bit nonces to protect against replay attacks. Adam Langley, security officer at Google, says "With very high probability, no one will ever solve a single instance of Curve25519 without a large, quantum computer."
Speed
Adam Langley has posted speed tests on his personal website showing Curve25519, used by DNSCurve, to be the fastest among elliptic curves tested. According to the U.S.
National Security Agency
The National Security Agency (NSA) is an intelligence agency of the United States Department of Defense, under the authority of the director of national intelligence (DNI). The NSA is responsible for global monitoring, collection, and proces ...
(NSA), elliptic curve cryptography offers vastly superior performance over RSA and Diffie–Hellman at a geometric rate as key sizes increase.
Implementations
DNSCurve first gained recursive support in dnscache via a patch by Matthew Dempsky. Dempsky also has a
GitHub
GitHub () is a Proprietary software, proprietary developer platform that allows developers to create, store, manage, and share their code. It uses Git to provide distributed version control and GitHub itself provides access control, bug trackin ...
repository which includes Python DNS lookup tools and a forwarder in C. Adam Langley has a GitHub repository as well. There is an authoritative forwarder called CurveDNS which allows DNS administrators to protect existing installations without patching.
Jan Mojžíš has released curveprotect, a software suite which implements DNSCurve and CurveCP protection for common services like DNS, SSH, HTTP, and SMTP.
DNSCurve.io (2023) recommends two implementations: Jan Mojžíš's dqcache for recursive resolvers, CurveDNS for authoritative servers.
Deployment
OpenDNS
OpenDNS is an American company providing Domain Name System (DNS) resolution services—with features such as phishing protection, optional content filtering, and DNS lookup in its DNS servers—and a cloud computing security product suite, Umbre ...
, which has 50 million users, announced support for DNSCurve on its recursive resolvers on February 23, 2010. In other words, its recursive resolvers now use DNSCurve to communicate to authoritative servers if available. On December 6, 2011, OpenDNS announced a new tool, called
DNSCrypt. DNSCrypt is based on similar cryptographic tools as DNSCurve, but instead protects the channel between OpenDNS and its users.
No equally large authoritative DNS providers have yet deployed DNSCurve.
See also
DNSCurve is intended to secure communication between a resolver and an authoritative server.
For securing communication between DNS clients and resolvers, there are several options:
*
DNS over TLS, defined by two standards-track RFCs, RFC 7858 and RFC 8310
*
DNS over HTTPS, standardized in RFC 8484
*
DNSCrypt
Notes
External links
Official websiteDNSCurve.io: a community for DNSCurve usersHigh-speed cryptography and DNSCurve a June 2009 presentation by the author
DNSCurve: Usable security for DNS an August 2008 presentation by the author
draft-dempsky-dnscurve-01Proposed standard "DNSCurve: Link-Level Security for the Domain Name System", sent by M. Dempsky (from
OpenDNS
OpenDNS is an American company providing Domain Name System (DNS) resolution services—with features such as phishing protection, optional content filtering, and DNS lookup in its DNS servers—and a cloud computing security product suite, Umbre ...
) to
IETF
The Internet Engineering Task Force (IETF) is a standards organization for the Internet standard, Internet and is responsible for the technical standards that make up the Internet protocol suite (TCP/IP). It has no formal membership roster ...
(updated in February 2010)
OpenDNS adopts DNSCurve, official OpenDNS blog entry
CurveDNS DNSCurve forwarding name server
NaCl Networking and Cryptography library
{{DEFAULTSORT:Dnscurve
Domain Name System
Elliptic curve cryptography