莫家威 朱 麒 劉凌伶
(1、柳州工學(xué)院,廣西 柳州545005 2、中國人民解放軍31648 部隊(duì),廣西 南寧530021)
按需距離矢量路由協(xié)議(AODV)是一種典型的按需路由協(xié)議,它廣泛應(yīng)用于車載自組網(wǎng)(Vehicular Ad Hoc Networks, VANET)中,并對(duì)VANET的發(fā)展起到了舉足輕重的作用。對(duì)于車載自組網(wǎng)而言,首先要考慮的就是路由協(xié)議要在保持穩(wěn)定鏈接的同時(shí)抵御惡意節(jié)點(diǎn)的攻擊,滿足現(xiàn)代交通的需要,因此本文將研究典型的車載自組網(wǎng)通信協(xié)議并提高其安全性能。
目前針對(duì)安全問題,AODV 協(xié)議有很多改進(jìn)方案,例如2019年,文獻(xiàn)[1]針對(duì)黑洞攻擊添加了混沌映射作為應(yīng)對(duì)手段。文獻(xiàn)[2]為了解決隱私泄露問題,對(duì)傳統(tǒng)簽名效率低的機(jī)制進(jìn)行改進(jìn),使用了身份驗(yàn)證的聚合簽名手段,提高簽名的效率。為了保護(hù)用戶隱私以及提高通信網(wǎng)絡(luò)的安全性,文獻(xiàn)[3]主要使用了RSU 算法作為改進(jìn)手段。然后經(jīng)過分析發(fā)現(xiàn)不能達(dá)到預(yù)期效果,并且只對(duì)特定攻擊手段有效。為此,為了解決當(dāng)前車聯(lián)網(wǎng)的安全性與效率不足的情況,文獻(xiàn)[4]在文獻(xiàn)[3]的基礎(chǔ)上使用了一種無證書的聚合簽名改進(jìn)方案,對(duì)隱私竊取的攻擊手段有一定防御效果。
針對(duì)車載自組網(wǎng)運(yùn)行環(huán)境中可能遭受到的安全攻擊,為了滿足車載自組網(wǎng)匿名性、安全性、認(rèn)證性、不可否認(rèn)性的安全需求,為了達(dá)到保護(hù)車載通信系統(tǒng)安全和隱私的目標(biāo),本文主要解決問題:采用基于模糊神經(jīng)網(wǎng)絡(luò)改進(jìn)的安全通信協(xié)議,在車輛通信過程中識(shí)別惡意攻擊節(jié)點(diǎn)與攻擊方式,抵御惡意攻擊。本文在之前的文獻(xiàn)[5]的研究基礎(chǔ)上,修改了參數(shù)的提取方式,提高了計(jì)算精確度。
本算法主要選擇節(jié)點(diǎn)的安全性影響面作為計(jì)算度量,并使用歸一化算法進(jìn)行預(yù)處理。然后使用模糊神經(jīng)神經(jīng)網(wǎng)絡(luò)對(duì)預(yù)處理結(jié)果進(jìn)行進(jìn)一步模糊計(jì)算,并在計(jì)算的同時(shí)不斷使用遺傳模擬算法,對(duì)所用參數(shù)進(jìn)行改進(jìn)。最后得到計(jì)算結(jié)果,可作為節(jié)點(diǎn)安全性的判斷依據(jù)在協(xié)議過程中使用。接著使用模糊神經(jīng)網(wǎng)絡(luò)對(duì)節(jié)點(diǎn)可信度進(jìn)行計(jì)算,并在計(jì)算過程中使用遺傳模擬退火進(jìn)行參數(shù)優(yōu)化。最后對(duì)計(jì)算得到的節(jié)點(diǎn)可信度,在路由過程中進(jìn)行判別。算法描述如圖1 所示。
圖1 算法描述
在改進(jìn)AODV算法中,選擇數(shù)據(jù)包內(nèi)容相同率、數(shù)據(jù)包發(fā)生率、節(jié)點(diǎn)相關(guān)性為計(jì)算基礎(chǔ),使用神經(jīng)網(wǎng)絡(luò)進(jìn)行計(jì)算,對(duì)節(jié)點(diǎn)性質(zhì)進(jìn)行分析判斷。
設(shè)節(jié)點(diǎn)i 的Ni個(gè)鄰居節(jié)點(diǎn)j 構(gòu)成集合Φi
則如公式(1)所示,Si,j(t) 表示歸一化處理后的數(shù)據(jù)包內(nèi)容相同率,Ti,j(t)表示數(shù)據(jù)包發(fā)生率,Ui,j(t)表示歸一化處理的節(jié)點(diǎn)節(jié)點(diǎn)相關(guān)性。其中,pi,j(t)為t 時(shí)刻的發(fā)包數(shù)量,spi,j(t)為重復(fù)數(shù)據(jù)包數(shù)量,△p(t)為發(fā)包數(shù)量的期望值。Ui,j(t)采用Adamic-Adar 指數(shù)衡量,N(i)為節(jié)點(diǎn)i 的鄰居集合,c 為兩個(gè)節(jié)點(diǎn)的鄰居集合中的共同鄰居,log k(c)為c 節(jié)點(diǎn)度的對(duì)數(shù)取值。
本文使用的模糊神經(jīng)網(wǎng)絡(luò)結(jié)構(gòu)如圖2 所示。
圖2 模糊神經(jīng)網(wǎng)絡(luò)
第一層為input 層。該層將輸入精確值,節(jié)點(diǎn)數(shù)量就是選取的車輛度量個(gè)數(shù)。該層的三個(gè)節(jié)點(diǎn)分別是S、T、U。
第二層為模糊化層,主要是對(duì)輸入的數(shù)值進(jìn)行模糊化。分別將S、T、U 轉(zhuǎn)換為三個(gè)模糊子集{高,中,低},可表示為{h,m,l},則共有3×3=9 個(gè)節(jié)點(diǎn)。Uij表示第i 個(gè)變量的第j 個(gè)模糊子集的隸屬度。本文采用高斯函數(shù),表示為公式(1),cij、σij均為輸入?yún)?shù),其中cij(i=1,2,3)決定高斯函數(shù)曲線的中心,而σij(j=1,2,3)則決定曲線的寬度。
本文使用遺傳模擬退火算法,對(duì)模糊神經(jīng)網(wǎng)絡(luò)進(jìn)行參數(shù)優(yōu)化。模擬遺傳退火算法的基本步驟為:
步驟1 參數(shù)初始化
群體規(guī)模M取50,最大迭代次數(shù)N 取200,交叉概率Pc,取值范圍[0.4,0.99];變異概率Pm,取值范圍[0.005,0.01],迭代計(jì)數(shù)n 初始化為0。
步驟2 初始化種群
染色體的編碼方法為:首先將第二層高斯函數(shù)的參數(shù)c 的定義域等分為3 份,在每個(gè)劃定的等分區(qū)間內(nèi)選取種群大小的隨機(jī)數(shù)分別作為中心值ci1、ci2、ci3的初始值;然后對(duì)于均值σij和連接權(quán)值ωk,在各自定義域中取隨機(jī)數(shù)作為初始值。將這些實(shí)數(shù)編碼成染色體,染色體長度為個(gè)參數(shù)的個(gè)數(shù)之和(本文中為45 個(gè))。具體的編碼方式如下:c11c12…c13σ11…σ33ω1…ω27。隨機(jī)生成M個(gè)初始解構(gòu)成初始種群,初始種群應(yīng)大于指定大小。
步驟3 輸出控制
在路由維護(hù)的過程中進(jìn)行數(shù)據(jù)收集,作為遺傳算法的參數(shù)優(yōu)化依據(jù)。目標(biāo)函數(shù)定義為公式(4)。其中yk為實(shí)際上模糊神經(jīng)網(wǎng)絡(luò)的輸出結(jié)果,Yk為算法期望的模糊神經(jīng)網(wǎng)絡(luò)輸出結(jié)果,E 為yk和YK的差方。
當(dāng)算法計(jì)算次數(shù)達(dá)到上限時(shí)(即n=N)結(jié)束,輸出計(jì)算結(jié)果。
當(dāng)某個(gè)體達(dá)到進(jìn)度要求(取值范圍[0.95,0.99]),輸出計(jì)算結(jié)果。如果沒有滿足要求結(jié)果,則進(jìn)入步驟4。
步驟4 遺傳操作
迭代次數(shù)n=n+1,進(jìn)行以下的選擇、交叉、變異操作,產(chǎn)生子代,判斷是否滿足輸出要求,滿足則輸出,不滿足則進(jìn)入模擬退火操作。
(1)選擇、復(fù)制。選擇當(dāng)前群體計(jì)算結(jié)果最好和最差的個(gè)體,設(shè)置一個(gè)全局最優(yōu)個(gè)體。若發(fā)現(xiàn)更好的計(jì)算結(jié)果,使用全局最優(yōu)個(gè)體替換最差個(gè)體。
(2)交叉。每個(gè)個(gè)體生成一個(gè)子交叉概率,取值范圍為[0,1]。如果r>Pc,則進(jìn)行交叉操作:假設(shè)個(gè)體A=a1a2…aL;個(gè)體B=b1b2…bL。L為個(gè)體長度,隨機(jī)產(chǎn)生一個(gè)參數(shù)i,取值范圍為[L, L-1]。
(3)變異。每個(gè)個(gè)體基因座上的基因值隨機(jī)生成一個(gè)子變異概率s。如果s<Pm,則變異該基因座。十進(jìn)制基因變異方法為在定義域內(nèi)取隨機(jī)數(shù)。
步驟5 模擬退火操作
對(duì)遺傳操作產(chǎn)生的新子代中的每一個(gè)個(gè)體進(jìn)行模擬退火操作。
(1)初始化參數(shù)。初溫t0,設(shè)為1000;迭代次數(shù)i=0;初始解s=s0,每一個(gè)ti有一個(gè)內(nèi)循環(huán)次數(shù)N,設(shè)為200,溫度下限設(shè)為0.2t0。
(2)內(nèi)循環(huán)。等溫循環(huán)。當(dāng)前溫度t=ti,循環(huán)執(zhí)行下列操作N次:
對(duì)s 基因座上的基因值進(jìn)行隨機(jī)正負(fù)0.005 擾動(dòng),產(chǎn)生新解s',使用公式(5)計(jì)算新解的適應(yīng)度,f()為適應(yīng)度函數(shù)。
(3)外循環(huán)。滿足終止條件,則導(dǎo)出當(dāng)前計(jì)算結(jié)果。反之降溫:ti+1=βti,i=i+1,β 為降溫速度,取0.95。
安全協(xié)議主要針對(duì)路由發(fā)起和路由維護(hù)協(xié)議過程進(jìn)行優(yōu)化。
2.5.1 路由發(fā)起。源節(jié)點(diǎn)需要與目的節(jié)點(diǎn)通信時(shí),首先執(zhí)行一個(gè)路由發(fā)起過程,向周圍鄰居廣播RREQ包。接收到RREQ包的鄰居節(jié)點(diǎn)依次執(zhí)行下列操作:
(1)檢查是否為環(huán)路,若是環(huán)路,則丟棄RREP 包。
(2)檢查是否為重復(fù)的RREQ 包,若是重復(fù),則丟棄該RREQ包。
(3)檢查是否已經(jīng)與源節(jié)點(diǎn)建立反向路由,否則應(yīng)與源節(jié)點(diǎn)建立反向路徑,產(chǎn)生上一跳的路由。
(4)鄰居節(jié)點(diǎn)內(nèi)設(shè)置一個(gè)初始值為0.5 的投遞率閾值。一個(gè)時(shí)間段內(nèi),鄰居節(jié)點(diǎn)將根據(jù)自身以及周圍鄰居的數(shù)據(jù)包投遞情況,更新投遞率閾值。當(dāng)節(jié)點(diǎn)投遞率大于0.5 或者大于投遞率閾值時(shí),則在轉(zhuǎn)發(fā)REEQ請(qǐng)求時(shí)考慮節(jié)點(diǎn)信任值。
(5)鄰居節(jié)點(diǎn)在考慮節(jié)點(diǎn)信任值時(shí),首先計(jì)算所有鄰居的平均信任值,對(duì)于信任值小于0.5 且小于平均信任值的節(jié)點(diǎn),標(biāo)記為處于不信任狀態(tài)的鄰居節(jié)點(diǎn),不參與當(dāng)前結(jié)點(diǎn)的路由過程。
(6)到達(dá)目的節(jié)點(diǎn)后發(fā)起過程結(jié)束。
2.5.2 路由維護(hù)。在AODV路由協(xié)議的路由維護(hù)階段中,鄰居之間每隔一段固定時(shí)間會(huì)發(fā)送生存周期為1 的HELLO消息包,主要是為了保持和周圍鄰居的連接。改進(jìn)方案為了進(jìn)行可信度計(jì)算,會(huì)在HELLO消息中封裝該節(jié)點(diǎn)的所有鄰居信息,提供給改進(jìn)算法進(jìn)行計(jì)算。
路由維護(hù)過程中需要為算法積累訓(xùn)練數(shù)據(jù),在節(jié)點(diǎn)添加鄰居時(shí),使用模糊神經(jīng)網(wǎng)絡(luò)進(jìn)行節(jié)點(diǎn)性質(zhì)判斷,此次計(jì)算的數(shù)據(jù)將保存在表中。每次收到來自節(jié)點(diǎn)鄰居的HELLO消息包時(shí),該節(jié)點(diǎn)將會(huì)提取包中的維護(hù)信息,進(jìn)行算法計(jì)算,根據(jù)計(jì)算結(jié)果更新鄰居的可信度,然后進(jìn)行鄰居存在與否的更新。每隔一段時(shí)間如果沒有收到鄰居節(jié)點(diǎn)的HELLO 消息包,可以認(rèn)為該鄰居已消失,節(jié)點(diǎn)會(huì)使用優(yōu)化算法對(duì)計(jì)算參數(shù)進(jìn)行優(yōu)化。
本文實(shí)現(xiàn)改進(jìn)方案,即SGF-AODV(Security AODV with GASA-FNN),采用網(wǎng)絡(luò)模擬軟件NS2 對(duì)改進(jìn)后的SGF-AODV協(xié)議與原AODV協(xié)議進(jìn)行模擬仿真,在之前的實(shí)驗(yàn)基礎(chǔ)上,更新實(shí)驗(yàn)環(huán)境,擴(kuò)大了節(jié)點(diǎn)數(shù)量,使用掉包率、端到端傳輸平均時(shí)長、統(tǒng)一路由開銷來評(píng)判協(xié)議運(yùn)行效果。
實(shí)驗(yàn)結(jié)果及分析:
3.1 設(shè)置車輛節(jié)點(diǎn)的個(gè)數(shù)為2000,黑洞節(jié)點(diǎn)的個(gè)數(shù)為一個(gè)單位10 個(gè)黑洞,觀察SGF-AODV協(xié)議的路由性能。
圖3 為黑洞節(jié)點(diǎn)個(gè)數(shù)不斷增加的情況下,以掉包率為評(píng)判依據(jù),對(duì)比AODV 協(xié)議與SGF-AODV 協(xié)議的變化區(qū)別,可以看出SGF-AODV的路由性能較優(yōu)。主要是因?yàn)樗惴ㄗR(shí)別出了黑洞節(jié)點(diǎn),降低了節(jié)點(diǎn)吞噬造成的掉包影響。但是當(dāng)節(jié)點(diǎn)個(gè)數(shù)不斷上升時(shí),算法對(duì)黑洞節(jié)點(diǎn)的識(shí)別跟不上黑洞對(duì)網(wǎng)絡(luò)破環(huán)的速度,因此掉包率在黑洞節(jié)點(diǎn)增加的情況下依然不斷上升,但總體上升比較平緩,達(dá)到預(yù)期效果。
圖3
圖4 顯示了AODV 協(xié)議與SGF-AODV 協(xié)議端到端的平均時(shí)常隨著黑洞節(jié)點(diǎn)數(shù)量增加的變化情況,從圖中可以看出SGF-AODV的平均端到時(shí)延普遍低于AODV協(xié)議。可以看出黑洞節(jié)點(diǎn)增加對(duì)網(wǎng)絡(luò)的端到端平均時(shí)長影響較大,改進(jìn)算法對(duì)黑洞的識(shí)別屏蔽沒有起到較好的效果。主要是因?yàn)樵诤诙垂?jié)點(diǎn)較為集中的情況下,算法無法抵抗多個(gè)黑洞的進(jìn)攻,不能起到很好的識(shí)別屏蔽效果,但是總體來看還是對(duì)黑洞攻擊進(jìn)行了一定程度的抵御。
圖4
圖5 顯示了AODV 協(xié)議與SGF-AODV 協(xié)議的統(tǒng)一路由開銷隨著黑洞節(jié)點(diǎn)數(shù)量增加的變化情況,從圖中可以看出SGF-AODV的平均端到時(shí)延普遍低于AODV協(xié)議。可以看出改進(jìn)算法對(duì)路由開銷的提升較為客觀,對(duì)黑洞節(jié)點(diǎn)的屏蔽,能夠減少數(shù)據(jù)包走“歪路”的幾率,降低黑洞節(jié)點(diǎn)對(duì)網(wǎng)絡(luò)的影響。
圖5
圖6 為節(jié)點(diǎn)個(gè)數(shù)不斷增加的情況下,以掉包率為評(píng)判依據(jù),對(duì)比AODV 協(xié)議與SGF-AODV 協(xié)議的變化區(qū)別,可以看出SGF-AODV的路由性能較優(yōu),接近正常運(yùn)行環(huán)境,并運(yùn)行穩(wěn)定。主要是因?yàn)楦倪M(jìn)方案對(duì)黑洞節(jié)點(diǎn)進(jìn)行了識(shí)別,避免了黑洞節(jié)點(diǎn)吞噬消息包而造成丟包,從而降低了網(wǎng)絡(luò)的掉包率。
圖6
圖7 為節(jié)點(diǎn)個(gè)數(shù)不斷增加的情況下,以端到端傳輸平均時(shí)長為評(píng)判依據(jù),對(duì)比AODV協(xié)議與SGF-AODV協(xié)議的變化區(qū)別,可以看出SGF-AODV的路由性能較優(yōu)。主要是因?yàn)楦倪M(jìn)方案對(duì)黑洞節(jié)點(diǎn)進(jìn)行了屏蔽,消息可以更快的傳遞到目的地,從而提高了網(wǎng)絡(luò)的端到端平均傳輸時(shí)長。
圖7
圖8 為節(jié)點(diǎn)個(gè)數(shù)不斷增加的情況下,以統(tǒng)一路由開銷為評(píng)判依據(jù),對(duì)比AODV 協(xié)議與SGF-AODV 協(xié)議的變化區(qū)別,可以看出SGF-AODV的路由性能較優(yōu)。主要是因?yàn)楦倪M(jìn)方案成功識(shí)別出了黑洞節(jié)點(diǎn),并對(duì)其進(jìn)行了選擇性的屏蔽,這樣在消息發(fā)送過程中不需要進(jìn)行額外的路徑尋找,從而達(dá)到更低的路由開銷。
圖8
無論何時(shí),安全性都是車載自組網(wǎng)無法避免的問題,本文基于AODV協(xié)議提出了一種針對(duì)黑洞攻擊方式的改進(jìn)方法。該方案對(duì)常見的攻擊方式例如黑洞攻擊方式進(jìn)行了分析,基于模糊神經(jīng)網(wǎng)絡(luò)進(jìn)行車輛節(jié)點(diǎn)的可信度計(jì)算,在計(jì)算過程中使用遺傳模擬退火提升計(jì)算精確度。仿真實(shí)驗(yàn)結(jié)果表明,改進(jìn)方案在一定程度上改善了黑洞攻擊下的車聯(lián)網(wǎng)網(wǎng)絡(luò)環(huán)境。