張 怡,汪學(xué)明
(貴州大學(xué) 計(jì)算機(jī)科學(xué)與信息學(xué)院,貴州 貴陽 550025)
由于移動(dòng)Ad hoc網(wǎng)絡(luò)自組織具有無中心等缺點(diǎn),易受如竊聽、偽造、拒絕服務(wù)等攻擊,安全問題尤為突出。無線自組網(wǎng)按需距離矢量路由協(xié)議(AODV,Ad hoc On-demand Distance Vector)因?yàn)楹唵魏涂刂崎_銷小而廣泛應(yīng)用于Ad hoc網(wǎng)絡(luò),但它沒有安全機(jī)制,遭遇攻擊易導(dǎo)致網(wǎng)絡(luò)崩潰。因此,2001年Yi S等人提出了ARAN[1]協(xié)議,2002年在文獻(xiàn)[2]中提出了SRP,文獻(xiàn)[3]提出了Ariadne協(xié)議,文獻(xiàn)[4]提出了SAODV協(xié)議,2003年文獻(xiàn)[5]提出SLSP安全協(xié)議,這些協(xié)議都顯著提高路由安全性。
為了使AODV的路由信息不可偽造,本文對(duì)文獻(xiàn)[6]中的匿名路由模塊提出改進(jìn),唯一標(biāo)識(shí)路由請求,在節(jié)點(diǎn)尋路隱藏身份的同時(shí),對(duì)報(bào)文分組進(jìn)行認(rèn)證。
AODV是基于距離矢量算法的路由協(xié)議[7],它只在源節(jié)點(diǎn)要向目的節(jié)點(diǎn)通信而路由表中沒有到目的節(jié)點(diǎn)的可用路由時(shí),才發(fā)起路由查找過程。當(dāng)源節(jié)點(diǎn)與目的節(jié)點(diǎn)通信時(shí),先查找路由表是否有到目的節(jié)點(diǎn)的路由,若有則直接通信;若沒有,啟動(dòng)路由發(fā)現(xiàn)過程,向所有鄰居節(jié)點(diǎn)廣播路由請求RREQ。中間節(jié)點(diǎn)收到此RREQ,在路由表中建立指向源節(jié)點(diǎn)的反向路由,再向周圍節(jié)點(diǎn)繼續(xù)廣播此RREQ,若有到達(dá)目的節(jié)點(diǎn)的路由或目的節(jié)點(diǎn)收到RREQ,就發(fā)回RREP給上一節(jié)點(diǎn)并經(jīng)若干中間節(jié)點(diǎn)發(fā)回源節(jié)點(diǎn)。若源節(jié)點(diǎn)收到多個(gè)RREP,根據(jù)目的節(jié)點(diǎn)序列號(hào)和跳數(shù)來決定最優(yōu)路徑,并更新路由表。
但AODV沒有保護(hù)RREQ等報(bào)文,它無防御各種攻擊的機(jī)制。比如RRER作用是通知路由出錯(cuò)。攻擊者可偽造該報(bào)文,通知某鏈路上的節(jié)點(diǎn)該鏈路出錯(cuò)不可用,使節(jié)點(diǎn)拋棄可用鏈路,重新經(jīng)歷路由發(fā)現(xiàn)、路由建立、路由維護(hù)等過程,網(wǎng)絡(luò)不能正常運(yùn)行。再如著名的黑洞問題,惡意節(jié)點(diǎn)先于正常節(jié)點(diǎn)回復(fù)一個(gè)虛假可到達(dá)目的節(jié)點(diǎn)的RREP包,源節(jié)點(diǎn)就將數(shù)據(jù)包源源不斷的發(fā)到惡意節(jié)點(diǎn)上而未與目的節(jié)點(diǎn)通信,惡意節(jié)點(diǎn)如同黑洞一樣獲取信息。因此保證信息的安全性對(duì)網(wǎng)絡(luò)十分必要。
會(huì)話密鑰由非對(duì)稱密鑰算法RSA生成,對(duì)報(bào)文分組進(jìn)行安全簽名。系統(tǒng)公私鑰在初始化網(wǎng)絡(luò)信息時(shí)由認(rèn)證中心(CA)生成,初始化結(jié)束后CA消失,所有節(jié)點(diǎn)均保存系統(tǒng)公鑰,私鑰分為n份授予n個(gè)節(jié)點(diǎn),需要時(shí)由其中k個(gè)節(jié)點(diǎn)合作更新證書。
路由發(fā)現(xiàn)過程包括路由請求、路由請求轉(zhuǎn)發(fā)、在目的節(jié)點(diǎn)處對(duì)路由請求的驗(yàn)證,路由請求及其轉(zhuǎn)發(fā)以及對(duì)其驗(yàn)證過程簡敘如下(路由應(yīng)答、路由應(yīng)答轉(zhuǎn)發(fā)和在源節(jié)點(diǎn)處對(duì)路由應(yīng)答的驗(yàn)證類似)。
當(dāng)源節(jié)點(diǎn)和目的節(jié)點(diǎn)前有過相互通信經(jīng)歷,但由于網(wǎng)絡(luò)拓?fù)渥兓仍蛐枰匦陆⒌竭_(dá)彼此的路由。即如圖1所示,節(jié)點(diǎn)N1與節(jié)點(diǎn)N6已交換證書,但N1路由表中沒有到達(dá)N6的有效路由信息。
圖1 某時(shí)刻網(wǎng)絡(luò)中N1與N6通信
符號(hào)說明:RREQ--路由請求數(shù)據(jù)包;RREP--路由回復(fù)數(shù)據(jù)包;RERR--路由錯(cuò)誤數(shù)據(jù)包;IDi--節(jié)點(diǎn)i標(biāo)示符;Cei--節(jié)點(diǎn)i的證書;Ri--節(jié)點(diǎn)i產(chǎn)生的隨機(jī)數(shù);SKi--節(jié)點(diǎn)i私鑰加密;PKi--節(jié)點(diǎn)i公鑰加密;Hash()--hash散列值;RIDi--節(jié)點(diǎn)i產(chǎn)生隨機(jī)身份標(biāo)示;HNi--跳數(shù);QnumNi--路由請求ID,每次啟用路由發(fā)現(xiàn)機(jī)制時(shí)該數(shù)值單調(diào)加 1;SM--Signature method,安全簽名算法,對(duì)報(bào)文分組摘要加密生成安全簽名S;Cer--公開密鑰證書。
①構(gòu)建RREQ。隨機(jī)數(shù)RIDN1為源節(jié)點(diǎn)N1的標(biāo)識(shí),跳數(shù)初始值 HN1=1,結(jié)構(gòu):RREQ={RIDN1,HN1,QnumNi,PKN6{RIDN1,IDN1,IDN6}Cer ,SM}。序列對(duì)(RIDN1,QnumNi)唯一標(biāo)識(shí)一個(gè)路由請求RREQ。
②中間節(jié)點(diǎn) Ni收到一條新的路由請求RREQ時(shí),檢查是否收到過該(RIDN1,QnumN1)標(biāo)識(shí)的RREQ,若是則不作任何處理,丟棄該分組。若否,執(zhí)行 Step-com。因?yàn)榈谝淮问盏?RIDN1,QnumN1)標(biāo)識(shí)的 RREQ,嘗試用私鑰解密 PKN6。如成功解密轉(zhuǎn)到③,否則將原跳數(shù)加 1 后廣播。
Step-com:判斷 RREQ是否具有安全簽名 S:如果沒有,節(jié)點(diǎn)認(rèn)為報(bào)文分組沒有經(jīng)過認(rèn)證,視其無效直接丟棄;如果報(bào)文具有安全簽名S,則對(duì)RREQ內(nèi)的公開密鑰證書進(jìn)行驗(yàn)證。證書有效,用其公開密鑰PK對(duì)簽名S加密,得到報(bào)文分組摘要H(M),借助RSA加密算法對(duì)RREQ分組M 進(jìn)行運(yùn)算,最后判斷計(jì)算結(jié)果 h與解密得到的報(bào)文摘要H(M)是否一致。如果h與H(M)不一致,表明RREQ分組在傳遞過程中已被篡改,節(jié)點(diǎn)執(zhí)行丟棄操作;若 h=H(M),證明報(bào)文未被篡改。
③加密段PKN6只有目的節(jié)點(diǎn)N6能解開,在得到源節(jié)點(diǎn)真實(shí)ID后發(fā)送RREP分組給發(fā)送RREQ給自己的前一節(jié)點(diǎn)N5。RREP={RIDN6,RIDN1,QnumN1,PKN5{IDN1,IDN6,HN6, PHN6,{Node List}}Cer,SM }。
④中間節(jié)點(diǎn)Ni收到RREP,檢查序列對(duì)(RIDN6,RIDN1,QnumN1)是否收到過,若是,直接丟棄,若否,檢查第二個(gè)隨機(jī)數(shù) RIDN1,判斷是否收到過 N1的 RREQ,若否,丟棄;若是,執(zhí)行Step-com, 確保報(bào)文未被篡改。檢查正確后解密 PKNi{}字段,檢查相應(yīng) RREQ是否為自身發(fā)出,若是轉(zhuǎn)到⑤;若否,將自己的 ID加入{Node list},應(yīng)答跳數(shù)值PHNi加 1生成新的 RREP,結(jié)構(gòu):RREP={RIDN6,RIDN1,PKN(i-1){IDN1,IDN6, HN6, PHN5,{Node List}}Ni簽名}。向發(fā)送此RREQ給自己上一節(jié)點(diǎn)發(fā)送。
⑤源節(jié)點(diǎn)收到 RREP,比較RREQ和RREP的跳數(shù)是否一致并獲取路由信息。
如果以上均成功驗(yàn)證,目的節(jié)點(diǎn)能確定 RREQ的確來自源節(jié)點(diǎn),記錄在{Node List}里的每個(gè)節(jié)點(diǎn)實(shí)際上都參加了RREQ的轉(zhuǎn)發(fā),并且能夠容易的獲得RREQ經(jīng)歷的跳數(shù)。反向路由應(yīng)答轉(zhuǎn)發(fā)以及在源節(jié)點(diǎn)核實(shí) RREP和路由請求階段對(duì)稱。
當(dāng)某一節(jié)點(diǎn)移動(dòng)或能量耗盡等原因造成鏈路中斷時(shí),離它最近的節(jié)點(diǎn)向其他節(jié)點(diǎn)廣播一個(gè)“錯(cuò)誤”信息RRER通知其他節(jié)點(diǎn)經(jīng)過該節(jié)點(diǎn)的路由不可用,此時(shí)須用自己的私鑰對(duì)RRER報(bào)文簽名,中間節(jié)點(diǎn)對(duì)發(fā)送RRER報(bào)文的節(jié)點(diǎn)進(jìn)行身份認(rèn)證再從路由表刪除該路由。這樣就防止了惡意節(jié)點(diǎn)通過偽造RRER報(bào)文。
仿真平臺(tái)選擇NS2網(wǎng)絡(luò)模擬軟件。場景設(shè)置為500 m×500 m正方形區(qū)域,用于20個(gè)節(jié)點(diǎn)的網(wǎng)絡(luò),時(shí)間:150 s。圖2~4中給出了在該場景中對(duì)比AODV路由協(xié)議以及改進(jìn)過的協(xié)議 50%的節(jié)點(diǎn)遭受偽造路由應(yīng)答的惡意攻擊時(shí)的性能比較。
從圖2中可看出,開始攻擊后,AODV數(shù)據(jù)包的傳遞率迅速降低,主要因?yàn)閻阂夤?jié)點(diǎn)謊稱具有最短路徑,于是把接收到的路由請求包丟棄。而此時(shí),改進(jìn)的協(xié)議仍能完成大約60%的數(shù)據(jù)包傳遞任務(wù)。
圖3表明改進(jìn)的路由協(xié)議比AODV路由開銷大,因?yàn)檎9?jié)點(diǎn)收到RREQ或RREP時(shí),要經(jīng)過解密與判斷等,而AODV中惡意節(jié)點(diǎn)收到包后,直接丟棄了。
圖2 數(shù)據(jù)包傳遞率
圖3 路由開銷
圖4 路由延遲
圖4表明AODV路由延遲低,部分原因是惡意節(jié)點(diǎn)比具有正確路由信息的節(jié)點(diǎn)有更快回復(fù),謊稱具有最短路徑。而改進(jìn)的協(xié)議因?yàn)橐M(jìn)行多步判斷,所以延遲高。
該方案借助非對(duì)稱公開密鑰RSA算法對(duì)報(bào)文進(jìn)行安全簽名,尋路時(shí)隱藏身份用隨機(jī)數(shù)代替源節(jié)點(diǎn)保護(hù)源、目標(biāo)節(jié)點(diǎn)及跳數(shù),并加密轉(zhuǎn)發(fā)路由,可免疫如竊聽,中間節(jié)點(diǎn)攻擊等常見攻擊。該改進(jìn)增強(qiáng)了 AODV路由協(xié)議的安全性,但在路由開銷和延遲方面仍存在改進(jìn)空間,在以后的工作中將繼續(xù)深入研究。
[1] YI S, NALDURG P, KRAVETS K.Security-aware Ad Hoc Routing for Wireless Network[R]. In Proc. MobiHoc, 2001:299-302.
[2] PAPADIMITRATORS P, HAAS Z J. Secure Routing for Mobile Ad Hoc networks[R]. In Procedings of the SCS Communication Networks and Distributed System Modeling and Sirnulation Conference,2002:193-204.
[3] SANZGIRI K, DAHILL B. A Secure Routing Protocol for Ad Hoc Networks..In:Proc of 2002 IEEE International Conference on Network Protocols(ICNP)[C]. 2002:78-87.
[4] HU Y C, PERRIG A, JONSON D B.Ariadne: A Secure On-Demand Routing Protocol for Ad Hoc Networks[R]. 8th ACM International Conference on Mobile Computing and Networking, MobiCom 2002:12-23.
[5] PAPADIMITRATOS P, HAAS Z J.Secure Link State Routing for Mobile Ad Hoc Networks[R].IEEE Workshop On Security and Assurance in Ad Hoc Networks 2003:379-383.
[6] 諸愷,楊凌,張曉帆,等.移動(dòng)Ad hoc網(wǎng)絡(luò)中按需路由協(xié)議的安全性改進(jìn)方案[J]. 通信技術(shù), 2008,41(10):113-115.
[7] 葛文英,李鵬偉.Ad Hoc網(wǎng)絡(luò)的按需路由研究[J]. 軟件技術(shù)研究,2006(08):41-42.
[8] 鄭少仁,王海濤,趙志峰,等. Ad Hoc網(wǎng)絡(luò)技術(shù)[M]. 北京:人民郵電出版社.2005:4-5.