DNSCurve
DNSCurve是Daniel J. Bernstein設計的一種域名系統(DNS)的新安全協定。
描述
[編輯]DNSCurve使用Curve25519[1]橢圓曲線加密演算法建立Salsa20使用的金鑰,配以MAC函數Poly1305,用來加密和驗證解析器與身份驗證伺服器之間的DNS網絡封包。遠端驗證伺服器的公鑰放在NS記錄中,以便遞歸解析器了解伺服器是否支援DNSCurve。鍵值以魔術字串uz5
開頭,後隨51位元組的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服務:[2]
- 保密——普通的DNS請求和響應不會加密,並且任何攻擊者都可窺視內容。
- 完整——普通的DNS有一些保護,但有耐心並嗅探的攻擊者可以偽造DNS記錄。DNSCurve加密並驗證的數據則防止這些情況。
- 可用——普通的DNS沒有防護嗅探攻擊者傳送的一些偽造封包製造阻斷服務攻擊(DoS)攻擊。DNSCurve辨識並丟棄偽造的DNS封包,並為容易受到DoS攻擊的SMTP、HTTP和HTTPS提供一些保護。
安全
[編輯]DNSCurve使用256位橢圓曲線加密演算法,NIST估計大致相當於3072位元RSA。[3]ECRYPT報告了類似的估計。[4]它為每個查詢都使用公鑰加密(類似SSH和SSL),以及96位元nonces以防止重放攻擊。Google安全官Adam Langley稱:「很大概率上,沒有人能在不使用一台大型的量子電腦的情況下解決curve25519的單個實例。」[5]
速度
[編輯]Adam Langley在他的個人網站上展示了DNSCurve所使用的curve25519的速度測試,它是測試中最快的橢圓曲線加密法。[6]根據NSA所說,橢圓曲線加密法在增加金鑰大小的同時,幾何速率方面的效能優於RSA和Diffie-Hellman。[7]
實現
[編輯]DNSCurve通過[8]Matthew Dempsky為dnscache的一個修補程式取得了首個遞歸支援。Dempsky也有一個GitHub代碼庫,裡面包括Python DNS查詢工具和一個C語言編寫的轉發器。[9]Adam Langley同樣有一個GitHub代碼庫。[10]有一個權威轉發器名為CurveDNS[11],它允許DNS管理員保護現有的安裝而無須打修補程式。OpenDNS已發佈DNSCrypt[12]來保護OpenDNS用戶與其遞歸解析器之間的信道。Jan Mojžíš發佈了curveprotect[13],這是一個實現DNSCurve和CurveCP的套件,保護DNS、SSH、HTTP和SMTP等常見服務。
部署
[編輯]OpenDNS 服務超過5000萬用戶的於2010年2月23日宣佈其遞歸解析器支援DNSCurve。[14]2011年12月6日,OpenDNS宣佈名為DNSCrypt的新工具[15]該工具能保護OpenDNS與其用戶之間的信道。[16]尚無其他類似的權威DNS提供商部署DNSCurve。
參見
[編輯]備註
[編輯]- ^ 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(頁面存檔備份,存於互聯網檔案館),網絡和加密程式庫