Jump to content

DNSCurve: Difference between revisions

From Wikipedia, the free encyclopedia
Content deleted Content added
Rescuing 3 sources and tagging 0 as dead. #IABot (v1.5)
Line 18: Line 18:
==Security==
==Security==


DNSCurve uses 256-bit elliptic-curve cryptography, which [[NIST]] estimates to be roughly equivalent to 3072-bit RSA.<ref>{{ cite web|url=http://www.keylength.com/en/4/|title=NIST Recommendations (2011)}}</ref> ECRYPT reports a similar equivalence.<ref>{{ cite web|url=http://www.ecrypt.eu.org/documents/D.SPA.17.pdf|title=ECRYPT II Yearly Report on Algorithms and Keysizes (2010-2011)}}</ref> 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."<ref>{{ cite web|url=http://www.quora.com/How-secure-is-djbs-Curve25519|title=Adam Langley on curve25519 security}}</ref>
DNSCurve uses 256-bit elliptic-curve cryptography, which [[NIST]] estimates to be roughly equivalent to 3072-bit RSA.<ref>{{ cite web|url=http://www.keylength.com/en/4/|title=NIST Recommendations (2011)}}</ref> ECRYPT reports a similar equivalence.<ref>{{ cite web|url=http://www.ecrypt.eu.org/documents/D.SPA.17.pdf|title=ECRYPT II Yearly Report on Algorithms and Keysizes (2010-2011)}}</ref> 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."<ref>{{ cite web|url=http://www.quora.com/How-secure-is-djbs-Curve25519|title=Adam Langley on curve25519 security}}</ref>


==Speed==
==Speed==
Line 36: Line 36:
DNSCurve first gained recursive support in dnscache via a patch<ref>{{cite web
DNSCurve first gained recursive support in dnscache via a patch<ref>{{cite web
| url=http://shinobi.dempsky.org/~matthew/patches/djbdns-dnscurve-20090602.patch
| url=http://shinobi.dempsky.org/~matthew/patches/djbdns-dnscurve-20090602.patch
| title=DNSCurve patch for dnscache
| title=DNSCurve patch for dnscache }}</ref> by Matthew Dempsky. Dempsky also has a [[GitHub]] repository which includes Python DNS lookup tools and a forwarder in C.<ref>{{ cite web
| deadurl=yes
| archiveurl=https://archive.is/20121228005750/http://shinobi.dempsky.org/~matthew/patches/djbdns-dnscurve-20090602.patch
| archivedate=2012-12-28
| df=
}}</ref> by Matthew Dempsky. Dempsky also has a [[GitHub]] repository which includes Python DNS lookup tools and a forwarder in C.<ref>{{ cite web
| url=https://github.com/mdempsky/dnscurve
| url=https://github.com/mdempsky/dnscurve
| title=Matthew Dempsky's DNSCurve repo on GitHub}}</ref> Adam Langley has a GitHub repository as well.<ref>{{ cite web
| title=Matthew Dempsky's DNSCurve repo on GitHub}}</ref> Adam Langley has a GitHub repository as well.<ref>{{ cite web
Line 55: Line 60:
Then on December 6, 2011, OpenDNS announced a new tool, called [[DNSCrypt]].<ref>{{ cite web
Then on December 6, 2011, OpenDNS announced a new tool, called [[DNSCrypt]].<ref>{{ cite web
| url=http://blog.opendns.com/2011/12/06/dnscrypt-–-critical-fundamental-and-about-time/
| url=http://blog.opendns.com/2011/12/06/dnscrypt-–-critical-fundamental-and-about-time/
| title=OpenDNS unveils DNSCrypt
| title=OpenDNS unveils DNSCrypt}}</ref> DNSCrypt protects the channel between OpenDNS and its users.<ref>{{cite web |url=http://ports.su/net/dnscrypt-proxy |title=net/dnscrypt-proxy: dnscrypt-proxy-1.4.3 – secure communications between a DNS client and resolver |work=[[OpenBSD ports]] |date=2015-01-06 |accessdate=2015-02-09}}</ref> No equally large authoritative DNS providers have yet deployed DNSCurve.
| deadurl=yes
| archiveurl=https://web.archive.org/web/20130203105200/http://blog.opendns.com/2011/12/06/dnscrypt-%E2%80%93-critical-fundamental-and-about-time/
| archivedate=2013-02-03
| df=
}}</ref> DNSCrypt protects the channel between OpenDNS and its users.<ref>{{cite web |url=http://ports.su/net/dnscrypt-proxy |title=net/dnscrypt-proxy: dnscrypt-proxy-1.4.3 – secure communications between a DNS client and resolver |work=[[OpenBSD ports]] |date=2015-01-06 |accessdate=2015-02-09}}</ref> No equally large authoritative DNS providers have yet deployed DNSCurve.


==See also==
==See also==

Revision as of 01:30, 3 September 2017

DNSCurve is a proposed new secure protocol for the Domain Name System (DNS), designed by Daniel J. Bernstein.

Description

DNSCurve uses Curve25519[1] elliptic curve cryptography to establish keys used by Salsa20, paired with the message authentication code (MAC) function Poly1305, to encrypt and authenticate DNS packets between resolvers and authoritative servers. Public keys for remote authoritative servers are placed in NS records, so recursive resolvers know whether the server supports DNSCurve. Keys begin with the magic string uz5 and are followed by a 51-byte Base32 encoding of the server's 255-bit public key. E.g., in BIND format:

example.com. IN NS uz5bcx1nh80x1r17q653jf3guywz7cmyh5jv0qjz0unm56lq7rpj8l.example.com.

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.

The cryptographic tools 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 (PGP), CurveCP and DNSCurve are like encrypting and authenticating the channel using Transport Layer Security (TLS). Just as PGP-signed webpages can be sent over an encrypted channel using SSL, DNSSEC data can be protected using DNSCurve.

DNSCurve claims advantages over previous DNS services of:[2]

  • Confidentiality—usual DNS requests and responses are not encrypted, and broadcast to any attacker.
  • Integrity—usual DNS has some protection, but with patience and sniffing attackers can forge DNS records; this is prevented by DNSCurve cryptographic authentication.
  • Availability—usual DNS has no protection against denial of service (DoS) by a sniffing attacker sending a few forged packets per second. DNSCurve recognizes and discards forged DNS packets, providing some protection, though SMTP, HTTP, HTTPS, are also vulnerable to DoS.

Security

DNSCurve uses 256-bit elliptic-curve cryptography, which NIST estimates to be roughly equivalent to 3072-bit RSA.[3] ECRYPT reports a similar equivalence.[4] 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."[5]

Speed

Adam Langley has posted speed tests on his personal website showing Curve25519, used by DNSCurve, to be the fastest among elliptic curves tested.[6] According to the U.S. National Security Agency (NSA), elliptic curve cryptography offers vastly superior performance over RSA and Diffie–Hellman at a geometric rate as key sizes increase.[7]

Implementations

DNSCurve first gained recursive support in dnscache via a patch[8] by Matthew Dempsky. Dempsky also has a GitHub repository which includes Python DNS lookup tools and a forwarder in C.[9] Adam Langley has a GitHub repository as well.[10] There is an authoritative forwarder called CurveDNS[11] which allows DNS administrators to protect existing installations without patching. OpenDNS has released DNSCrypt[12] to protect the channel between OpenDNS's users and its recursive resolvers. Jan Mojžíš has released curveprotect,[13] a software suite which implements DNSCurve and CurveCP protection for common services like DNS, SSH, HTTP, and SMTP.

Deployment

OpenDNS, which has 50 million users, announced support for DNSCurve on its recursive resolvers on February 23, 2010.[14] Then on December 6, 2011, OpenDNS announced a new tool, called DNSCrypt.[15] DNSCrypt protects the channel between OpenDNS and its users.[16] No equally large authoritative DNS providers have yet deployed DNSCurve.

See also

Notes

  1. ^ D. J. Bernstein. "Curve25519: high-speed elliptic-curve cryptography". Retrieved 30 January 2013.
  2. ^ "Introduction to DNSCurve". DNSCurve. 22 June 2009. Retrieved 16 March 2016.
  3. ^ "NIST Recommendations (2011)".
  4. ^ "ECRYPT II Yearly Report on Algorithms and Keysizes (2010-2011)" (PDF). Archived from the original (PDF) on 2012-06-02. {{cite web}}: Unknown parameter |deadurl= ignored (|url-status= suggested) (help)
  5. ^ "Adam Langley on curve25519 security".
  6. ^ "Adam Langley: What a difference a prime makes".
  7. ^ "The Case for Elliptic Curve Cryptography". NSA. Archived from the original on January 17, 2009. Retrieved January 17, 2009. {{cite web}}: Unknown parameter |deadurl= ignored (|url-status= suggested) (help)
  8. ^ "DNSCurve patch for dnscache". Archived from the original on 2012-12-28. {{cite web}}: Unknown parameter |deadurl= ignored (|url-status= suggested) (help)
  9. ^ "Matthew Dempsky's DNSCurve repo on GitHub".
  10. ^ "Adam Langley's DNSCurve repo".
  11. ^ "CurveDNS: A DNSCurve Forwarding Name Server".
  12. ^ "DNSCrypt: Securing a critical piece of Internet infrastructure".
  13. ^ "curveprotect, a complex collection of tools for protecting wide range of internet services".
  14. ^ "OpenDNS adopts DNSCurve".
  15. ^ "OpenDNS unveils DNSCrypt". Archived from the original on 2013-02-03. {{cite web}}: Unknown parameter |deadurl= ignored (|url-status= suggested) (help)
  16. ^ "net/dnscrypt-proxy: dnscrypt-proxy-1.4.3 – secure communications between a DNS client and resolver". OpenBSD ports. 2015-01-06. Retrieved 2015-02-09.