對于AODV路由協議的深入研究
對于自組織網絡來說,當中的AODV路由協議是一個重點,也是一個難點。所以我們今天就特意將這個協議的一些問題,在這里為大家仔細地深入研究一下。那么本文主要包括的內容則是:研究對Ad-hoc網絡中AODV路由協議的路由黑洞攻擊問題進行研究,希望基于對中間應答節點及其下一跳節點進行檢測的思想,研究適用于AODV路由協議的可信路由算法,使AODV路由協議能夠識別出進行路由黑洞進攻的惡意節點,同時,能進一步改善安全AODV路由協議的性能,包括網絡吞吐量、分組成功接收的概率、網絡開銷和時延。
在對AODV路由協議、Ad-hoc網絡面臨的安全威脅和現有的安全AODV路由協議進行深入研究的基礎上,提出可信AODV路由協議,以解決AODV路由協議中的路由黑洞。
AODV借用了DSR的路由發現策略及DSDV的逐跳路由、序列號和定期廣播機制,是一種按需路由協議。
在AODV路由協議中,每個節點動態的生成并維護一張不完整的路由表。當數據到達網絡層時,節點首先搜索自身路由表,若有到目的節點的有效路由則直接使用該路由發送數據,否則將啟動路由建立過程。
源節點廣播路由請求消息(RREQ),包括目的節點地址、目的節點序列號、廣播序列號、源節點地址、源節點序列號、上一跳地址和跳數。當中間節點收到RREQ時,首先根據該RREQ提供的信息建立到上一跳的反向路由,接著查找自己的路由表,若發現有到目的節點的有效路由,則通過反向路由單播回送路由應答消息(RREP),包括源節點地址、目的節點地址、目的節點序列號、跳數和生存時間。否則再將收到的RREQ廣播給鄰居節點,直到該RREQ到達日的節點。
由目的節點生成RREP,并沿已建立的反向路由傳給源節點。當同一個RREQ有若干不同的RREP時(可能由目的節點或者不同的中間節點發出),源節點采用最先到達的那個RREP。若幾個RREP同時到達,源節點將選擇目的節點序列號最大的路由,或者在目的節點序列號相同時,選擇跳數最小的路由。至此,路由建立完畢,并可以在其有效期內使用。
數據沿著建立的路由傳送過程中,中間節點在確定有有效路由,但下一跳節點無法到達(可能由于節點的移動或者鏈路斷路)或者在沒有有效路由時(例如有效期結束),該節點將廣播路由出錯消息(RERR)給鄰居節點。RERR包括無法到達的節點地址和序列號,所有收到RERR的節點將相應的路由設置為無效,并同理廣播RERR,源節點收到RERR后將重啟路由建立過程。
惡意節點利用AODV路由協議的廣播機制捕獲經過自己的RREQ消息,并宣稱自己有到達目的節點的最佳路由(通過偽造跳數或者偽造目的節點序列號),從而使源節點采用此虛假路由。這樣,惡意節點可以輕易攔截下所有數據包而形成一個吸收數據包的“黑洞"。
由于惡意節點在收到RREQ消息時不需要查表也不需要判斷路由的有效性就做出應答,所以往往會先于其它路由應答消息到達源節點,就算有其它正確的路由應答消息同時到達,由于惡意節點偽造了跳數或者目的節點序列號,使得源節點看起來該路由有到達目的節點的更短的路徑(跳數小)或者比其它路由更新(目的節點序列號大),從而使源節點錯誤地選擇了虛假路由。
在對于Ad-hoc網絡的進攻上,國內外的許多研究者做了大量的工作,將攻擊行為分成了以下幾大類:拒絕服務攻擊(Dos)、路由黑洞(Black hole)、路由重播(Replay)、Rushing攻擊、Tunneling攻擊等。#p#
惡意節點對AODV路由協議的攻擊歸納為以下六類:
(1)假冒源結點S偽造一個RREQ包,讓自己的地址看起來像源地址;
(2)當轉發一個RREQ包的時候,減少跳數域;
(3)扮演接收方偽造一個RREP,讓自己的地址看起來像目的地址;
(4)沒有去轉發相應的RREQ或者RREP,或者沒有去響應相應的RREQ和數據包;
(5)用很高的目的結點序列號偽造一個RERR包;
(6)把一個結點的源或目的序列號設置得很大。
針對于Ad-hoc網絡中的這些進攻,已經提出了幾種安全AODV路由協議和方案。
ARAN(Authenticated Routing for Ad-hoc Networks)通過可信任的認證服務器,為所有的有效接點頒發證書,并且把路由跳數信息也加入到簽過名的包內,下一跳收到路由包的節點,用從密鑰服務器中得到的公鑰對由上游結點發來的路由包進行驗證,通過驗證后,再用自己的私鑰進行加密后進行轉發。
Ariadne協議的目標在于用較小的計算開銷,來保障路由發現的正確路徑。采用了一個廣播的認證協議—定時有效流損失容忍認證(Timed Efficient Stream Loss-tolerant Authentication,TELSA)。TELSA目標在于不用密鑰分發機制提供的共享密鑰,每個節點創建一個哈希鏈,哈希值被當成密鑰,用來生成每個包的消息認證碼MAC(Message Authentication Code)。
SAODV(Secure Ad-hoc On-Demand Distance Vector)提出了把可變域,如跳數,和不可變域分開進行處理。對于可變域,用哈希函數進行逐跳驗證;對于不可變域進行數字簽名,并拓展了一些字段用于已知目的節點的中間節點發送RREP包。
辛辛那提大學的Hongmei Deng等人提出了一種基于對響應節點的下游鄰居節點驗證的方案。當中間節點(假設是B)應答RREQ時必須在RREP中附加下一跳節點C的信息,源節點收到RREP后并不立即信任該路由,而是再向C發送驗證詢問包,如果返回的驗證反饋包中確認有到目的節點和到B的可用路由(源節點忽略來自包含節點B的路徑的返回的驗證反饋包)源節點將信任的RREP,否則拋棄RREP,同時向全網發送警告信息孤立。
這些利用數字簽名,加密等方法解決路由黑洞攻擊問題的方案雖然有比較高的安全性,但由于每個節點都要執行加密和驗證程序,因此應用在計算機能力和電源有限的移動終端中顯得過于龐大,同時加密和驗證還會引起時延,不利于大規模網絡的構建。
本文研究在成組惡意節點攻擊情況下,可信AODV路由協議。