摘 要: 分析了針對(duì)移動(dòng)自組網(wǎng)" title="移動(dòng)自組網(wǎng)">移動(dòng)自組網(wǎng)絡(luò)(MANET)路由協(xié)議" title="路由協(xié)議">路由協(xié)議的攻擊方法,并基于優(yōu)化鏈路狀態(tài)路由協(xié)議(OLSR),提出了一種移動(dòng)自組網(wǎng)絡(luò)路由協(xié)議的安全解決方案。實(shí)驗(yàn)表明,增加安全模塊后對(duì)協(xié)議性能的影響在可接受的范圍之內(nèi)。
關(guān)鍵詞: 移動(dòng)Ad Hoc網(wǎng)絡(luò) 路由協(xié)議 網(wǎng)絡(luò)安全
1 Ad Hoc網(wǎng)絡(luò)的路由特點(diǎn)及安全問(wèn)題
移動(dòng)自組網(wǎng)絡(luò)是一種新型的無(wú)線移動(dòng)網(wǎng)絡(luò)。每個(gè)移動(dòng)節(jié)點(diǎn)" title="移動(dòng)節(jié)點(diǎn)">移動(dòng)節(jié)點(diǎn)受其無(wú)線發(fā)射距離的限制,必須借助其他移動(dòng)節(jié)點(diǎn)的轉(zhuǎn)發(fā)才能將數(shù)據(jù)包傳送到目的移動(dòng)節(jié)點(diǎn)。因此,每個(gè)移動(dòng)節(jié)點(diǎn)既充當(dāng)主機(jī)又充當(dāng)路由器。由于移動(dòng)節(jié)點(diǎn)之間的連接不斷動(dòng)態(tài)改變,所以,傳統(tǒng)固定網(wǎng)絡(luò)上的路由協(xié)議無(wú)法滿足其特殊要求,需要專門的路由協(xié)議來(lái)實(shí)現(xiàn)移動(dòng)自組網(wǎng)中移動(dòng)節(jié)點(diǎn)間的信息交換。
目前,移動(dòng)自組網(wǎng)的路由協(xié)議主要分為兩類:表驅(qū)動(dòng)路由協(xié)議(如OLSR協(xié)議)和按需路由協(xié)議(如DSR和AODV協(xié)議)。這兩類路由協(xié)議都沒(méi)有考慮到安全性問(wèn)題,而事實(shí)上由于Ad Hoc網(wǎng)絡(luò)所具有的特性,其面臨的安全威脅遠(yuǎn)大于固定網(wǎng)絡(luò),主要表現(xiàn)在:
(1)攻擊者很容易通過(guò)無(wú)線鏈路竊聽(tīng)、假冒、篡改和轉(zhuǎn)發(fā)在其上傳輸?shù)男畔ⅰ?BR> (2)由于移動(dòng)結(jié)點(diǎn)有可能漫游到敵對(duì)環(huán)境中(例如敵戰(zhàn)區(qū)),所以惡意攻擊不僅來(lái)自網(wǎng)絡(luò)的外部,而且也有可能來(lái)自內(nèi)部被攻破的移動(dòng)節(jié)點(diǎn)。
(3)由于MANET拓?fù)浣Y(jié)構(gòu)" title="拓?fù)浣Y(jié)構(gòu)">拓?fù)浣Y(jié)構(gòu)和移動(dòng)節(jié)點(diǎn)數(shù)目不斷變化,所以,移動(dòng)節(jié)點(diǎn)之間的信任關(guān)系也經(jīng)常改變,特別是檢測(cè)出被攻破移動(dòng)節(jié)點(diǎn)以后,其他移動(dòng)節(jié)點(diǎn)對(duì)它們的信任也隨之消失。
2 Ad Hoc路由協(xié)議的攻擊方式
現(xiàn)有的用于Ad Hoc網(wǎng)絡(luò)的路由協(xié)議面臨著幾種不同方式的攻擊。通常在固定網(wǎng)絡(luò)上存在的攻擊方法同樣存在于移動(dòng)自組網(wǎng)絡(luò)中,而由于Ad Hoc在安全方面的脆弱性,這些攻擊甚至變得更加容易和有效。
對(duì)網(wǎng)絡(luò)安全的攻擊通常分為被動(dòng)和主動(dòng)兩種,而針對(duì)路由協(xié)議的攻擊主要為主動(dòng)攻擊,這些攻擊可以劃為四類:偽裝、篡改或重放消息、偽造和拒絕服務(wù)(DoS)[1]。下面分別討論以上四種方法對(duì)Ad Hoc路由協(xié)議的攻擊。
2.1 偽裝
惡意節(jié)點(diǎn)可以修改自己發(fā)出的消息包中的MAC或IP地址,偽裝成別的節(jié)點(diǎn),從而影響和破壞網(wǎng)絡(luò)中其他節(jié)點(diǎn)的路由生成與維護(hù)。下面就OLSR協(xié)議舉例說(shuō)明偽裝是如何形成路由環(huán)路從而破壞Ad Hoc路由的,AODV協(xié)議與DSR協(xié)議也存在著類似的情況。
偽裝攻擊方式示例圖如圖1所示。圖中目的節(jié)點(diǎn)為X,帶箭頭的直線指向該節(jié)點(diǎn)通往X的路由的下一跳節(jié)點(diǎn)。

