崔淑田,劉 越
(1.中國人民大學經濟學院 北京100872;2.工業和信息化部電信研究院 北京100191)
域名系統(domain name system,DNS)是互聯網上最為重要的關鍵基礎設施之一,完成域名到IP地址的映射,具有較高的查詢和管理效率,方便人們使用各種網絡應用[1]。DNS服務發展迅速,已經成為全球最大也是最為成功的分布式數據庫系統。
域名體系采用反向樹形結構,其頂層為根域名,在書寫域名時默認為省略;根域名之下為頂級域名,頂級域包括國家和地區頂級域 (country code top level domain,ccTLD)和通用頂級域(generic top level domain,gTLD);域名注冊人可在頂級域下注冊二級或二級以下的域名。將一條從葉到根的路徑上的各級名稱用“.”分隔連綴起來,就構成一個獨一無二的完整域名,這棵逆向樹就稱為域名空間,域名則是存放在被稱為資源記錄(resource record,RR)的數據結構中。
域名空間被分成若干個區(zone),每個區按其管轄范圍擁有域名空間相應部分的完整信息。每個區必須指定一個主 (primary/master)DNS域名服務器來負責本區內的域名解析,資源記錄就保存在域名服務器的zone文件中。輔助DNS服務器從具有該區授權的域名服務器 (通常是主DNS服務器)上獲得所在區的數據,并通過定期查詢主DNS服務器以保證所存儲的區數據為最新版本。主服務器和輔助服務器統稱為權威DNS服務器。
通過分層結構和分級授權機制,DNS分布地DNS采用客戶機/服務器機制進行域名解析的查詢和應答。域名服務器作為服務器端,為客戶端完成DNS分布式數據的存儲和解析,包含各級權威服務器和緩存服務器。解析器位于客戶端,負責執行解析請求,即接受來自客戶端應用程序的DNS查詢請求,向域名服務器發送查詢請求,并負責接收域名服務器的返回信息,將結果發給客戶端的應用程序。各級域名服務器和解析器構成了DNS的基礎設施。
DNS協議是至關重要的互聯網基礎協議,已被廣泛使用。但作為Internet的早期協議,DNS被設計為建立在互信模型基礎之上的開放體系結構,缺乏適當的信息保護和認證機制。由于DNS對于互聯網的重要性以及自身的脆弱性,針對DNS的攻擊近年來呈現上升的趨勢,其安全性不容樂觀。DNS面臨的主要威脅、安全目標和相應的國際互聯網工程任務組(IETF)安全規范如表1所示[2]。

