張 飛,雒江濤,何 宸,王俊霞,江佐琦,王孟楠
(1.重慶郵電大學(xué) 通信與信息工程學(xué)院, 重慶 400065; 2. 重慶郵電大學(xué) 電子信息與網(wǎng)絡(luò)工程研究院, 重慶 400065)
最初的互聯(lián)網(wǎng)設(shè)計目的是解決主機之間通信,但由于其協(xié)議強大的兼容性,承載起了無數(shù)的應(yīng)用,并取得巨大的成功。不過,隨著大規(guī)模的內(nèi)容共享和物聯(lián)網(wǎng)應(yīng)用日益普及,基于主機地址的路由和面向連接的安全機制逐漸暴露出更多的不足。為了克服IP網(wǎng)絡(luò)所面臨的挑戰(zhàn),以命名數(shù)據(jù)網(wǎng)絡(luò)(named data networking, NDN)[1]為代表的未來互聯(lián)網(wǎng)革命性設(shè)計被提出,旨在建立以基于內(nèi)容的尋址和有狀態(tài)轉(zhuǎn)發(fā)為核心的全新網(wǎng)絡(luò)架構(gòu)[2]。
在NDN的設(shè)計中,網(wǎng)絡(luò)中傳輸?shù)陌譃?種:興趣(interest)包和數(shù)據(jù)(data)包。每個路由器包括3種重要的數(shù)據(jù)結(jié)構(gòu):內(nèi)容緩存(content store , CS)、未決興趣表(pending interest table, PIT)和轉(zhuǎn)發(fā)信息庫(forwarding informationbase, FIB)。其中,CS緩存流經(jīng)的數(shù)據(jù)包,用于響應(yīng)后續(xù)興趣包的請求;FIB存儲興趣包的轉(zhuǎn)發(fā)策略,包含名字前綴、輸出接口等字段。路由器收到興趣包后,首先檢查CS是否存在與興趣包名字匹配的數(shù)據(jù),若存在,則將匹配的數(shù)據(jù)包沿興趣包到達的相反路徑,原路返回到請求節(jié)點,并且丟棄該已被滿足的興趣包;若不存在,路由器查詢PIT中是否包含該興趣包名字的條目,若PIT中存在匹配的條目,則在該條目中追加該興趣包的來源接口,并丟棄該興趣包;若不存在,則根據(jù)名字最長前綴匹配原則查詢FIB,將該興趣包沿查詢得到的輸出接口轉(zhuǎn)發(fā)至下一跳路由器,并在PIT中增加條目。
NDN中基于內(nèi)容的路由機制使得IP網(wǎng)絡(luò)中針對特定主機的分布式拒絕服務(wù)(distributed denial of service, DDoS)失效;然而,由于路由器中記錄轉(zhuǎn)發(fā)信息的PIT成為易受攻擊的對象,因此形成NDN中新的DDoS攻擊形式——興趣洪泛攻擊(interest flooding attack, IFA)。比如,攻擊者通過發(fā)送大量惡意興趣包請求不存在的內(nèi)容[3],這些惡意請求被緩存在中間路由器的PIT中直至超時才被清除,從而使PIT資源耗盡,正常的請求因無法創(chuàng)建PIT條目而被丟棄,嚴重危害了NDN的安全。因此,針對IFA防御的研究極為必要。
單純的IFA檢測與緩解方案被廣泛研究。最直接的檢測方法基于PIT的統(tǒng)計閾值,比如PIT興趣滿足度、PIT占用空間或占用率[4]等。較復(fù)雜的檢測方法有基于信息熵[5]、模糊邏輯[6]、博弈論[7]以及基尼不純度[8]的方法。常見的緩解方案通過降低可疑流量來源端口的興趣包輸入速率?;诮y(tǒng)計特征的檢測方法的優(yōu)點是檢測速度較快,缺點是對于高速率突發(fā)流量,誤檢率較高。而且基于窗口的檢測方案,只能檢測出攻擊發(fā)生時刻,而對于連續(xù)的攻擊檢測效率不高。
部分學(xué)者提出基于機器學(xué)習(xí)算法的防御方案,如基于SVM(support vector machine)[9]及徑向基函數(shù)神經(jīng)網(wǎng)絡(luò)[10]的方案,但是仍然無法區(qū)別正常用戶的合法請求。此外,有學(xué)者提出通過修改路由器PIT或CS功能的防御方案,如文獻[11]摒棄PIT,提出了一種無狀態(tài)轉(zhuǎn)發(fā)的ICN(information-centric networking )網(wǎng)絡(luò)架構(gòu),但這類方法需要在興趣包中加入字段進行路由,使得計算開銷大,兼容性差,較難實現(xiàn)大規(guī)模部署。
綜合已有的研究,至今缺乏較為系統(tǒng)的防御方案,不僅能及時準確地檢測IFA攻擊,而且能采取有效措施降低攻擊對網(wǎng)絡(luò)產(chǎn)生的危害,保證正常用戶的請求不被影響。本文提出一種基于粒子群優(yōu)化的后向傳播神經(jīng)網(wǎng)絡(luò)算法的IFA檢測方法,并結(jié)合基于基尼不純度的惡意前綴識別方法[8],以及興趣包回溯方案[12]緩解攻擊危害,旨在探索一種較為系統(tǒng)的防御方案。
BP(back propagation, BP)神經(jīng)網(wǎng)絡(luò)是目前應(yīng)用最廣泛的神經(jīng)網(wǎng)絡(luò)[13],是一種有效的多層神經(jīng)網(wǎng)絡(luò)學(xué)習(xí)方法,其主要特點是前向傳遞信號,后向傳播誤差,通過不斷調(diào)節(jié)網(wǎng)絡(luò)權(quán)重值以及偏置值,使得網(wǎng)絡(luò)的最終輸出與期望輸出盡可能接近,直至達到最大迭代次數(shù)M,或者誤差小于設(shè)定的最小誤差ε。
BP神經(jīng)網(wǎng)絡(luò)拓撲結(jié)構(gòu)包括輸入層、隱含層和輸出層。本文要解決的問題是二分類問題,選取了4個特征:PIT條目數(shù),滿足興趣包數(shù)目,收到興趣包數(shù)目以及收到的Data包數(shù)與發(fā)出的興趣包數(shù)的比值。隱含層個數(shù)根據(jù)實際需求進行調(diào)整。本文的BP神經(jīng)網(wǎng)絡(luò)結(jié)構(gòu)采用4-10-2,如圖1。
粒子群優(yōu)化算法是受人工生命研究結(jié)果的啟發(fā)、通過模擬鳥群覓食過程中的遷徙和群聚行為而提出的一種基于群體智能的全局隨機搜索算法[14]。由于粒子群優(yōu)化算法(particle swarm optimization, PSO)操作簡單、收斂速度快,因此在函數(shù)優(yōu)化、圖像處理、大地測量等眾多領(lǐng)域都得到了廣泛的應(yīng)用。
BP神經(jīng)網(wǎng)絡(luò)的閾值和權(quán)值是隨機初始化的,導(dǎo)致其收斂速度較慢,容易陷入局部極小值,所以本文引入粒子群優(yōu)化算法來優(yōu)化BP網(wǎng)絡(luò),加快其收斂速度。首先,將BP神經(jīng)網(wǎng)絡(luò)權(quán)值和閾值進行編碼,然后初始化粒子群的位置和速度,接著使用粒子群算法進行迭代獲得全局最佳值,最后再將得到的編碼解碼用于初始化BP神經(jīng)網(wǎng)絡(luò)的權(quán)值及閾值。算法的流程如圖2。
BP神經(jīng)網(wǎng)絡(luò)具有高度的并行結(jié)構(gòu)和并行處理能力,可以逼近任何非線性函數(shù),能夠很好地解決非線性問題。此外,BP神經(jīng)網(wǎng)絡(luò)具有很強的容錯性、魯棒性,以及強大的學(xué)習(xí)分類能力,被廣泛地應(yīng)用于分類問題。同時,本文選取的幾個特征值關(guān)聯(lián)性較強,使得其他的分類算法效果不佳,所以將BP神經(jīng)網(wǎng)絡(luò)用于網(wǎng)絡(luò)攻擊的檢測,使用網(wǎng)絡(luò)中海量的訓(xùn)練數(shù)據(jù),對神經(jīng)網(wǎng)絡(luò)進行訓(xùn)練,能夠得到一個準確的分類模型。
本文引入PSO對BP神經(jīng)網(wǎng)絡(luò)進行優(yōu)化,通過PSO算法來初始化網(wǎng)絡(luò)的閾值和權(quán)值,降低網(wǎng)絡(luò)誤差。優(yōu)化后的算法有更高的準確性,且收斂速度得到明顯提升。但是,由于PSO算法的復(fù)雜度較高,引入PSO優(yōu)化之后計算開銷增加,所需的訓(xùn)練時間增加。但本文是將訓(xùn)練好的網(wǎng)絡(luò)用于網(wǎng)絡(luò)攻擊檢測,對訓(xùn)練的實時性要求不高,所以本文使用PSO-BP神經(jīng)網(wǎng)絡(luò)是可行的。
在特征值選取上,本文通過對比網(wǎng)絡(luò)中發(fā)生IFA攻擊、突發(fā)流量時以及正常時期的各個數(shù)據(jù)的變化,選取在網(wǎng)絡(luò)狀態(tài)改變時發(fā)生明顯變化的數(shù)值作為特征值。通過分析選取以下4個數(shù)據(jù)作為特征。
1)PIT條目數(shù):在時間間隔Δt內(nèi)的路由器中PIT條目數(shù);
2)滿足興趣包數(shù)目:在時間間隔Δt內(nèi),路由器中被滿足的興趣包總數(shù);
3)收到興趣包數(shù)目:在時間間隔Δt內(nèi),路由器中收到的興趣包總數(shù);
4)λdi:在時間間隔Δt內(nèi),路由器收到的Data包數(shù)與發(fā)出的興趣包數(shù)的比值。
這4個特征變量具有代表性,當(dāng)網(wǎng)絡(luò)中發(fā)生IFA攻擊時,PIT條目數(shù)和收到興趣包數(shù)會急劇增加,但是滿足興趣包數(shù)以及λdi會減小。當(dāng)網(wǎng)絡(luò)中發(fā)生突發(fā)流量時,網(wǎng)絡(luò)中的PIT條目數(shù)和收到興趣包數(shù)有所上升,λdi會下降,但是滿足興趣包數(shù)會上升。選取的這4個特征,包括了PIT的狀態(tài)以及CS狀態(tài)的變化,可以很有效地區(qū)分網(wǎng)絡(luò)中的狀態(tài)。
在網(wǎng)絡(luò)中收集數(shù)據(jù)用于分類模型的訓(xùn)練,其中,訓(xùn)練數(shù)據(jù)的格式表示為{(x1,y1),(x2,y2),…,(xn,yn)},訓(xùn)練數(shù)據(jù)集中包含n條已分類的訓(xùn)練數(shù)據(jù),其中,xi=(xi(1),xi(2),…,xi(N))是選取的N維特征向量,yi∈{c1,c2,…,cK}屬于K類中的一類。每個x包含了本文選取的特征,每個y有2種取值分別代表2個類別:‘0’代表該時間段沒有發(fā)生IFA攻擊,‘1’代表該時間段發(fā)生IFA攻擊。
本文通過在ndnSIM仿真平臺上模擬正常流量、突發(fā)流量以及攻擊流量,對網(wǎng)絡(luò)中的數(shù)據(jù)進行標記,構(gòu)建訓(xùn)練數(shù)據(jù)集。然后,用訓(xùn)練數(shù)據(jù)集對BP網(wǎng)絡(luò)進行訓(xùn)練得到一個分類模型,用于檢測網(wǎng)絡(luò)中的IFA攻擊。當(dāng)網(wǎng)絡(luò)中檢測到發(fā)生IFA攻擊后,啟動惡意前綴識別程序。
本文采用基于基尼不純度(Gini impurity)的可疑前綴識別方案[8]。在NDN網(wǎng)絡(luò)中,路由器可以記錄每個時間段的興趣包前綴。受IFA影響,興趣包前綴分布的改變會導(dǎo)致基尼不純度發(fā)生變化,以此作為識別可疑前綴的依據(jù)。攻擊前時間段的興趣包前綴集合記為S1,IFA攻擊時的興趣包前綴集合記為S2,S1和S2集合中的前綴基本一致。
S為一個集合,Pj是集合S中j類出現(xiàn)的概率,該集合的基尼不純度表示為
(1)
對于前綴i,將P1(i)記為i在集合S1中的概率,P2(i)記為i在集合S2中的概率。對集合S2中興趣包前綴i,用集合S1中的P1(i)替換集合S2中的P2(i),得到一個新的集合S'2,用 (2) 式計算由興趣包前綴i帶來的基尼不純度的差異。
ΔGinii=Gini(S′2)-Gini(S2)
(2)
對集合S2中的每個興趣包前綴i,計算它的ΔGinii,并將ΔGinii<0的興趣包前綴標記為可疑前綴。
當(dāng)確定攻擊前綴之后,立即采取緩解措施,采用興趣包回溯方案[12]對惡意興趣包進行限制。檢測到攻擊的路由器生成一個虛假的數(shù)據(jù)包用于滿足惡意請求,在原始數(shù)據(jù)包格式的基礎(chǔ)上增加一個標志位,用于區(qū)分是否是虛假數(shù)據(jù)包。虛假數(shù)據(jù)包的內(nèi)容是可疑前綴。
虛假數(shù)據(jù)包沿著請求興趣包的路徑返回到連接攻擊者的邊緣路由器,邊緣路由器收到虛假數(shù)據(jù)包后,首先提取出興趣包中的攻擊興趣包前綴,然后限制該前綴的請求興趣包,從而達到IFA的防御效果。
本文使用開源ndnSIM[15]仿真平臺對本文提出的方案進行驗證。本文將基于PSO-BP算法的IFA檢測機制的檢測結(jié)果和基于基尼不純度的IFA檢測方案結(jié)果進行對比;并且以PIT使用率為指標對所提方案的防御效果進行了分析評估。
本文使用small-scale tree topology拓撲圖如圖3。實驗的參數(shù)設(shè)計如表1,正常用戶Cx發(fā)送的請求符合Zipf-Mandelbrot分布,每秒發(fā)送20~100個興趣包;攻擊用戶A1發(fā)送的惡意請求符合Uniform分布,每秒發(fā)送300~1 100個興趣包。正常用戶B1發(fā)送的突發(fā)流量請求符合Zipf-Mandelbrot分布,每秒發(fā)送300~1 100個興趣包。鏈路時延均為10 ms,數(shù)據(jù)帶寬均為100 Mbit/s。其余的參數(shù)為默認值。
分別在5~15 s生成300 packets/s的網(wǎng)絡(luò)突發(fā)流量,在55~65 s生成600 packets/s的IFA攻擊。突發(fā)流量是指高于網(wǎng)絡(luò)中平均流量的突發(fā)正常請求,攻擊流量是指IFA用戶發(fā)起的攻擊請求。圖4為網(wǎng)絡(luò)狀態(tài)發(fā)生改變時,所選特征值的變化。從圖4中可以看出,在網(wǎng)絡(luò)中出現(xiàn)突發(fā)流量時,PIT條目數(shù)、收到的興趣包數(shù)及滿足的興趣包數(shù)會上升,突發(fā)流量會使得路由器收到的Data包數(shù)與發(fā)出的興趣包數(shù)的比值有所下降。當(dāng)網(wǎng)絡(luò)中出現(xiàn)IFA攻擊時,PIT條目數(shù)急劇上升為原來的約30倍,收到興趣包數(shù)會急劇上升到原來的4倍,滿足興趣包數(shù)下降為原來的50%左右,收到的Data包數(shù)與發(fā)出的興趣包數(shù)的比值急劇下降為原來的10%。
表1 實驗參數(shù)Tab.1 Experimental parameters
在實驗階段,獲取網(wǎng)絡(luò)中各種網(wǎng)絡(luò)狀態(tài)下的特征數(shù)據(jù),構(gòu)建訓(xùn)練數(shù)據(jù)集用于BP神經(jīng)網(wǎng)絡(luò)分類模型的訓(xùn)練。實驗中,部分參數(shù)設(shè)置如表2,節(jié)點Cx為正常用戶請求,速率為20~100 packets/s,并且有內(nèi)容提供者P1回應(yīng)該請求;節(jié)點A1為網(wǎng)絡(luò)中的IFA攻擊用戶,請求不存在的內(nèi)容,模擬IFA攻擊,請求速率為300~1 100 packets/s;節(jié)點B1請求存在的內(nèi)容,模擬網(wǎng)絡(luò)中的突發(fā)流量,速率為300~1 100 packets/s,時間為0~1 000 min。
表2 訓(xùn)練數(shù)據(jù)獲取的實驗參數(shù)Tab.2 Experimental parameters of training data acquisition
3.2.1 檢測方案的準確性
PSO-BP神經(jīng)網(wǎng)絡(luò)的相關(guān)參數(shù)設(shè)置為:BP網(wǎng)絡(luò)中,采用3層神經(jīng)網(wǎng)絡(luò)(一個輸入層,一個輸出層,一個單隱層),輸入層神經(jīng)元數(shù)為4,隱含層神經(jīng)元數(shù)為10,輸出層的神經(jīng)元數(shù)為2。激活函數(shù)為sigmoid函數(shù),最大訓(xùn)練次數(shù)M為2 000,最大的允許誤差ε為0.005,學(xué)習(xí)速率為0.015。PSO算法中,粒子群規(guī)模為50,最大迭代次數(shù)設(shè)置為200,加速度常數(shù)c1,c2均設(shè)置為2,粒子維度d由(3)式確定為72,速度為[-1,1],位置為[-1.1]。
d=m·n1+n·n1+n1+n
(3)
(3)式中:m為輸入節(jié)點數(shù);n1為隱層節(jié)點數(shù);n為輸出節(jié)點數(shù)。
本文的時間間隔Δt設(shè)置為1 s。為了評測PSO-BP分類器的分類效果,采用的指標為:真陽性率(true positive rate, TPR),即正確檢測時間窗口發(fā)生攻擊;假陽性率(false positive rate, FPR),即誤檢測出窗口發(fā)生攻擊。使用60 000條數(shù)據(jù)訓(xùn)練得到的神經(jīng)網(wǎng)絡(luò)模型對網(wǎng)絡(luò)中的攻擊進行檢測。在檢測期間,隨機地加入了突發(fā)網(wǎng)絡(luò)流量,突發(fā)流量有對應(yīng)的內(nèi)容提供者回應(yīng)請求。
每個正常用戶的請求速率在20~100 packets/s變化,在仿真階段隨機加入了速率為300~1 100 packets/s突發(fā)流量,攻擊用戶的請求速率在300~1 100 packets/s的實驗條件下,仿真時間為300 s。2種檢測方案的檢測結(jié)果如圖5。實驗結(jié)果表明,本文提出的基于PSO-BP的檢測方案的檢測效果優(yōu)于基于基尼不純度的檢測方案:真陽率要高,假陽率要低。從圖5中曲線可以看出,即使在攻擊速率較低的情況下,本方案的真陽率超過了0.912 5,假陽率低于0.063 9,達到了較好的檢測效果。隨著攻擊速率的提高,本方案的真陽率逐漸提高,假陽率一直維持在較低的水平。
表3是基于PSO-BP方案、基于基尼不純度方案以及BP算法的檢測準確率Acc,計算公式為
(4)
(4)式中:TP為正例被檢測為正例的數(shù)目;TN為負例被檢測為負例的數(shù)目;P為正例數(shù)目;N為負例數(shù)目。
從表3中可以看出,本方案的檢測準確率超過93%,高于基于基尼不純度的檢測方案;并且,引入PSO優(yōu)化后,檢測的準確率與傳統(tǒng)BP算法相比準確率提高了至少0.3%,BP算法的檢測準確率在0.924~0.957,而PSO-BP算法的檢測準確率在0.930~0.960。
表3 3種檢測方案的檢測準確率Tab.3 Detection accuracy of threedetection schemes
另外,本文用實驗驗證了2種方案檢測連續(xù)攻擊的準確性。在檢測期間,節(jié)點B1分別在1~5 s, 11~15 s向網(wǎng)絡(luò)發(fā)送了300 packets/s的突發(fā)流量,節(jié)點A1分別在6~10 s, 16~20 s發(fā)起了600 packets/s的IFA攻擊,在離散時間22 s, 24 s, 27 s, 29 s,網(wǎng)絡(luò)中發(fā)生了600 packets/s的IFA攻擊。
實驗結(jié)果如圖6。由圖6可知,使用基于PSO-BP算法的檢測方法能夠準確檢測出6~10 s, 16~20 s以及22 s, 24 s, 27 s, 29 s發(fā)生的IFA攻擊,沒有將突發(fā)流量誤檢測成IFA攻擊,并且可以在發(fā)生攻擊之后很快檢測出攻擊的發(fā)生。而基于基尼不純度的檢測方案,只能檢測到連續(xù)攻擊的開始時刻6 s,16 s,以及離散的22 s, 24 s, 27 s, 29 s, 對于連續(xù)攻擊和攻擊發(fā)生期間無法檢測。
基于窗口的檢測方案在發(fā)生連續(xù)攻擊時的檢測效果不佳,如果攻擊是由不同的惡意前綴發(fā)起的,那么將會影響后續(xù)的緩解,無法有效地防御IFA。而本文提出的基于PSO-BP算法在連續(xù)和離散的攻擊情況下,其檢測效果都較好。
本檢測方案存在一些不足,如果選取的時間間隔小于網(wǎng)絡(luò)的往返時延(round-trip time, RTT)時,無論是正常的興趣請求還是攻擊流量,都無法獲取對應(yīng)的數(shù)據(jù)響應(yīng),使得滿足興趣包特征值失效。但是,PIT條目數(shù)、收到興趣包數(shù)以及數(shù)據(jù)包與興趣包的比值仍然有效。此時,可以使用更多的樣本數(shù)據(jù)對模型進行訓(xùn)練,得到一個較好的模型。
3.2.2 緩解方案的有效性
通過實驗驗證所提IFA防御機制的效果,圖7是加入本文提出的IFA防御機制和沒有加入防御時,發(fā)生IFA攻擊時的PIT條目數(shù)曲線圖,虛線是沒有加入防御的結(jié)果,實線是加入防御機制的PIT條目數(shù)。在時間為15~25 s 時B1向網(wǎng)絡(luò)中發(fā)送了300 packets/s的突發(fā)流量,在時間為40~60 s之間,A1向網(wǎng)絡(luò)中發(fā)送了450 packets/s的IFA攻擊。結(jié)果顯示沒有加入防御的PIT條目數(shù)明顯急劇上升并且一直保持在較高的水平,而加入了防御之后,在攻擊開始時刻PIT條目數(shù)急劇上升,但隨即便下降并且保持在較低的水平。可見本文提出的IFA防御機制能夠有效地防御IFA。
NDN網(wǎng)絡(luò)中的安全問題一直備受關(guān)注,解決安全問題有助于推動NDN網(wǎng)絡(luò)走向?qū)嵱?。而興趣洪泛攻擊又是NDN中最大安全威脅,一直缺乏綜合的防御機制。本文提出一種基于PSO-BP神經(jīng)網(wǎng)絡(luò)的IFA檢測與防御的系統(tǒng)解決方案,解決了基于窗口檢測方法無法檢測連續(xù)攻擊的問題。實驗結(jié)果顯示檢測效果可以達到93%,并且通過緩解方案可以有效減輕對網(wǎng)絡(luò)的影響。