M是惡意節(jié)點(diǎn),由于OLSR是鏈路狀態(tài)協(xié)議,M知道當(dāng)前網(wǎng)絡(luò)的拓?fù)浣Y(jié)構(gòu)以及各節(jié)點(diǎn)的路由情況,它可以采取如下的方法使ABCD四個(gè)節(jié)點(diǎn)形成一個(gè)環(huán)路,從而都不能到達(dá)目標(biāo)節(jié)點(diǎn)X。在圖1(a)中,M首先將自己的IP地址改成A的,并遠(yuǎn)離A而向D靠近,并且在發(fā)給D的拓?fù)湎?tc_message)中聲稱目標(biāo)節(jié)點(diǎn)X就是自己的下一跳,因此D就將自己通往X的下一跳路由由C改為A,如圖1(b)。然后M將自己的地址改為D,以同樣的方式欺騙C,將自己的下一跳改為D,從而形成了如圖1(c)顯示的環(huán)路,使ABCD到X的路由中斷。
2.2 篡改或重放消息
惡意節(jié)點(diǎn)可以通過(guò)修改路由協(xié)議中的消息包內(nèi)容來(lái)錯(cuò)誤定向自組網(wǎng)中某節(jié)點(diǎn)通往目標(biāo)節(jié)點(diǎn)的路由。節(jié)點(diǎn)M惡意應(yīng)答示例圖如圖2所示。在圖2(a)中,惡意節(jié)點(diǎn)M收到一條B轉(zhuǎn)發(fā)的A要求到D路由的RREQ消息,然后它向B發(fā)送一條RREP消息,此消息包含了比D發(fā)出的RREP消息大得多的序列號(hào)。當(dāng)B同樣接收到D發(fā)回的真正的RREP消息時(shí),由于其序列號(hào)較小而將其丟棄,從而使B將自己通往D的下一跳改為M如圖2(b)所示。通常惡意節(jié)點(diǎn)可以通過(guò)修改路由消息的序列號(hào)或者路由消息的跳數(shù)來(lái)達(dá)到此目的。

2.3 偽造
惡意節(jié)點(diǎn)可以通過(guò)偽造虛假的路由消息來(lái)攻擊Ad Hoc網(wǎng)絡(luò)中的各節(jié)點(diǎn),使之錯(cuò)誤路由或造成DoS。例如在一些按需路由協(xié)議(如AODV、DSR中),當(dāng)網(wǎng)絡(luò)拓?fù)浣Y(jié)構(gòu)發(fā)生變化時(shí),節(jié)點(diǎn)通過(guò)發(fā)送一種路由錯(cuò)誤消息來(lái)重新建造路由。如果路由協(xié)議屬于鏈路狀態(tài)協(xié)議(如OLSR),惡意節(jié)點(diǎn)可以偽造虛假的tc_message,使節(jié)點(diǎn)得到錯(cuò)誤的網(wǎng)絡(luò)拓?fù)浣Y(jié)構(gòu),從而計(jì)算出錯(cuò)誤的路由。
2.4 拒絕服務(wù)
上節(jié)已經(jīng)提到通過(guò)偽造路由錯(cuò)誤消息來(lái)實(shí)現(xiàn)拒絕服務(wù)攻擊,下面說(shuō)明在源路徑選路的路由協(xié)議中如何進(jìn)行DoS攻擊。這種攻擊通常通過(guò)修改消息包頭部的源路由來(lái)實(shí)現(xiàn)。拒絕服務(wù)攻擊方式示例圖如圖3所示。

