申普兵等
摘 要: 基于可信網(wǎng)絡(luò)提出的NDP協(xié)議在現(xiàn)實(shí)中受到多種安全威脅,為了保護(hù)NDP協(xié)議的安全,提出了一種NDP?ESP模型安全增強(qiáng)方案,不僅可有效保護(hù)NDP協(xié)議的安全,還可以實(shí)現(xiàn)節(jié)點(diǎn)之間的保密通信,增強(qiáng)了下一代網(wǎng)絡(luò)的安全性。
關(guān)鍵字: 鄰居發(fā)現(xiàn)協(xié)議; NDP?ESP模型; 安全增強(qiáng)方案; 組播密鑰管理
中圖分類號: TN915.08?34; TP3 文獻(xiàn)標(biāo)識碼: A 文章編號: 1004?373X(2014)11?0076?04
Abstract: NDP (neighbor discovery protocol) created for trustworthy networks is threatened by a variety of attacks in network. A scheme of NDP?ESP model to enhance the security of NDP is proposed, which not only enhance the security of NDP, but also realize the privacy communication between nodes. Anyway, it enhanced the security of next generation networks
Keywords: neighbor discovery protocol; NDP?ESP model; scheme of security enhancement; multicast key management
0 引 言
鄰居發(fā)現(xiàn)協(xié)議(Neighbor Discovery Protocol, NDP)是IPV6協(xié)議中的一個基礎(chǔ)協(xié)議,它整合了IPV4協(xié)議中的ARP、ICMP和路由廣播RA等協(xié)議,可以實(shí)現(xiàn)節(jié)點(diǎn)的地址解析、路由發(fā)現(xiàn)、重定向、無狀態(tài)地址自動配置、鄰居不可達(dá)地址檢測及重復(fù)地址檢測等功能[1]。由于NDP協(xié)議是基于可信網(wǎng)絡(luò)提出的,沒有對NDP報文采取保護(hù)措施,在現(xiàn)實(shí)的網(wǎng)絡(luò)中面臨很多安全威脅,如欺騙攻擊、中間人攻擊,重放攻擊等。為解決這個問題,IETF(Internet Engineering Task Force)正式提出的方案是SEND方案。由于SEND協(xié)議采用CGA[2]加密和公鑰密碼技術(shù),發(fā)送和接收SEND報文需要大量的計算,給網(wǎng)絡(luò)和節(jié)點(diǎn)造成很大負(fù)擔(dān),容易形成拒絕服務(wù)攻擊,并且SEND方案存在不能防御假冒MAC攻擊等缺陷,不利于方案的推廣。也可以采用PKI證書方案[3],但難以在網(wǎng)絡(luò)中確定一個CA,這些都不利于方案的推廣。本文提出了一種在NDP報文選項(xiàng)中增加源MAC地址選項(xiàng)和IP地址選項(xiàng),利用ESP協(xié)議來保護(hù),并根據(jù)實(shí)際網(wǎng)絡(luò)中的拓?fù)浣Y(jié)構(gòu)靈活采用組播密鑰管理協(xié)議的解決方案,極大提高了NDP協(xié)議的安全性和網(wǎng)絡(luò)信息傳輸?shù)陌踩浴?/p>
1 NDP協(xié)議及漏洞的分析
1.1 NDP協(xié)議
1.1.1 NDP報文
NDP協(xié)議是通過NDP報文的交互來實(shí)現(xiàn)功能的。NDP報文是ICMPV6報文的一部分,目前共定義了5種ICMPV6報文,分別是:RS(代碼133)/RA(代碼134)報文、NS(代碼135)/NA(代碼136)報文、重定向報文(代碼137)。
RS/RA報文功能:路由器周期性地發(fā)送組播路由器宣告(RA)報文,宣告它的存在以及配置的鏈路和網(wǎng)絡(luò)參數(shù),或者對路由器請求(RS)報文做出響應(yīng)。路由器發(fā)現(xiàn)可以用來定位信任的路由器,也可以用來獲得與地址自動配置相關(guān)的前綴和參數(shù)。NS/NA報文功能:通過交互鄰居請求(NS)報文和鄰居宣告(NA)報文來解析IPV6地址為鏈路層地址(MAC地址),可以實(shí)現(xiàn)鄰居不可達(dá)檢測和重復(fù)地址檢測功能;重定向報文功能:將主機(jī)重定向到一個更好的下一跳路由器,或向主機(jī)通告目的節(jié)點(diǎn)實(shí)際上就是鄰居節(jié)點(diǎn)。
1.1.2 NDP協(xié)議的數(shù)據(jù)結(jié)構(gòu)
數(shù)據(jù)結(jié)構(gòu)就是IPv6節(jié)點(diǎn)需要為每一個接口維護(hù)的各種信息表格。一般主機(jī)需要維護(hù)鄰居緩存表、目的地緩存表、前綴列表、默認(rèn)路由器列表等4個緩存表。NDP報文交互的目的就是改變節(jié)點(diǎn)緩存表的信息,從而實(shí)現(xiàn)NDP協(xié)議功能。
鄰居緩存表:鄰居緩存表與IPV4中的ARP緩存表類似,負(fù)責(zé)維護(hù)最近流量所送往鄰居的信息列表。緩存表中包含了IPV6單播地址及其相對應(yīng)的數(shù)據(jù)鏈路層地址(MAC),設(shè)備通過收到的鄰居宣告報文來維護(hù)該緩存表。
目的地緩存表:與鄰居緩存表相似,目的緩存表維護(hù)的是流量最近被發(fā)送的目的地列表,包括其他鏈路或其他網(wǎng)絡(luò)上的目的地。此時的表項(xiàng)是下一跳路由器的鏈路層地址,目的地緩存表可以是鄰居緩存表的子集[4]。
前綴列表:由路由器通告報文攜帶,定義了可以直接到達(dá)的鄰居的一個IP地址范圍。
默認(rèn)路由器列表:包含鏈路上相對應(yīng)的路由器的IP地址,而且只有那些已知可達(dá)的路由器才有可能被選作默認(rèn)路由器。
1.2 NDP協(xié)議漏洞的分析
節(jié)點(diǎn)在通信過程中,首先通過查詢鄰居緩存、目的地緩存、前綴列表、默認(rèn)路由器列表等緩存表來進(jìn)行具體的操作,如下一跳確定、地址解析、鄰居不可達(dá)檢測和地址重復(fù)檢測等,因此,緩存中的信息對節(jié)點(diǎn)間的相互通信具有重要的作用。由于NDP功能發(fā)揮是通過節(jié)點(diǎn)之間的ICMPV6報文交互來完成的,接收節(jié)點(diǎn)在收到NDP報文后,提取信息參數(shù),立即對相關(guān)緩存進(jìn)行更新,如更新緩存中的鄰居信息,配置所在網(wǎng)絡(luò)中的網(wǎng)絡(luò)參數(shù)等[5]。
ICMPV6報文要通過網(wǎng)絡(luò)傳遞到相應(yīng)的節(jié)點(diǎn),如果報文通過的網(wǎng)絡(luò)是可信的,就不會產(chǎn)生安全問題,如果所在網(wǎng)絡(luò)不可信,就可能產(chǎn)生很多危害。如果NDP報文受到截獲,可能造成節(jié)點(diǎn)信息泄漏或產(chǎn)生中間人攻擊;如果NDP報文在傳輸中受到非法篡改,可能使接收節(jié)點(diǎn)更新錯誤的網(wǎng)絡(luò)參數(shù),配置錯誤的鄰居信息,造成拒絕服務(wù)攻擊或欺騙攻擊;攻擊者偽造非法的NDP報文發(fā)給節(jié)點(diǎn),導(dǎo)致接收節(jié)點(diǎn)更新非法的緩存參數(shù)和鄰居信息,也可造成欺騙攻擊或拒絕服務(wù)攻擊,這些都是由于NDP協(xié)議沒有保護(hù)造成的。
2 NDP協(xié)議安全增強(qiáng)方案
2.1 安全增強(qiáng)方案
在IPV6網(wǎng)絡(luò)中,根據(jù)節(jié)點(diǎn)的鄰居緩存更新機(jī)制,之所以存在NDP協(xié)議漏洞的攻擊,主要原因是NDP報文沒有進(jìn)行認(rèn)證以及源IP地址和MAC地址沒有綁定。解決的方法是對數(shù)據(jù)包源進(jìn)行認(rèn)證且對IP地址和MAC地址進(jìn)行綁定認(rèn)證,使之不能被修改。
2.1.1 ESP的保護(hù)機(jī)制
IETF規(guī)定,在IPV6協(xié)議中必須支持IPSEC協(xié)議。利用IPSEC?ESP對數(shù)據(jù)包進(jìn)行加密保護(hù),安全關(guān)聯(lián)中的SPI可以實(shí)現(xiàn)數(shù)據(jù)源的認(rèn)證;如果在NDP報文中加入IP地址和MAC地址,可以實(shí)現(xiàn)IP地址和MAC地址同時加密及認(rèn)證;利用散列函數(shù)計算的認(rèn)證數(shù)據(jù)可以檢驗(yàn)數(shù)據(jù)完整性;它的序列號計數(shù)器可以防止重放攻擊;在保護(hù)NDP協(xié)議的同時,還可對網(wǎng)絡(luò)通信數(shù)據(jù)進(jìn)行加密保護(hù)。
2.1.2 IP和MAC地址的綁定
由于ESP加密頭只保護(hù)數(shù)據(jù)包負(fù)載,不保護(hù)IP頭和各種擴(kuò)展頭,這就給攻擊者提供了可乘之機(jī)。根據(jù)NDP協(xié)議工作機(jī)制,對其有影響的是源IP地址和源MAC地址,如果能對源IP地址和MAC地址進(jìn)行保護(hù),則能避免針對IP地址和MAC地址的各種攻擊。
通過觀察已經(jīng)定義的5種NDP報文,共同點(diǎn)之一是都具有選項(xiàng)功能。如果在NDP數(shù)據(jù)包的選項(xiàng)中增加源MAC地址選項(xiàng)和源IP地址選項(xiàng),再利用ESP進(jìn)行加密和認(rèn)證處理,就可以實(shí)現(xiàn)對IP地址和MAC地址的有效保護(hù)。在接收端,先進(jìn)行ESP解密處理,然后用負(fù)載中的IP地址、MAC地址和數(shù)據(jù)包頭地址比對,相同則進(jìn)行緩存更新,不同則丟棄。
2.1.3 組播密鑰管理
由于RS/RA報文、NS報文是組播報文,所以在進(jìn)行安全關(guān)聯(lián)協(xié)商時,點(diǎn)對點(diǎn)的IKE已經(jīng)不能滿足鄰居發(fā)現(xiàn)協(xié)議中組播報文加密時組安全關(guān)聯(lián)協(xié)商的需要。需對IKE協(xié)議進(jìn)行改進(jìn),形成針對多點(diǎn)的組播密鑰協(xié)商協(xié)議GIKE,實(shí)現(xiàn)組播密鑰分發(fā)及管理。
2.2 NDP?ESP方案模型
由于ESP協(xié)議在加密時,只對數(shù)據(jù)包內(nèi)容進(jìn)行保護(hù),ICMPV6報文數(shù)據(jù)作為IPV6數(shù)據(jù)包的負(fù)載,可受到ESP加密保護(hù)。只要把IP地址和MAC地址放入NDP數(shù)據(jù)中,就可以實(shí)現(xiàn)IP地址和MAC地址的綁定及保護(hù)。
2.2.1 定義2種新選項(xiàng)
根據(jù)IETF的定義,所有NDP的ICMPV6消息都有相同的選項(xiàng)值格式,即采用(Type?Length?Value,TLV)格式[6],如圖1所示。
類型(Type):表示NDP協(xié)議選項(xiàng)的類型;長度(Length):表示整個選項(xiàng)的長度,不能為0,必須是8位組的整數(shù)倍,節(jié)點(diǎn)必須丟棄長度為0的NDP報文;值(Value):可變長度,表示選項(xiàng)的內(nèi)容。
目前,IETF已定義的NDP報文選項(xiàng)有8種[7]。為了達(dá)到IP地址和MAC地址同時認(rèn)證的目的,定義另外2種選項(xiàng)MAC地址選項(xiàng)和IP地址選項(xiàng),如圖2,圖3所示。
其中,類型:9;填充長度:在MAC參數(shù)后面填充一定數(shù)目字節(jié)的長度,在發(fā)送時全部置0,在接收端不作處理;保留:一個8位字段留作將來使用;MAC參數(shù):發(fā)送方的MAC地址,共6個字節(jié)。
其中,類型:10;填充長度:在IP參數(shù)后面填充一定數(shù)目字節(jié)的長度,在發(fā)送時全部置0,在接收端不作處理;保留:一個8位字段留作將來使用;IP地址參數(shù):發(fā)送方的IP地址,16個字節(jié)。
由于IP選項(xiàng)和MAC選項(xiàng)都在IPV6數(shù)據(jù)包的負(fù)載中,所以可以利用ESP加密頭對IP地址和MAC地址進(jìn)行加密處理。接收節(jié)點(diǎn)在收到以后進(jìn)行解密處理,然后與NDP數(shù)據(jù)包的源IP地址和MAC地址進(jìn)行比對,相同則更新緩存內(nèi)容,不同則直接舍棄。
2.2.2 NDP?ESP模型下的NDP報文
利用ESP加密頭進(jìn)行加密的NDP報文可分為普通模式和隧道模式,如圖4,圖5所示。
2.2.3 組播的密鑰協(xié)商協(xié)議GIKE[8-9]
在5種NDP協(xié)議報文中,只有鄰居宣告(RA)消息和重定向(Redirect)消息是單播信息,其他為組播消息。要進(jìn)行ESP處理,首先進(jìn)行安全密鑰的協(xié)商。在建立組播報文的安全關(guān)聯(lián)時,節(jié)點(diǎn)對節(jié)點(diǎn)的IKE協(xié)議不能用,要用組播密鑰分發(fā)協(xié)議GIKE。此時建立的安全關(guān)聯(lián)不是單個節(jié)點(diǎn)對節(jié)點(diǎn)的SA,而是一對多的GSA。GIKE結(jié)構(gòu)如圖6所示。
其中,GIKE模塊主要對組播報文的密鑰分發(fā)進(jìn)行協(xié)商,GSPDB,GSADB中存放著組播報文的安全策略數(shù)據(jù)庫和安全關(guān)聯(lián)數(shù)據(jù)庫。也可以根據(jù)網(wǎng)絡(luò)拓?fù)涞慕Y(jié)構(gòu),靈活選擇支持ESP加密頭的組播密鑰管理協(xié)議,再此不多作探究。
2.3 數(shù)據(jù)的處理過程[10]
根據(jù)NDP?ESP方案,ESP在加密過程中,對整個報文負(fù)載內(nèi)容進(jìn)行加密及認(rèn)證,NDP選項(xiàng)中的 IP地址和MAC地址作為數(shù)據(jù)包的內(nèi)容同樣得到加密及認(rèn)證,從而保證了IP地址和MAC地址的信任綁定。數(shù)據(jù)在處理過程中主要分為入包處理、出包處理及緩存更新等。
2.3.1 出包處理
第一步:節(jié)點(diǎn)在進(jìn)行NDP報文分發(fā)時,如果是一對一的通信,則要查詢SPD中的匹配記錄,再到SADB中去查詢適用的SA,如果有就進(jìn)行下一步的操作,如果沒有則利用IKE協(xié)議進(jìn)行SA的協(xié)商;如果是一對多的組播,則要查詢GSPD中的匹配信息,根據(jù)GSPD中的應(yīng)用策略,到GSADB中去查詢適用的GSA,如果有相關(guān)的GSA就進(jìn)行下一步的操作,如果沒有,則用GIKE組播密鑰協(xié)商協(xié)議進(jìn)行協(xié)商,建立合適的GSA;
第二步:IKE在進(jìn)行SA的創(chuàng)建時計數(shù)器單元要置0,ESP頭的SPI取對應(yīng)SA或GSA的SPI,ESP加密時序列號依次遞增;
第三步:根據(jù)SA或GSA相關(guān)參數(shù)加密數(shù)據(jù)包;
第四步:計算完整性校驗(yàn)值;最后,如需要分段,還要進(jìn)行分段處理。
2.3.2 入包處理
在接收到一個ESP加密數(shù)據(jù)包后,有沒有分段處理,先將這些分段進(jìn)行重新組合后再進(jìn)行ESP解密處理。
第一步:查看ESP加密頭的目的地、IP地址和其附帶的安全策略索引(SPI)到GSADB或SADB中去查詢合適的GSA或SA,如果沒有就丟掉此數(shù)據(jù)包,如果有就進(jìn)行下一步;
第二步:使用包中的SPI在進(jìn)入SPD中查找一條和包選擇符匹配的策略,如果和第一步找到的安全關(guān)聯(lián)不匹配,則舍棄,如果相匹配,則進(jìn)行下一步;
第三步:查看ESP加密頭中的序列號,如果此序列號與前面接收到的數(shù)據(jù)包序列號相同,則認(rèn)為非法,直接丟棄,如果不同則進(jìn)行下一步;
第四步:核對ICV(數(shù)據(jù)摘要),根據(jù)GIKE協(xié)商約定的算法,進(jìn)行ICV計算,之后與接收到的ICV進(jìn)行比對。不同則丟棄數(shù)據(jù)包,相同則進(jìn)行下一步;
第五步:解密數(shù)據(jù)包內(nèi)容,交給上一層處理。
2.3.3 更新緩存
接收節(jié)點(diǎn)在處理完NDP增強(qiáng)報文之后,提取出源IP地址和MAC地址,與NDP報文頭的源IP地址和源MAC地址作比對,都相同則更新緩存,不同則不更新緩存。
3 模型安全性分析
采用ESP加密頭的NDP報文增強(qiáng)方案可以對NDP協(xié)議進(jìn)行如下安全增強(qiáng)。
3.1 源認(rèn)證
在沒有采用NDP鄰居發(fā)現(xiàn)協(xié)議增強(qiáng)方案之前,節(jié)點(diǎn)在進(jìn)行交互時,無需對接收到的NDP報文進(jìn)行驗(yàn)證,直接接收并更新節(jié)點(diǎn)的鄰居緩存、目標(biāo)緩存及改變默認(rèn)路由器信息和路由前綴參數(shù)等。如果有惡意節(jié)點(diǎn)向網(wǎng)絡(luò)中發(fā)送虛假的NDP報文,就會讓節(jié)點(diǎn)存儲虛假的鄰居信息和網(wǎng)絡(luò)信息。如果采用ESP加密頭增強(qiáng)方案,節(jié)點(diǎn)在接收NDP報文以后,通過驗(yàn)證SPI,先進(jìn)行源驗(yàn)證,如果報文沒有通過驗(yàn)證就舍棄報文,通過就進(jìn)行下一步的處理。
3.2 IP地址和MAC地址同時認(rèn)證
在NDP報文中增加MAC地址和IP地址選項(xiàng),保證了IP地址和MAC地址一起加密與認(rèn)證。從NDP?ESP報文中提取出IP地址和MAC地址后,與IP頭中的IP地址和MAC地址相一致就更新節(jié)點(diǎn)的緩存,不一致就不進(jìn)行鄰居緩存更新。這樣就避免了攻擊者利用IP和MAC地址沒綁定而發(fā)起的各種攻擊。
3.3 抗重播攻擊
由于ESP加密報文頭中都有一個惟一的序列號,且隨著處理的數(shù)據(jù)報文依次增加。接收節(jié)點(diǎn)對重復(fù)ESP報文都視作非法,直接舍棄處理,可以防止惡意節(jié)點(diǎn)的重放攻擊。
3.4 可用于網(wǎng)絡(luò)數(shù)據(jù)的加密保護(hù)
ESP安全模型不僅對保護(hù)NDP協(xié)議的安全起到重要作用,也可以在節(jié)點(diǎn)進(jìn)行通信時,對通信報文進(jìn)行加密保護(hù)。可進(jìn)行點(diǎn)對點(diǎn)的保護(hù),也可以對IPV6組播報文進(jìn)行保護(hù),最大限度的保護(hù)了網(wǎng)絡(luò)數(shù)據(jù)傳輸?shù)陌踩?/p>
3.5 方案結(jié)果比對
NDP協(xié)議安全增強(qiáng)方案與IETF制定的SEND方案相對比,對網(wǎng)絡(luò)中常見的攻擊手段防范的效果見表1[11]。
由上表可見,針對IPV6網(wǎng)絡(luò)中的常見攻擊,IETF提出的SEND的方案可以解決,NDP?ESP方案可以解決,特別在對路由前綴欺騙攻擊防范時,SEND方案不能解決,NDP?ESP方案也可以解決;并且NDP?ESP方案還可以對網(wǎng)絡(luò)節(jié)點(diǎn)之間的數(shù)據(jù)傳輸進(jìn)行加密保護(hù)??梢奛DP?ESP方案具有一定的優(yōu)越性。
4 結(jié) 語
本文在介紹NDP協(xié)議功能及深入分析協(xié)議漏洞產(chǎn)生原因的基礎(chǔ)上,提出一種新的NDP協(xié)議保護(hù)方案,即NDP?ESP模型。詳細(xì)介紹了NDP?ESP報文數(shù)據(jù)處理的過程,并對模型的安全性進(jìn)行了分析。ESP加密頭的使用,不公保護(hù)了NDP協(xié)議的安全,利用修改的支持組密鑰分發(fā)管理的GIKE協(xié)議,可做到對網(wǎng)絡(luò)傳輸數(shù)據(jù)進(jìn)行加密,有力的維護(hù)了網(wǎng)絡(luò)安全。事實(shí)上,針對組播密鑰的管理,可以根據(jù)實(shí)際的網(wǎng)絡(luò)拓?fù)浣Y(jié)構(gòu)靈活選用支持ESP加密頭的組播密鑰管理協(xié)議,因此,該模型在實(shí)際操作中可行性很強(qiáng)。
參考文獻(xiàn)
[1] 楊志剛,張長河,祝躍飛.IPV6鄰居發(fā)現(xiàn)協(xié)議安全機(jī)制研究[J].計算機(jī)應(yīng)用,2006,26(4): 938?941.
[2] ARKKO J, KEMPF J, ZILL B, et al. RFC 3971: secure neighbor discovery (SEND) [S]. USA: Network Working Group, 2005.
[3] 張玉健,張?jiān)铝?基于PKI的IPv6安全鄰居發(fā)現(xiàn)協(xié)議[J].計算機(jī)工程,2008,34(8):187?189.
[4] GRAZIANI Rick. IPV6 Fundamentals [M].北京:人民郵電出版社,2013.
[5] 徐宇杰.IPV6深入分析[M].北京:清華大學(xué)出版社,2009.
[6] LI Qing, JINMEI Tatuya, SHIMA Keiichi.IPV6詳解[M].北京:人民郵電出版社,2009.
[7] 伍孝金.IPV6技術(shù)與應(yīng)用[M].北京:清華大學(xué)出版社,2010.
[8] 費(fèi)金龍,祝躍飛,劉雅輝.組播Internet密鑰協(xié)商的研究與實(shí)現(xiàn)[J].微電子學(xué)與計算機(jī),2006,23(2):185?188.
[9] 韓旭東,湯雋,郭玉東.新一代IPSec密鑰交換規(guī)范IKEv2的研究[J].計算機(jī)工程與設(shè)計,2007,28(11):2549?2558.
[10] 馮登國,徐靜.網(wǎng)絡(luò)安全原理與技術(shù)[M].北京:科學(xué)出版社,2010.
[11] 劉華春,戴慶光,蔣志平.基于IPSec的IPv6安全鄰居發(fā)現(xiàn)協(xié)議[J].計算機(jī)工程與設(shè)計,2011,32(2):513?515.