Dns安全查詢方法和裝置的制造方法
【技術(shù)領(lǐng)域】
[0001]本發(fā)明涉及計(jì)算機(jī)網(wǎng)絡(luò)領(lǐng)域,具體涉及一種DNS安全查詢方法和裝置。
【背景技術(shù)】
[0002]域名系統(tǒng)(Domain Name System,簡稱:DNS)是因特網(wǎng)上作為域名和IP地址相互映射的一個(gè)分布式數(shù)據(jù)庫,能夠使用戶更方便的訪問互聯(lián)網(wǎng),而不用去記住能夠被機(jī)器直接讀取的IP數(shù)串。通過主機(jī)名,最終得到該主機(jī)名對(duì)應(yīng)的IP地址的過程叫做域名解析(或主機(jī)名解析)過程。
[0003]DNS協(xié)議運(yùn)行在用戶數(shù)據(jù)報(bào)協(xié)議(User Datagram Protocol,簡稱:UDP)之上,與互聯(lián)網(wǎng)的其他協(xié)議或系統(tǒng)一樣,在一個(gè)可信的、純凈的環(huán)境里運(yùn)行得很好。但是今天的互聯(lián)網(wǎng)環(huán)境異常復(fù)雜,充斥著各種欺詐、攻擊,DNS協(xié)議表現(xiàn)出其脆弱性。
[0004]為避免上述的DNS劫持、欺騙等問題,提高互聯(lián)網(wǎng)安全性,互聯(lián)網(wǎng)服務(wù)提供商開始布署支持 DNS 安全擴(kuò)展(Domain Name System Security Extens1ns,簡稱:DNSSEC)的解析服務(wù)器。DNSSEC利用數(shù)字簽名在各級(jí)解析服務(wù)器之間配置信任鏈,保證各級(jí)解析服務(wù)器之間的數(shù)據(jù)完整性和真實(shí)性。
[0005]然而,即使在上述各級(jí)解析服務(wù)器上部署了 DNSSEC,但在客戶端和直接與客戶端交互的解析服務(wù)器節(jié)點(diǎn)之間并不存在信任鏈或數(shù)據(jù)真實(shí)性、完整性的驗(yàn)證過程。因此,DNSSEC無法識(shí)別出此處發(fā)生的DNS欺騙,客戶端得到的域名解析結(jié)果仍然具有風(fēng)險(xiǎn)。
【發(fā)明內(nèi)容】
[0006]鑒于上述問題,提出了本發(fā)明以便提供一種克服上述問題或者至少部分地解決上述問題的DNS安全查詢方法和裝置。
[0007]根據(jù)本發(fā)明的一個(gè)方面,提供了一種DNS安全查詢方法,包括:
[0008]捕獲客戶端待發(fā)送的DNS請(qǐng)求數(shù)據(jù)包,將DNS請(qǐng)求數(shù)據(jù)包轉(zhuǎn)換為對(duì)應(yīng)的DNSSEC請(qǐng)求數(shù)據(jù)包;
[0009]發(fā)送DNSSEC請(qǐng)求數(shù)據(jù)包至DNS服務(wù)器,以接收DNS服務(wù)器返回的DNSSEC響應(yīng)數(shù)據(jù)包;
[0010]捕獲客戶端接收的DNSSEC響應(yīng)數(shù)據(jù)包,利用DNS服務(wù)器提供的公鑰驗(yàn)證DNSSEC響應(yīng)數(shù)據(jù)包中的數(shù)字簽名;若數(shù)字簽名驗(yàn)證通過,將DNSSEC響應(yīng)數(shù)據(jù)包轉(zhuǎn)換為對(duì)應(yīng)的DNS響應(yīng)數(shù)據(jù)包,依據(jù)DNS響應(yīng)數(shù)據(jù)包進(jìn)行DNS查詢處理。
[0011]根據(jù)本發(fā)明的另一方面,提供了一種DNS安全查詢裝置,包括:
[0012]第一捕獲模塊,適于捕獲客戶端待發(fā)送的DNS請(qǐng)求數(shù)據(jù)包;
[0013]收發(fā)模塊,適于發(fā)送DNSSEC請(qǐng)求數(shù)據(jù)包至DNS服務(wù)器,以接收DNS服務(wù)器返回的DNSSEC響應(yīng)數(shù)據(jù)包;
[0014]第二捕獲模塊,適于捕獲客戶端接收的DNSSEC響應(yīng)數(shù)據(jù)包;
[0015]驗(yàn)證模塊,適于利用DNS服務(wù)器提供的公鑰驗(yàn)證DNSSEC響應(yīng)數(shù)據(jù)包中的數(shù)字簽名;
[0016]轉(zhuǎn)換模塊,適于在第一捕獲模塊捕獲DNS請(qǐng)求數(shù)據(jù)包后,將DNS請(qǐng)求數(shù)據(jù)包轉(zhuǎn)換為對(duì)應(yīng)的DNSSEC請(qǐng)求數(shù)據(jù)包;以及,在驗(yàn)證模塊對(duì)數(shù)字簽名驗(yàn)證通過后,將DNSSEC響應(yīng)數(shù)據(jù)包轉(zhuǎn)換為對(duì)應(yīng)的DNS響應(yīng)數(shù)據(jù)包;
[0017]查詢處理模塊,適于依據(jù)DNS響應(yīng)數(shù)據(jù)包進(jìn)行DNS查詢處理。
[0018]根據(jù)本發(fā)明的DNS安全查詢方法和裝置,捕獲客戶端待發(fā)送的DNS請(qǐng)求數(shù)據(jù)包,將DNS請(qǐng)求數(shù)據(jù)包轉(zhuǎn)換為對(duì)應(yīng)的DNSSEC請(qǐng)求數(shù)據(jù)包;發(fā)送DNSSEC請(qǐng)求數(shù)據(jù)包至DNS服務(wù)器,以接收DNS服務(wù)器返回的DNSSEC響應(yīng)數(shù)據(jù)包;捕獲客戶端接收的DNSSEC響應(yīng)數(shù)據(jù)包,利用DNS服務(wù)器提供的公鑰驗(yàn)證DNSSEC響應(yīng)數(shù)據(jù)包中的數(shù)字簽名;若數(shù)字簽名驗(yàn)證通過,將DNSSEC響應(yīng)數(shù)據(jù)包轉(zhuǎn)換為對(duì)應(yīng)的DNS響應(yīng)數(shù)據(jù)包,依據(jù)DNS響應(yīng)數(shù)據(jù)包進(jìn)行DNS查詢處理。根據(jù)上述方案,將DNSSEC中的驗(yàn)證過程應(yīng)用于客戶端,在客戶端與最近的DNS服務(wù)器之間配置信任關(guān)系,從而與各級(jí)DNS服務(wù)器形成完整的信任鏈,能夠在客戶端驗(yàn)證數(shù)據(jù)的真實(shí)性和完整性,進(jìn)一步避免出現(xiàn)DNS劫持和欺騙問題。
[0019]上述說明僅是本發(fā)明技術(shù)方案的概述,為了能夠更清楚了解本發(fā)明的技術(shù)手段,而可依照說明書的內(nèi)容予以實(shí)施,并且為了讓本發(fā)明的上述和其它目的、特征和優(yōu)點(diǎn)能夠更明顯易懂,以下特舉本發(fā)明的【具體實(shí)施方式】。
【附圖說明】
[0020]通過閱讀下文優(yōu)選實(shí)施方式的詳細(xì)描述,各種其他的優(yōu)點(diǎn)和益處對(duì)于本領(lǐng)域普通技術(shù)人員將變得清楚明了。附圖僅用于示出優(yōu)選實(shí)施方式的目的,而并不認(rèn)為是對(duì)本發(fā)明的限制。而且在整個(gè)附圖中,用相同的參考符號(hào)表示相同的部件。在附圖中:
[0021]圖1a示出了根據(jù)本發(fā)明一個(gè)實(shí)施例的DNS安全查詢方法的流程圖;
[0022]圖1b示出了 windows系統(tǒng)網(wǎng)絡(luò)體系結(jié)構(gòu)示意圖。
[0023]圖2示出了根據(jù)本發(fā)明另一個(gè)實(shí)施例的DNS安全查詢方法的流程圖;
[0024]圖3示出了根據(jù)本發(fā)明另一個(gè)實(shí)施例的DNS安全查詢方法的流程圖;
[0025]圖4示出了根據(jù)本發(fā)明另一個(gè)實(shí)施例的DNS安全查詢方法的流程圖;
[0026]圖5示出了根據(jù)本發(fā)明一個(gè)實(shí)施例的DNS安全查詢裝置的結(jié)構(gòu)框圖。
【具體實(shí)施方式】
[0027]下面將參照附圖更詳細(xì)地描述本公開的示例性實(shí)施例。雖然附圖中顯示了本公開的示例性實(shí)施例,然而應(yīng)當(dāng)理解,可以以各種形式實(shí)現(xiàn)本公開而不應(yīng)被這里闡述的實(shí)施例所限制。相反,提供這些實(shí)施例是為了能夠更透徹地理解本公開,并且能夠?qū)⒈竟_的范圍完整的傳達(dá)給本領(lǐng)域的技術(shù)人員。
[0028]在描述本發(fā)明各實(shí)施例之前,簡要介紹與本發(fā)明密切相關(guān)的DNS及DNSSEC的原理。
[0029]用戶在用域名訪問某一個(gè)網(wǎng)站時(shí),客戶端一般會(huì)通過一個(gè)域名解析服務(wù)器把域名轉(zhuǎn)換成IP地址。域名解析服務(wù)器一般需要通過查詢根域名服務(wù)器、頂級(jí)域名服務(wù)器、權(quán)威域名服務(wù)器等多級(jí)服務(wù)器節(jié)點(diǎn),以遞歸查詢的方式最終獲得目標(biāo)服務(wù)器的IP地址,然后交給客戶端。在此過程中,攻擊者都可以假冒應(yīng)答方給請(qǐng)求方發(fā)送一個(gè)偽造的響應(yīng),其中包含一個(gè)錯(cuò)誤的IP地址。發(fā)送請(qǐng)求的客戶端或者解析服務(wù)器接受了偽造的應(yīng)答,導(dǎo)致用戶無法訪問正常網(wǎng)站,甚至可以把重定向到一個(gè)偽造的網(wǎng)站上去。
[0030]DNSSEC是為了解決傳統(tǒng)DNS系統(tǒng)中的上述不安全性,由IETF(國際互聯(lián)網(wǎng)工程任務(wù)組)制定的一套配合現(xiàn)有DNS系統(tǒng)的安全擴(kuò)展系統(tǒng),目標(biāo)在于解決各種DNS緩存欺騙、DNS攻擊、DNS劫持等問題。
[0031]DNSSEC通過為DNS中的數(shù)據(jù)添加數(shù)字簽名信息,使得每個(gè)節(jié)點(diǎn)的DNS服務(wù)器在得到應(yīng)答信息后可以通過檢查此簽名信息來判斷應(yīng)答數(shù)據(jù)是否真實(shí),從而為DNS數(shù)據(jù)提供數(shù)據(jù)來源驗(yàn)證和數(shù)據(jù)完整性檢驗(yàn)。為此,DNSSEC在數(shù)據(jù)包中引入了新的資源記錄,包括:用于存儲(chǔ)驗(yàn)證DNS數(shù)據(jù)的公鑰;用于存儲(chǔ)DNS資源記錄的數(shù)字簽名;以及上級(jí)授權(quán)簽名等。其中,數(shù)字簽名是使用私鑰對(duì)資源記錄的摘要信息加密生成的;公鑰對(duì)應(yīng)于加密用的私鑰。上級(jí)授權(quán)簽名是DNS服務(wù)器的上一級(jí)節(jié)點(diǎn)對(duì)該DNS服務(wù)器的公鑰散列值的簽名,用于防止公鑰被偽造。通過上級(jí)授權(quán)簽名,在各級(jí)節(jié)點(diǎn)之間配置成信任鏈。
[0032]圖1a示出了根據(jù)本發(fā)明一個(gè)實(shí)施例的DNS安全查詢方法的流程圖,本發(fā)明的方法應(yīng)用于發(fā)起DNS查詢的客戶端,如PC中。如圖1a所示,方法包括如下步驟:
[0033]步驟SI 10,捕獲客戶端待發(fā)送的DNS請(qǐng)求數(shù)據(jù)包,將DNS請(qǐng)求數(shù)據(jù)包轉(zhuǎn)換為對(duì)應(yīng)的DNSSEC請(qǐng)求數(shù)據(jù)包。
[0034]DNSSEC在各級(jí)服務(wù)器節(jié)點(diǎn)中部署,通過簽名驗(yàn)證保證數(shù)據(jù)的真實(shí)性。但最終接收DNS查詢結(jié)果的客戶端并不檢查DNS服務(wù)器返回的DNS記錄中包含的簽名。因此,如果在此階段發(fā)生DNS欺騙,上述的DNSSEC部署并不能識(shí)別。
[0035]本發(fā)明實(shí)施例提供了一種方法,在客戶端中對(duì)返回的包含查詢結(jié)果的資源記錄的真實(shí)性進(jìn)行驗(yàn)證,進(jìn)一步保證DNS查詢結(jié)果的真實(shí)性和完整性。
[0036]如上文所述,DNSSEC的數(shù)據(jù)包中增加了幾種資源記錄,這些資源記錄在各級(jí)域名解析服務(wù)器之間的查詢以及響應(yīng)中被使用。但客戶端的操作系統(tǒng)中并不支持以DNSSEC的方式與DNS服務(wù)器通信。因此,客戶端系統(tǒng)中域名解析的相關(guān)接口只能形成DNS請(qǐng)求數(shù)據(jù)包而無法形成帶有上述資源記錄的DNSSEC請(qǐng)求數(shù)據(jù)包,不能直接與域名解析服務(wù)器之間以DNSSEC方式進(jìn)行請(qǐng)求和應(yīng)答。
[0037]在本發(fā)明提供的DNS安全查詢方法中,以自定義的函數(shù)或接口捕獲客戶端待發(fā)送的DNS請(qǐng)求數(shù)據(jù)包,并將其轉(zhuǎn)換為DNSSEC請(qǐng)求數(shù)據(jù)包。圖1b為windows系統(tǒng)網(wǎng)絡(luò)體系結(jié)構(gòu)示意圖。如圖1b所示,可利用鉤子函數(shù)捕獲客戶端系統(tǒng)應(yīng)用層(也稱用戶層)的DNS解析接口以獲取DNS請(qǐng)求數(shù)據(jù)包,并在鉤子函數(shù)中將DNS請(qǐng)求數(shù)據(jù)包轉(zhuǎn)換為符合DNSSEC形式的DNSSEC請(qǐng)求數(shù)據(jù)包。另外,還可以在客戶端系統(tǒng)內(nèi)核層的協(xié)議驅(qū)動(dòng)層,或客戶端傳輸層驅(qū)動(dòng)接口層(TDI)中進(jìn)行捕獲和轉(zhuǎn)換,詳見下文實(shí)施例介紹。
[0038]具體地,將DNS請(qǐng)求數(shù)據(jù)包轉(zhuǎn)換為對(duì)應(yīng)的DNSSEC請(qǐng)求數(shù)據(jù)包包括在DNS請(qǐng)求數(shù)據(jù)包中添加DNSSEC請(qǐng)求數(shù)據(jù)包具有的資源記錄。
[0039]步驟S120,發(fā)送DNSSEC請(qǐng)求數(shù)據(jù)包至DNS服務(wù)器。
[0040]將上述轉(zhuǎn)換后得到的DNSSEC請(qǐng)求數(shù)據(jù)包傳遞給系統(tǒng)中的發(fā)送接口,調(diào)用該發(fā)送接口將DNSSEC請(qǐng)求數(shù)據(jù)包發(fā)送至DNS服務(wù)器。
[0041]步驟S130,接收DNS服務(wù)器返回的DNSSEC響應(yīng)數(shù)據(jù)包。
[0042]調(diào)用系統(tǒng)中的接收接口接收DNSSEC響應(yīng)數(shù)據(jù)包。服務(wù)器返回的DNSSEC