複製鏈接
請複製以下鏈接發送給好友

DNSCurve

鎖定
DNSCurve是Daniel J. Bernstein設計的一種域名系統(DNS)的新安全協議
外文名
DNSCurve
創始人
Daniel J. Bernstein

目錄

DNSCurve簡介

DNSCurve使用Curve25519橢圓曲線加密算法創建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服務 [1] 
  • 保密——普通的DNS請求和響應不會加密,並且任何攻擊者都可窺視內容。
  • 完整——普通的DNS有一些保護,但有耐心並嗅探的攻擊者可以偽造DNS記錄。DNSCurve加密並驗證的數據則防止這些情況。
  • 可用——普通的DNS沒有防護嗅探攻擊者發送的一些偽造數據包製造阻斷服務攻擊(DoS)攻擊。DNSCurve識別並丟棄偽造的DNS數據包,併為容易受到DoS攻擊的SMTP、HTTP和HTTPS提供一些保護。

DNSCurve安全

DNSCurve使用256位橢圓曲線加密算法,NIST估計大致相當於3072比特RSA。ECRYPT報告了類似的估計。它為每個查詢都使用公鑰加密(類似SSH和SSL),以及96比特nonces以防止重放攻擊 [2]  。Google安全官Adam Langley稱:“很大概率上,沒有人能在不使用一台大型的量子計算機的情況下解決curve25519的單個實例。”

DNSCurve速度

Adam Langley在他的個人網站上展示了DNSCurve所使用的curve25519的速度測試,它是測試中最快的橢圓曲線加密法。根據NSA所説,橢圓曲線加密法在增加密鑰大小的同時,幾何速率方面的性能優於RSA和Diffie-Hellman。

DNSCurve實現

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等常見服務。

DNSCurve部署

OpenDNS 服務超過5000萬用户的於2010年2月23日宣佈其遞歸解析器支持DNSCurve。2011年12月6日,OpenDNS宣佈名為DNSCrypt的新工具該工具能保護OpenDNS與其用户之間的信道。尚無其他類似的官方DNS提供商部署DNSCurve。
參考資料