表1 DNS事務及其所面臨的威脅、安全目標和IETF安全規范
DNS安全擴展(domain name system security extension,DNSSEC)協議是IETF開發的,提供了一種通過軟件來驗證DNS數據在互聯網傳輸過程中未被更改的方式。DNSSEC的研究始于20世紀90年代,1999年IETF發布RFC 2535[3],提出了以公鑰密碼機制為基礎的DNSSEC實施解決方案。DNSSEC協議通過使用公鑰基礎設施(public key infrastructure,PKI)在原有的DNS基礎上添加數字簽名(digital signature),對通過DNS體系內部的信息同時提供權限認證和信息完整性驗證,能夠部分地解決DNS存在的安全問題。
DNSSEC的主要功能有3項:
·提供數據來源驗證——DNS數據來自正確的域名服務器;
·提供數據完整性驗證——數據在傳輸過程中沒有任何更改;
·提供否定存在驗證——對否定應答報文提供驗證信息。
基于DNSSEC的域名解析過程,服務器端將把簽名信息和查詢到的DNS原始信息一起發送給客戶端。由于簽名信息無法偽造,客戶端通過驗證應答報文中的簽名信息即可判斷接收到的信息是否安全。
采用DNSSEC機制的DNS服務器 (一般是區內的主服務器)首先基于公鑰加密系統產生一對密鑰,其中一個為公鑰,另一個為私鑰。公鑰對外進行公開發布,任何人均可獲得并使用;私鑰由主服務器的管理員或管理機構負責保管,嚴格對外保密。
DNS服務器用私鑰對返回給查詢方的資源記錄(RR)進行數字簽名得到一個新的資源記錄(RRSIG),并將經過簽名的RRSIG與未經簽名的RR作為應答報文一起發送給提出查詢請求的客戶端或解析器。RRSIG中還包含有公鑰或數字簽名算法的代碼。收到應答報文的客戶端或解析器可以利用公鑰和加密算法對收到的RR進行加密運算,可以得到一個計算出來的RRSIG,將其與所收到報文中的RRSIG進行比對,如果二者相同,則通過了對簽名者的認證并驗證了數據的完整性,即應答報文中的RR是真的,否則就說明收到的RR是假的。
在DNSSEC的實際運行中,每個區需要雙重密鑰[4],第一對密鑰用來對區內的DNS資源記錄進行簽名,稱為區簽名密鑰(ZSK);第二對密鑰用來對包含密鑰(如ZSK)的資源記錄(DNSKEY)進行簽名,稱為密鑰簽名密鑰(KSK)。在DNSSEC中,解析器必須信任所收到的公鑰,才能用其進行解密從而驗證數據的完整性。解析器首先用KSK公鑰驗證DNSKEY,然后用ZSK公鑰來驗證數據。因此,KSK公鑰成為DNSSEC的關鍵入口。如果解析器信任它所使用的KSK公鑰,則這個KSK公鑰就稱為這個解析器的信任錨(trust anchor)。啟用DNSSEC的區(或稱簽名區)將自己的KSK公鑰交給父區,由父區用自己的ZSK私鑰對其進行簽名;同樣地,父區也可以將自己的KSK私鑰交由自己的父區,由其用ZSK私鑰進行簽名。這樣的過程稱為安全授權,當這個過程向上到達信任錨的時候,就形成了一條信任鏈(trust chain)。由于DNS所具有的層級結構,根區位于最頂端,且具有唯一性,因此根區的KSK公鑰就自然而然地成為所有區的信任錨。這樣,當一條信任鏈一直通達根區時,表明這條鏈上的各級區域都是可以信任的,能夠用根區的KSK公鑰對其進行簽名驗證從而確保數據來源的可靠性和數據本身的完整性。在理想情況下,如果所有的區都部署了DNSSEC,則解析器只需保存作為信任錨的根區KSK公鑰就可以依次進行驗證,確保自己確實是從需要的DNS服務器那里得到了應答報文。
為了保證和查詢相應的資源記錄是確實不存在,而不是在傳輸過程中被刪除,DNSSEC機制提供了一個驗證資源記錄不存在的方法。它生成一個特殊類型的資源記錄:NSEC(nert secure)。NSEC記錄中包含了域區文件中它的所有者相鄰的下一個記錄以及它的所有者所擁有的資源記錄類型。這個特殊的資源記錄類型會和它自身的簽名一起被發送到查詢的發起者。通過驗證這個簽名,一個啟用了DNSSEC的域名服務器就可以檢測到這個域區中存在哪些域名以及此域名中存在哪些資源記錄類型。
為了保護資源記錄中的通配符不被錯誤的擴展,DNSSEC會對比已驗證的通配符記錄和NSEC記錄從而來驗證名稱服務器在生成應答時的通配符擴展是正確的。
DNSSEC所使用的PKI是基于非對稱密碼學設計的,其密鑰具有這樣的性質:用公鑰加密的文件只能用私鑰解密,而私鑰加密的文件只能用公鑰解密。公鑰和私鑰成對產生,相互具有唯一性;而且由于非對稱密碼的技術特點,加密簡單方便,解密則只能通過最為原始的窮舉法對密鑰(私鑰)進行猜測,而不能在已知公鑰和加密結果 (在DNSSEC中是數據經過ZSK加密后得到的RRSIG和密鑰經過KSK簽名后得到的DNSKEY)的前提下通過推導得出私鑰。
DNSSEC的安全性取決于PKI所用密鑰的安全性。由于PKI所具有的密碼學性質,PKI的保密性 (或稱安全強度)取決于密鑰(一個二進制序列)的位數,位數越長,意味著破解所花費的時間或者消耗的計算資源越多,因而安全強度越大,保密性越好。
根據有關信息安全標準的建議,DNSSEC選擇了RSA/SHA-n這一最為常用的PKI算法[4],即首先將要傳送的數據通過SHA-n算法進行安全散列變換,然后利用RSA算法生成的公鑰進行數字簽名。隨著時間的推移,計算能力不斷提高,為了防止被破解,密鑰的位數將逐漸加長(如表2所示)。

