DNSCurve

DNSCurve是Daniel J. Bernstein设计的一种域名系统（DNS）的新安全协议。 DNSCurve使用Curve25519椭圆曲线加密算法建立Salsa20使用的密钥，配以MAC函数Poly1305，用来加密和验证解析器与身份验证服务器之间的DNS網路封包。远端验证服务器的公钥放在NS记录中，以便递归解析器了解服务器是否支持DNSCurve。键值以魔术字符串uz5开头，后随51字节的Base32（英语：Base32）编码的服务器的255位公钥。例如，以BIND格式来看： example.com. IN NS uz5bcx1nh80x1r17q653jf3guywz7cmyh5jv0qjz0unm56lq7rpj8l.example.com. 解析器然后向服务器发送一个包含DNSCurve公钥、96位nonce和一个包含查询的加密箱的数据包。加密箱为采用解析器的私钥、服务器的公钥和nonce创建。服务器的响应包含不同的96位nonce及其自身的加密箱，其中包含查询的答案。 DNSCurve中使用的加密工具也在CurveCP中使用，它是基于UDP而非TCP协议，使用椭圆曲线加密算法来加密和认证数据。一个类比是，DNSSEC像使用PGP加密一个网页，而CurveCP和DNSCurve像是使用SSL来加密和身份验证信道。正如PGP签名的网页可以通过SSL加密的信道发送，DNSSEC的数据也可通过DNSCurve保护。 DNSCurve声称优于以前的DNS服务： 保密——普通的DNS请求和响应不会加密，并且任何攻击者都可窥视内容。 完整——普通的DNS有一些保护，但有耐心并嗅探的攻击者可以伪造DNS记录。DNSCurve加密并验证的数据则防止这些情况。 可用——普通的DNS没有防护嗅探攻击者发送的一些伪造数据包制造阻斷服務攻擊（DoS）攻击。DNSCurve识别并丢弃伪造的DNS数据包，并为容易受到DoS攻击的SMTP、HTTP和HTTPS提供一些保护。 DNSCurve使用256位椭圆曲线加密算法，NIST估计大致相当于3072比特RSA。ECRYPT报告了类似的估计。它为每个查询都使用公钥加密（类似SSH和SSL），以及96比特nonces以防止重放攻击。Google安全官Adam Langley称：“很大概率上，没有人能在不使用一台大型的量子计算机的情况下解决curve25519的单个实例。” Adam Langley在他的个人网站上展示了DNSCurve所使用的curve25519的速度测试，它是测试中最快的椭圆曲线加密法。根据NSA所说，椭圆曲线加密法在增加密钥大小的同时，几何速率方面的性能优于RSA和Diffie-Hellman。 DNSCurve通过Matthew Dempsky为dnscache的一个补丁取得了首个递归支持。Dempsky也有一个GitHub代码库，里面包括Python DNS查询工具和一个C语言编写的转发器。Adam Langley同样有一个GitHub代码库。有一个权威转发器名为CurveDNS，它允许DNS管理员保护现有的安装而无须打补丁。OpenDNS已发布DNSCrypt来保护OpenDNS用户与其递归解析器之间的信道。Jan Mojžíš发布了curveprotect，这是一个实现DNSCurve和CurveCP的套件，保护DNS、SSH、HTTP和SMTP等常见服务。 OpenDNS 服务超过5000万用户的于2010年2月23日宣布其递归解析器支持DNSCurve。2011年12月6日，OpenDNS宣布名为DNSCrypt的新工具该工具能保护OpenDNS与其用户之间的信道。尚无其他类似的权威DNS提供商部署DNSCurve。 域名系统安全扩展（DNSSEC） 椭圆曲线密码学 OpenDNS D. J. Bernstein. Curve25519: high-speed elliptic-curve cryptography. [30 January 2013]. （原始内容存档于2011-07-14）.  Introduction to DNSCurve. 22 June 2009 [16 March 2016]. （原始内容存档于2017-01-04）.  NIST Recommendations (2011). [2017-01-03]. （原始内容存档于2017-03-01）.  ECRYPT II Yearly Report on Algorithms and Keysizes (2010-2011) (PDF). [2017-01-03]. （原始内容 (PDF)存档于2012-06-02）.  Adam Langley on curve25519 security.  Adam Langley: What a difference a prime makes. [2017-01-03]. （原始内容存档于2016-09-19）.  The Case for Elliptic Curve Cryptography. NSA. [January 17, 2009]. （原始内容存档于2009-01-17）.  DNSCurve patch for dnscache. [2017-01-03]. （原始内容存档于2012-12-28）.  Matthew Dempsky's DNSCurve repo on GitHub. [2017-01-03]. （原始内容存档于2015-08-14）.  Adam Langley's DNSCurve repo. [2017-01-03]. （原始内容存档于2018-06-10）.  CurveDNS: A DNSCurve Forwarding Name Server. [2017-01-03]. （原始内容存档于2011-01-02）.  DNSCrypt: Securing a critical piece of Internet infrastructure. [2017-01-03]. （原始内容存档于2012-05-10）.  curveprotect, a complex collection of tools for protecting wide range of internet services. [2017-01-03]. （原始内容存档于2013-05-26）.  OpenDNS adopts DNSCurve. [2017-01-03]. （原始内容存档于2010-02-26）.  OpenDNS unveils DNSCrypt. [2017-09-04]. （原始内容存档于2013-02-03）.  net/dnscrypt-proxy: dnscrypt-proxy-1.4.3 – secure communications between a DNS client and resolver. OpenBSD ports. 2015-01-06 [2015-02-09]. （原始内容存档于2018-11-29）.  Official website（页面存档备份，存于互联网档案馆） DNSCurve.io: a community for DNSCurve users（页面存档备份，存于互联网档案馆） High-speed cryptography and DNSCurve（页面存档备份，存于互联网档案馆），2009年6月作者的介绍 DNSCurve: Usable security for DNS（页面存档备份，存于互联网档案馆），2008年8月作者的介绍 draft-dempsky-dnscurve-01（页面存档备份，存于互联网档案馆） 提议标准：“DNSCurve: Link-Level Security for the Domain Name System”，M. Dempsky（来自OpenDNS）发送给IETF （更新于2010年2月） OpenDNS adopts DNSCurve（页面存档备份，存于互联网档案馆），OpenDNS官方博文 CurveDNS（页面存档备份，存于互联网档案馆），DNSCurve转发名称服务器 NaCl（页面存档备份，存于互联网档案馆），网络和加密程序库