源節(jié)點(diǎn)A到達(dá)目的節(jié)點(diǎn)的路由為{A,B,M,C,D,E}。假設(shè)惡意節(jié)點(diǎn)M要實(shí)現(xiàn)DoS攻擊,它只需修改A發(fā)出的到達(dá)它的數(shù)據(jù)包頭部的源路由信息(比如刪除D節(jié)點(diǎn)),再轉(zhuǎn)發(fā)給C。而C由于在包頭部的源路由信息中找不到下一跳D,就向上游發(fā)出一個(gè)路由錯(cuò)誤消息,這條消息首先被M接收到,它只需將其丟棄,這樣A收不到該消息就不會(huì)重新尋找路由,從而實(shí)現(xiàn)了拒絕服務(wù)攻擊。
3 安全解決方案
Ad Hoc網(wǎng)絡(luò)的安全需要主要集中在路由消息的保密性、完整性(即不可被篡改)、網(wǎng)內(nèi)節(jié)點(diǎn)的鑒別(保證惡意節(jié)點(diǎn)不能假冒合法節(jié)點(diǎn))以及網(wǎng)絡(luò)路由的可用性,這主要包括保證路由的正確性和路由協(xié)議的運(yùn)行性能,防止DoS攻擊。
一個(gè)好的安全方案可以使Ad Hoc路由協(xié)議避免前面所列舉的各種攻擊,提供可靠的路由安全服務(wù),阻止任何惡意節(jié)點(diǎn)對(duì)網(wǎng)絡(luò)中各節(jié)點(diǎn)路由的生成與維護(hù)。具體需要做到以下幾點(diǎn):
(1)路由簽名不會(huì)被假冒;
(2)被偽造過(guò)的路由消息不被協(xié)議接受;
(3)路由消息在傳輸過(guò)程中不能被非法修改;
(4)防止被惡意攻擊造成路由環(huán)路;
(5)抵御拒絕服務(wù)攻擊;
(6)未被認(rèn)證的節(jié)點(diǎn)被排除在路由發(fā)現(xiàn)和計(jì)算之外。
已有文獻(xiàn)對(duì)安全路由算法進(jìn)行了研究,并給出關(guān)于滿足以上幾點(diǎn)安全方案的建議[2~5]。本文在OLSR協(xié)議的基礎(chǔ)上,設(shè)計(jì)增加了相應(yīng)的安全機(jī)制,并通過(guò)仿真試驗(yàn)進(jìn)行性能測(cè)試。
3.1 OLSR協(xié)議簡(jiǎn)介
優(yōu)化鏈路狀態(tài)路由協(xié)議OLSR(Optimized Link State Routing)是一個(gè)表驅(qū)動(dòng)的主動(dòng)Ad Hoc路由協(xié)議,已經(jīng)被IETF接受為標(biāo)準(zhǔn)(RFC 3626)。OLSR采用UDP協(xié)議進(jìn)行通信,采用統(tǒng)一的包格式,具有可擴(kuò)展性。OLSR協(xié)議并未采用安全機(jī)制,在RFC3626中提到了本協(xié)議可能面臨的安全問(wèn)題,主要包括以下三個(gè)方面:
(1)機(jī)密性。作為一個(gè)主動(dòng)的路由協(xié)議,OLSR周期性地傳播拓?fù)湫畔?,但由于Ad Hoc使用了不安全的無(wú)線鏈路,其控制消息很容易被監(jiān)聽(tīng),從而暴露了網(wǎng)絡(luò)的拓?fù)浣Y(jié)構(gòu)。而在某些情況下,這種拓?fù)湫畔⑹切枰C艿模虼诵枰獙⒖刂葡⒓用?,只有?jīng)過(guò)授權(quán)的節(jié)點(diǎn)才能讀取和解析。
(2)完整性。在OLSR中,所有節(jié)點(diǎn)通過(guò)轉(zhuǎn)發(fā)hello消息(hello_message)和tc_message為網(wǎng)絡(luò)提供拓?fù)湫畔?。但是?dāng)某節(jié)點(diǎn)發(fā)生故障或惡意節(jié)點(diǎn)對(duì)網(wǎng)絡(luò)進(jìn)行攻擊時(shí),會(huì)提供錯(cuò)誤的消息,從而破壞完整性,影響網(wǎng)絡(luò)拓?fù)浣Y(jié)構(gòu)的生成,因此需要對(duì)消息進(jìn)行安全認(rèn)證。為解決此問(wèn)題,可以利用數(shù)字簽名等信息安全技術(shù)來(lái)保證路由消息的完整性。
(3)節(jié)點(diǎn)惟一性。OLSR并沒(méi)有對(duì)節(jié)點(diǎn)地址做出任何假定,這就意味著可能會(huì)存在多個(gè)節(jié)點(diǎn)具有相同的IP地址或一個(gè)節(jié)點(diǎn)具有多個(gè)IP地址的情況,這給系統(tǒng)的身份認(rèn)證帶來(lái)很大麻煩。
3.2 安全的OLSR
為解決上述安全問(wèn)題,必須在Ad Hoc網(wǎng)絡(luò)中引入路由安全機(jī)制,包括使用公開(kāi)密鑰密碼學(xué)的方法(如RSA算法)提供簽名和認(rèn)證保證其完整性, 以及采用DES等加密算法對(duì)消息內(nèi)容加密傳輸以保證機(jī)密性。系統(tǒng)需要一個(gè)認(rèn)證機(jī)構(gòu),該機(jī)構(gòu)可以是一個(gè)被所有節(jié)點(diǎn)信任的認(rèn)證中心(CA),也可以利用門檻加密算法讓網(wǎng)絡(luò)中的n個(gè)節(jié)點(diǎn)聯(lián)合認(rèn)證[6],將這個(gè)認(rèn)證服務(wù)機(jī)構(gòu)記為server-T。server-T將自己的公鑰" title="公鑰">公鑰eT分發(fā)給所有節(jié)點(diǎn),而每個(gè)節(jié)點(diǎn)K必須向server-T申請(qǐng)一對(duì)認(rèn)證密鑰,包括公鑰eK和私鑰dK以及系統(tǒng)各成員共享的數(shù)據(jù)加密密鑰sK,并且節(jié)點(diǎn)必須存儲(chǔ)著其他各節(jié)點(diǎn)的公鑰。下面詳細(xì)敘述安全路由協(xié)議的工作過(guò)程。
(1)節(jié)點(diǎn)申請(qǐng)加入網(wǎng)絡(luò)
任何節(jié)點(diǎn)在加入網(wǎng)絡(luò)之前必須向server-T提出注冊(cè)申請(qǐng),server-T收到申請(qǐng)后,檢查其IP,如果與網(wǎng)絡(luò)中已有的IP沖突則拒絕申請(qǐng)(這解決了節(jié)點(diǎn)身份惟一性的問(wèn)題)。如果申請(qǐng)成功,則erver-T返回給申請(qǐng)者一對(duì)認(rèn)證密鑰(dK,eK)供其使用,并記錄下將該節(jié)點(diǎn)的IP和對(duì)應(yīng)的公鑰eT,同時(shí)將系統(tǒng)公用的DES加密密鑰sK提供給申請(qǐng)者。
(2)節(jié)點(diǎn)生成協(xié)議消息
節(jié)點(diǎn)生成OLSR協(xié)議安全報(bào)文,操作如下:
?、俟?jié)點(diǎn)使用DES算法,用密鑰sK加密消息(hello_message或tc_message),并在報(bào)文中只加入加密后的消息,從而保證了消息的機(jī)密性;
?、谑褂肦SA算法用自己的私鑰dK加密本節(jié)點(diǎn)IP,得到待認(rèn)證的簽名Originator Address Certification(OAC)=(IP)dK mod n;
③發(fā)送者必須填寫Sender Address Certification(SAC)域,這里SAC=OAC。
(3)節(jié)點(diǎn)接收和轉(zhuǎn)發(fā)報(bào)文
節(jié)點(diǎn)在收到一個(gè)協(xié)議報(bào)文后,進(jìn)行如下操作:
?、贆z查報(bào)文發(fā)送者的身份,根據(jù)IP首部提供的發(fā)送者IPS,查找出本地存放的該IP對(duì)應(yīng)的公鑰eS,通過(guò)計(jì)算IPS=(SAC)eS mod n驗(yàn)證發(fā)送者的身份,若相等則進(jìn)行下一步,否則丟棄該報(bào)文。
?、卺槍?duì)報(bào)文中的每一條消息,根據(jù)OAC驗(yàn)證其產(chǎn)生者的真?zhèn)?,先找到Originator Address對(duì)應(yīng)的公鑰eOA,再計(jì)算 Originator Address=(OAC)eOA mod n,如相等則轉(zhuǎn)至③,不等則丟棄該消息。
③在驗(yàn)證完消息的來(lái)源后,使用共享的DES密鑰sK解密被加密的消息后,再作出相應(yīng)的處理。
?、芄?jié)點(diǎn)在處理完報(bào)文后,如果需要轉(zhuǎn)發(fā),首先計(jì)算自己的身份簽名,并取代原來(lái)的SAC域,報(bào)文的其余部分不變(除了根據(jù)OLSR協(xié)議本身的要求做出修改),將新的報(bào)文轉(zhuǎn)發(fā)。
(4)系統(tǒng)密鑰的維護(hù)與更新
①關(guān)于系統(tǒng)共享的DES密鑰
本密鑰sK由系統(tǒng)安全服務(wù)機(jī)構(gòu)server-T產(chǎn)生、維護(hù)和更新。系統(tǒng)中各節(jié)點(diǎn)都同步保存著一份副本,用于傳輸消息時(shí)的加密,以防止消息被監(jiān)聽(tīng)解析后,暴露網(wǎng)絡(luò)的拓?fù)浣Y(jié)構(gòu)。server-T定期或根據(jù)需要(如密鑰泄漏)更新sK,并用自己的RSA私鑰dT對(duì)sK簽名后(CsK=sKdT mod n),再將(sK,CsK)發(fā)送給各節(jié)點(diǎn),節(jié)點(diǎn)收到后用server-T的公鑰eT驗(yàn)證簽名后更新自己保存的sK。
?、陉P(guān)于節(jié)點(diǎn)認(rèn)證密鑰
每個(gè)節(jié)點(diǎn)K在獲準(zhǔn)加入Ad Hoc網(wǎng)絡(luò)時(shí),都從server-T處得到一對(duì)認(rèn)證密鑰(dK,eK),同時(shí)server-T也記下該節(jié)點(diǎn)的(IP,eK)對(duì),并發(fā)送給其他節(jié)點(diǎn)。所有節(jié)點(diǎn)都在本地保存著一張(IP,eK)表,當(dāng)收到屬于某個(gè)節(jié)點(diǎn)的消息時(shí),在該表中找出對(duì)應(yīng)的eK進(jìn)行驗(yàn)證。
server-T定期將自己的(IP,eK)表廣播并附上自己的簽名,各個(gè)節(jié)點(diǎn)在收到該表并驗(yàn)證簽名后更新本地的(IP,eK)表。
3.3 協(xié)議性能影響分析
在OLSR協(xié)議中加入安全模塊后,會(huì)對(duì)性能造成一定影響,主要因?yàn)閷?duì)報(bào)文加解密需要耗費(fèi)時(shí)間。因此在NS-2中進(jìn)行了該協(xié)議的仿真試驗(yàn),主要測(cè)試增加了安全機(jī)制后給路由協(xié)議帶來(lái)的性能影響。
在實(shí)驗(yàn)中,分別驗(yàn)證Secure OLSR、OLSR、DSR路由協(xié)議的包傳輸率性能。所有節(jié)點(diǎn)的初始位置都是隨機(jī)的,然后生成33個(gè)UDP連接。每個(gè)連接都申請(qǐng)了25kbps的帶寬資源,并且在一定的時(shí)刻開(kāi)始使用建成的連接發(fā)送數(shù)據(jù),發(fā)送速率為20kbps。所有節(jié)點(diǎn)隨機(jī)移動(dòng)。丟包率比較如圖4所示。