表2 DNSSEC所用的PKI算法及安全強度
DNSSEC提供了端到端的完整性和真實性簽名驗證,能夠較為有效地防止DNS欺騙,大大增強了DNS解析過程的安全性,是目前比較完善的DNS安全解決方案。從當前國際上的發展情況來看,DNSSEC作為保障域名體系安全的一項技術正在獲得越來越廣泛的認可和應用,這有助于增強DNS的安全性,減少政府、商業機構和廣大用戶所受到的網絡安全威脅,促進電子政務、電子商務和各類網絡應用的發展。
但同時也需要看到,由于DNSSEC的信任機制,一旦全球DNSSEC部署完畢,根區的信任錨就成為DNS安全解析的入口或起點。根據與美國政府簽署的有關合同,注冊在美國的互聯網域名地址分配機構ICANN和VeriSign公司參與根區DNSSEC部署進程并負責根區密鑰的管理。這意味著已經掌握了DNS根區管理權和絕大多數根域名服務器的美國,借提高DNS安全的名義,通過DNSSEC進一步增強其對互聯網關鍵資源管理權的控制,將繼續保持其優勢地位。根區DNSSEC部署及管理架構如圖1所示。
除去政治和安全目標外,部署DNSSEC需要利用先進密碼技術并進行大量的軟硬件升級,將有利于掌握核心技術的國家與企業擴大其在網絡和信息安全的影響力,繼續占據技術和市場的領先地位。
1999年RFC 2535發布后的近10年間,DNSSEC受限于技術、成本、網絡性能等多方面因素的影響,一直未得到各方面的充分重視,部署進展緩慢。2008年Kaminsky漏洞的發布轟動了業界,而利用這一漏洞所發起的DNS緩存中毒攻擊數量及其造成的損失近年來也在大幅度上升。DNSSEC作為解決這一漏洞的主要辦法因而受到了廣泛重視,開始進入大規模部署階段,且呈現加速之勢。

(1)根區DNSSEC部署完成,信任錨正式啟用
2010年6月16日,ICANN在位于美國東部弗吉尼亞州卡爾佩帕(Culpeper)的一個數據中心舉行根區密鑰生成儀式,生成并存儲了第一個將用于互聯網根區安全的密鑰(KSK)。7月12日,ICANN在位于美國西部加利福尼亞州的埃爾塞貢多(El Segundo)舉行第二次密鑰生成儀式。7月15日,ICANN發布根區的信任錨(KSK公鑰),DNS根服務器運營商將可以正式對根區利用實際密鑰進行簽名,這意味著簽名根區(即應用DNSSEC的根區)已正式啟動。根據ICANN的計劃,根區密鑰將每年生成4次,并且分別在位于美國東部和西部的兩個中心進行,互為備份。此外,ICANN還設置了密鑰生成系統的備份機制,可以在兩個中心都發生問題時進行系統恢復,重新生成密鑰。
(2)頂級域部署進程加快,DNSSEC獲主要國家和地區認可
在問卷中怎樣選擇護士這個職業的調查,其結果顯示有57.1%是通過父母選擇的。因此推測可能是由于一年級的學生剛入校對于護士這個職業還比較懵懂,認識比較模糊。而通過在校一年級二年級三年級的接觸和學習,逐步對護理行業有更清晰的認識和理解,所以其整個認同度是逐漸增加的。但又發現四年級的同學認同度又回歸到二年級的水平,可能是由于其鄰近實習有實習焦慮或其他相關因素的影響。
根據 ICANN的統計[5],截至 2012年7月 17日,互聯網根區記錄中共有314個頂級域 (其中包括11個多語種測試頂級域)。已經完成DNSSEC部署的頂級域占頂級域總數的30.9%(不包含多語種測試頂級域時,比例為28.4%)。在國家和地區頂級域方面,249個ASCⅡ碼ccTLD中,已經正式運行DNSSEC的達到63個,部署但尚未完成根簽的有6個,不僅西方主要發達國家投入運行,而且巴西、印度等發展中國家也已加入部署行列;32個多語種國家和地區頂級域中,已完成DNSSEC部署的僅有5個,其中中國臺灣的“.臺灣”和“.臺灣”兩頂級域以及韓國的“. ”頂級域已正式運行,斯里蘭卡的兩個多語種頂級域尚未完成根簽。在通用頂級域方面,包括“.COM/.NET/.ORG/.INFO/.BIZ”等五大頂級域在內的12個通用頂級域已經正式運行DNSSEC,在全部22個通用頂級域中超過半數。
(3)域名服務機構著手降低技術門檻,推動DNSSEC部署
為進一步加快DNSSEC的部署速度,域名注冊管理機構和服務機構也在想盡辦法降低用戶使用DNSSEC技術的門檻。如“.EU”推出了實施自動簽名的簡化DNSSEC簽名服務。通過該項服務,域名注冊服務機構可按需求選擇需要DNSSEC簽名的域名,后臺系統將自動完成DNSSEC簽名服務。一些擁有部署和運行經驗的域名服務機構紛紛推出DNSSEC解決方案和技術服務,推動二級和二級以下域名的DNSSEC部署進程。在各級各類域名服務機構的推動下,進入2010年以來,部署DNSSEC的區的數量出現了快速增長,幾乎是呈直線上升。截至2012年7月17日[6],全球已有37 191個區能運行DNSSEC,約為2009年底的6.2倍。捷克國家頂級域“.CZ”是DNSSEC部署的成功典范,目前約有36.5%(即34.8萬)的 “.CZ”域名啟用了DNSSEC服務,2011年這一數字僅為17%;預計2012年底使用DNSSEC服務的“.CZ”域名數量達到40萬個。
(1)技術特點和運行經驗積累有助于加快DNSSEC部署
由于DNS所具有的樹形結構和DNSSEC的信任機制,任何部署了DNSSEC的區只要使用根區KSK公鑰進行安全認證就可以提升DNS解析的安全性,且DNSSEC已被證明是解決Kaminsky漏洞的長期有效方法,因此,隨著根區和主要頂級域的DNSSEC部署完畢并投入運行,自頂向下的推動將使越來越多的域名接受DNSSEC。而且BIND等主流DNS解析軟件均支持DNSSEC,對用戶負擔不重。現有解決方案在實踐中不斷得到檢驗和完善,經驗的積累將進一步降低部署和運行成本。此外,域名服務機構出于經濟利益的考慮也將推動域名持有人接受DNSSEC服務。近兩年部署DNSSEC的區的數量大幅快速增長也顯示出這一進程正在加速之中。
(2)新通用頂級域計劃將大力推動頂級域DNSSEC部署
ICANN于2011年6月20日正式啟動新通用頂級域計劃,并于2012年1月12日—5月31日接受首輪新通用頂級域申請。6月13日,ICANN公布了新通用頂級域的申請情況,共有1 154家機構提交了1 930份新通用頂級域申請。根據ICANN要求,新通用頂級域申請機構應具備提供DNSSEC服務相關的技術能力,在頂級域授權前必須通過ICANN有關DNSSEC的系統實測工作,并向ICANN提交測試中所用的有效密鑰裝置的說明文檔以及頂級域的DNSSEC政策聲明(DPS)。預計到2015年,將完成包括本輪次申請的新通用頂級域在內的全球絕大部分通用頂級域的DNSSEC的部署工作。在此帶動下,全球頂級域DNSSEC部署速度將提速。
DNSSEC能夠較為有效地防止DNS欺騙,但實施DNSSEC尚存在一些問題[7,8]。
(1)實施DNSSEC是以降低DNS查詢和響應時間性能為代價的
數據分組比原來要大得多。由于DNSSEC在DNS報文中添加了數字簽名,并且密鑰的長度會隨著時間不斷增加,因此報文長度會大大增加。考慮到DNS查詢/應答是極為常用的互聯網應用,這就會大大加重網絡的額外開銷,從而對網絡服務的性能產生影響。
(2)實施DNSSEC增加了DNS運營和使用的負擔
一方面,DNSSEC所需密鑰的產生和校驗需要CPU計算能力作保障,但根據了解,2003年以前生產的網絡設備有不少不支持DNSSEC,這意味著大量DNS運營商都需要升級其網絡設備,提高DNS服務器配置(如將單處理器的DNS服務器換成多處理器的DNSSEC服務器)。同時,用戶需要更換新版軟件以改變目前DNS解析軟件僅支持手動對DNSSEC進行命令行操作控制的狀況。另一方面,簽名和密鑰占用的磁盤空間和存儲器(RAM)容量將達到它們所表示數據所占容量的10倍。因此數據庫和管理系統也不得不進行相應的升級和擴容。
(3)DNSSEC不能提供安全有效的密鑰分發通道
DNSSEC未將通信信道的安全納入考慮之中,目前只有借助于安全套接層(secure sockets layer,SSL)及傳輸層安全(transport layer security,TLS)等傳輸協議進行密鑰分發,存在一定的安全隱患。而密鑰(私鑰)一旦丟失或被破解,則可能帶來嚴重的后果。
(4)DNSSEC 會造成“安全孤島”現象
由于DNSSEC不可能一夜之間部署到整個互聯網,而只能逐步進行部署,因此理想情況下的信任鏈尚不能有效建立,DNS與DNSSEC仍將并行使用,那些先部署了DNSSEC的區則形成一個個的 “孤島”。這會造成兩種情況:第一,不安全的未簽名區與簽名區進行通信時會將錯誤信息混入其中;第二,嚴格執行DNSSEC的區會在阻止錯誤信息的同時將大量未應用DNSSEC所需的信息拒之門外。
DNS所面臨的安全威脅遠不止于域名欺騙,即使部署了DNSSEC也絕不是在DNS安全方面可以高枕無憂了。對于普遍存在且造成較大危害的(分布式)拒絕服務攻擊(DoS/DDoS)、對注冊服務商的域名劫持、釣魚網站等一系列DNS安全問題,DNSSEC并未能提供有效解決方案。而且,由于DNSSEC的報文長度增加和解析過程繁復,在面臨DDoS攻擊時,DNS服務器承受的負擔更為嚴重,抵抗攻擊所需的資源要成倍增加。
DNSSEC為互聯網增加了一個新的安全手段,對我國提升DNS安全性提供了新的技術和思路,DNS與DNSSEC并行也為我國開展研究工作留下了一定時間。但是目前全球部署DNSSEC的區的數量仍然較少,其實際效果究竟如何仍有待進一步觀察。特別是美國主導DNSSEC部署進程將有助于強化其對互聯網的單邊控制,我國應對其可能產生的影響提前做好準備。
(1)加強技術研究和標準制定工作,積極開展試驗和應用示范,積累運營和管理經驗
我國作為互聯網大國,境內域名和域名服務器數量都以百萬計,如部署DNSSEC將面臨大規模性能升級的技術與管理困難,在技術與產業實力較弱的情況下更多要依賴進口,支出巨大。因此,主管部門應組織有關單位,積極加大對包括DNSSEC在內的DNS安全技術的研究力度和擁有自主知識產權的DNS軟件研發工作,設立試驗環境并開展應用示范,盡早識別與解決可能出現的各種問題,為平滑升級做好技術準備;針對部署DNSSEC涉及的密鑰產生與管理、密鑰分發流程、過渡機制與互聯互通等問題,推進標準制定工作,用于指導和規范相關進程,降低部署難度與成本;對我國自主建設與自行管理的國家頂級域和未來將大量出現的新通用頂級域的DNSSEC部署方案進行充分研究和論證,在確保我國域名系統安全穩定運行的條件下對信任錨的可用性以及避免部署后成為“孤島”等進行全盤考慮;針對下一代互聯網、云計算、物聯網、移動互聯網等產業的發展可能對域名系統提出的挑戰加強自主研發力度,爭取提供高效、安全的域名技術,支撐新興產業的健康發展。
(2)積極參與國際合作,擴大話語權
DNSSEC以根區密鑰作為全球域名解析安全的信任錨,這與美國單邊控制的國際互聯網治理框架相關。我國應在國際互聯網治理的框架下統籌規劃,聯合有關國家,積極推動建立合理的國際互聯網治理秩序,遏制少數國家對互聯網關鍵資源的壟斷,爭取建立多邊的、民主的全球互聯網資源管理機制。同時,組織有關機構和企業以適當方式參與國際上DNS安全標準制定和軟件開發以及密碼研究工作,及時了解國際DNSSEC的進程與部署經驗,通過多方合作,增強我國在網絡與信息安全領域的硬實力與軟實力。
(3)完善域名注冊管理機制,保障國內域名解析安全
DNSSEC針對DNS欺騙問題提出了解決方案,對增強互聯網的域名安全有一定的積極作用,但是仍不能解決分布式拒絕服務攻擊(DDoS)、注冊端出現的域名失竊、域名劫持、釣魚網站等大量安全問題。因此,有必要進一步健全完善互聯網域名管理制度,堅持推行域名實名制注冊,完善域名注冊信息審核和備案流程;提高域名服務機構的管理水平和責任意識并加強監督檢查,及時查處域名相關的違法犯罪行為;加強網絡和信息安全的宣傳教育活動,向公眾普及相關知識,提高用戶的自我保護意識和能力,切實保障公眾注冊域名所應享有的正當權益和國內的域名解析安全。
1 毛偉.中國互聯網資源標識和尋址技術研究.中國科學院計算技術研究所博士學位論文,2006
2 Chandramouli R,Rose S.Secure Domain Name System(DNS)Deployment Guide.NIST Special Publication(800-81r1),2010
3 Eastlake D.Domain Name System Security Extensions.RFC 2535,March 1999
4 ChandramouliR,Rose S.Open issues in secure DNS deployment.IEEE Security and Privacy,2009,7(5):29~35
5 TLD DNSSEC report. http://stats.research.icann.org/dns/tld_report/,2012
6 http://secspider.cs.ucla.edu/,2012
7 李馥娟.DNSSEC技術及應用分析.計算機安全,2009(10)
8 蔡晨,明子鑒.DNSSEC技術介紹與分析.現代計算機(專業版),2010(8)