實(shí)驗(yàn)表明Secure OLSR協(xié)議比OLSR協(xié)議性能下降約10%,與DSR大致相當(dāng),基本符合移動(dòng)Ad hoc路由協(xié)議的性能要求。
本文在總結(jié)分析了各種對(duì)移動(dòng)自組網(wǎng)絡(luò)路由協(xié)議的攻擊方式,針對(duì)一種典型的表驅(qū)動(dòng)型路由協(xié)議——OLSR協(xié)議,提出了協(xié)議安全解決方案,提高了移動(dòng)自組網(wǎng)路由的安全性。并通過(guò)實(shí)驗(yàn)證明其滿足網(wǎng)絡(luò)的性能要求。
參考文獻(xiàn)
1 Stallings W.Cryptography and network security:Principles and practice.Prentice Hall,1998
2 Sanzgiri K,Dahilly B,Leviney B N et al.A secure routing protocol for Ad Hoc networks.In:Proceedings of the 10th IEEE International conference on network protocols,2002
3 Hu Y C,Perrig A,Johnson D B.Ariadne:A secure on demand routing protocol for Ad Hoc networks.In:MobiCom′02, Atlanta,GA,2002
4 Zapata M G,Asokan N.Securing Ad Hoc Routing Protocols. In:1st ACM WiSe,Atlanta,GA,2002
5 Papadimitratos P,Haas Z J.Secure link state routing for mobile Ad Hoc networks.In:2003 symposium on applications and the Internet workshops(SAINT 2003),Orlando,F(xiàn)L,USA, 2003
6 Zhou L,Haas Z J.Securing Ad Hoc networks.IEEE Network Magazine,1999;13(6)
