一種無線傳感器網絡的安全性分析方法與流程
2023-05-21 16:10:31
本發明屬於物聯網安全領域,特別是涉及一種無線傳感器網絡安全性分析方法。
背景技術:
無線傳感器網絡作為物聯網的重要組成與技術支撐,其安全問題受到人們越來越廣泛的關注。無線傳感器網絡不同於有線網絡,因其協議多樣性與網絡動態性,網絡安全性受到極大威脅。現有的無線傳感器網絡安全檢測系統沒有對協議形式化分析,也沒有對攻擊類型做深入研究。這致使其檢測到的攻擊類型不夠全面,檢測效果可靠性差。現有的安全檢測方法受到特定協議的局限性,每個方法只能針對一個協議,難以移植應用到其它協議。
無線傳感器網絡的網絡拓撲會隨不穩定的環境因素而動態改變,而網絡傳播只能通過廣播的形式。這兩個特點使得無線傳感器網絡的安全性受到挑戰。在無線傳感器網絡的眾多安全問題中,最嚴重的威脅就是在組網與傳輸部分,容易受到中間人攻擊、泛洪攻擊、女巫攻擊、選擇性轉發攻擊等。可能造成嚴重的國家財產損失與人民安全威脅,例如輸電網絡中的偷電漏電、森林火警的警報失效、智能家居的隱私洩露等。
傳統網絡的安全檢測方法不能直接應用於無線傳感器網絡系統的主要原因有兩點:1、無線傳感器網絡資源有限。無線傳感器網絡的電量、cpu、內存、帶寬等關鍵資源非常有限,檢測系統會嚴重影響原有網絡的運行,使原有無線傳感器網絡失去了低能耗、低成本的優勢;2、無線傳感器網絡協議不完善。無線傳感器網絡技術剛剛起步,無線傳感器網絡協議還沒有形成統一的標準,廠商之間的協議均有不同,目前沒有一個穩定的無線傳感器網絡安全協議,也沒有成熟的攻擊類型分析。研究者只能根據自己的理解去構造攻擊者,檢測能力不能得到檢驗與保障。所以需要一個更加全面、更加可靠的安全檢測機制,這也是建立無線傳感器網絡安全檢測平臺的目標。
技術實現要素:
為了克服現有技術中無線傳感器網絡的安全檢測經常出現分析不全面、研究者很少將一個協議的所有攻擊類型全部分析到位的問題,本發明提出了一種無線傳感器網絡的安全性分析方法,主要用於對無線傳感器網絡協議進行形式化分析,根據不同的協議,結合「攻擊點」模型實現自動化的分析,得到該協議的全部攻擊類型。
本發明提出了一種無線傳感器網絡的安全性分析方法,該方法包括以下步驟:
步驟一、進行awn形式化語言擴展設計,擴展設計所包含的定義內容具體為:
將順序進程定義為:
p=e1→e2→...→en
其中,e為組成順序進程的事件序列的事件,n為事件編號;事件包括修改變量值e:={x=a},x為程序中待修改的變量,a為變量值,e:=send(msg)為發送數據包,e:=receive(msg)為接收數據包;
將同步進程定義為:
p=p2<<p1,p1、p2分別表示兩個進程;
將並發進程定義為:
p=preceive|||psend|||phandle,
preceive、preceive、phandle表示一個節點內部,同時存在的一個接收程序、一個發送程序一個接收的處理程序;
將阻塞進程定義為:
p1=[condition]p2
其中,condition表示進程p2需滿足的條件,這樣進程p2都會滿足阻塞條件後,進程p1才繼續執行;
將進程狀態轉移定義為:
p1=e1
p2=e2→e1=e2→p1
表示進程狀態轉移是隨著事件的發生,進程的狀態會隨之轉移的情形。
將上述的順序進程、並發進程、同步進程、阻塞進程四種進程之間的以下關係分別定義為:
定義有阻塞條件的順序進程為:
其中,condition.e2代表對condition中的變量,用e2的操作來更新。
定義同時具有轉移關係的同步進程為:
,(e2=receive(msg),e1=send(msg))
表示如果進程p1與p2不涉及收包、發包的事件,執行任何一個進程的第一個事件;而如果涉及到了p2的收包事件,或者p1的發包事件,必須兩個事件同時執行,且將p1的msg信息傳遞給了p2;
對於並發進程,其狀態轉移規則為:對任意一個並發的進程可以執行其第一個事件,表示為:
對於阻塞進程,其執行條件為,當condition滿足阻塞要求時,執行後面的操作;在下面的公式中,符號|=代表條件condition「滿足」條件(var==rval),事件τ代表「空事件」,
至此,所有awn語言的語法規則已經定義好;
步驟二、基於擴展的awn形式化語言,進行無線傳感網絡協議(aodv)形式化描述,具體包括如下幾點:
網絡模型描述:
定義節點進程np、節點從信道接收包的接收進程rcp;
針對每個節點i(1≤i≤n),有節點的進程與節點收包進程同步;表示為:
npi<<rcpi(1≤i≤n)
將一個節點b發送消息給節點a的過程表示為:
npa<<rcpa<<npb
含義是:每一個節點b的節點進程npb與節點a的收包進程同步,同時,節點a的節點進程npa與自己的接收進程rcpa同步,即三個進程同步;
用一個進程組每個網絡來表示網絡的聯通狀態與運行狀態;
步驟三、構建並分析無線傳感網絡aodv協議模型,包括構建aodv協議的模型、構建含有攻擊者的網絡模型,該模型具體包括;
構建aodv協議的模型:
將aodv協議節點主進程用三個協議的進程並發來表示:
np=handlemsg|||sendmsg|||recmsg
分別為處理消息、接收消息和發送消息;
另外,將節點的運行定義為處理ack信息量的進程handleack;
構建含有攻擊者的網絡模型:將攻擊者節點的攻擊進程表示為ap,與其有關的攻擊接收進程表示為arcp,依據攻擊者節點的進程arcp和其它節點的接收進程rcp構建一個進程組來表示每一個含有攻擊者的網絡模型。
步驟四、生成攻擊者模型,具體包括:
將攻擊點描述為按照六個操作中某種特定的條件執行的結果,這六個操作即為廣播broadcast、單播unicast、組播groupcast、確認ack、收包receive與更新路由表rtupdate;
將攻擊類型描述為破壞原有路由breaking、阻止新路由建立preventing、滲透penetrating和資源消耗攻擊consuming這四種類型,;攻擊點模型是對所有攻擊者集合的一個有交集的覆蓋,也就是一個攻擊類型可能包含一個或多個攻擊點,一個攻擊點可以導致多個攻擊類型;
四種攻擊類型所對應的無線傳感器網絡基本事件及其條件,如下所示:
規則1:breaking;執行更新路由表rtupdata(valid==false)多次;
規則2:preventing;阻止執行更新路由表rtupdata;
規則3:penetrating;單播unicast(type==data,dip==m);
規則4:consuming;執行廣播broadcast或者組播groupcast多次;
搜索,確認哪些receive值會導致最終執行到4條規則所描述的awn對應語句,確定攻擊者行為;
將攻擊者的攻擊入口設定為對應的是正常節點收包事件receive;
步驟五、生成對應檢測方法,包括基於誤用例檢測方法與異常檢測方法。
與現有技術相比,本發明具有以下效果:
1、提高了檢測效果的通用性,可以檢測到所有可能的攻擊,並且可以檢測所有攻擊者類型;同時,這種形式化的檢測方法也大大提高了協議分析的可靠性;實現對多種協議通用的無線傳感器網絡安全檢測系統;
2、改進了形式化awn建模語言,擴展了其表達能力,使其能夠更好的描述無線傳感器網絡協議;
3、給出了一個能夠分析協議弱點的方法。這一點對該領域的所有工作者都有一定幫助,在設計檢測模型與驗證檢測結果中,都可以起到重要參考作用;
4、自動化地生成針對性強且能耗小的攻擊檢測方法;以往的協議檢測方法都是需要分析協議後,實現整個協議的有限自動機模型,能耗較大,且對攻擊的針對性不強。實現的檢測方法是在分析潛在攻擊的基礎上,分析數據的特點,生成的對應性很強的誤用例檢測方法,效果好,能效小。
附圖說明
圖1為無線傳感器網絡安全檢測系統框架圖;
圖2為aodv協議尋址過程一模型圖;
圖3為aodv協議尋址過程二模型圖;
圖4為處理ack進程中發起rrer場景模擬圖;
圖5為攻擊者生成流程圖;
圖6為penetrating攻擊點的場景模擬示意圖;
圖7為本發明的一種無線傳感器網絡的安全性分析方法整體流程示意圖;
圖8為實驗結果漏報率比較結果示意圖;
圖9為實驗結果誤報率比較結果示意圖;
圖10為實驗結果準確率比較結果示意圖。
具體實施方式
為解決無線傳感器網絡協議繁多、手動分析每次只能分析某一個協議的問題;本發明使用改進的awn語言對無線傳感器網絡協議形式化建模,用一個通用的模型分析法解決所有的協議分析問題。對原awn語言中節點內進程並發、條件執行等行為描述能力進行擴展,提高awn語言的通用性,使改進後的awn語言可以刻畫所有的協議模型。針對每一條攻擊類型,生成對應的檢測方法。在檢測方法的選擇上,儘量生成基於誤用例的檢測方式。基於誤用例的方式對每種攻擊的針對性更強,檢測率更高,能量消耗更少。
下面結合附圖對本發明作進一步詳細描述。
如圖1所示,為本發明所基於的無線傳感器網絡安全檢測系統整體框架圖。該系統一共有五部分,包括環境因素分析、應用需求分析、協議分析、檢測框架與方法及檢測反饋部分;根據外部環境條件挑選檢測框架,並結合具體協議分析的弱點,生成具體的檢測方法。
影響安全性檢測的外界因素包括:
因素一、環境因素,在安全檢測系統中,外部因素是由於無線傳感器網絡應用本身決定的,檢測系統只能去適應它,不能去改變它。
因素二、採集方式:檢測節點可以是傳感節點本身,也可以是另外部署的獨立採集節點,甚至在某些一跳網絡中,採集節點可以是基站本身。
因素三、處理位置:分為分布式與集中式,分布式的相對需要帶寬較小,對檢測單元的硬體要求較高;集中式的對帶寬消耗較大,需要將信息發送給基站或者簇頭節點,對電量消耗較大,而且對應用本身的性能可能影響較大。
因素四、檢測頻率:分為連續性檢測與周期性檢測。連續性檢測耗電較大,但是信息更全面。而周期檢測只能收集一段時間的信息,對檢測方法的要求比較高。
因素五、應用需求:分為兩部分,安全需求與性能需求。
因素六、檢測與反饋:根據檢測到的攻擊情況,以及運行應用本身的數據情況,分析是否達到了預期的安全需求與性能需求。根據分析結果,再相應地調整檢測方法。
步驟一、進行awn形式化語言擴展設計,擴展設計所包含的定義內容具體為:
將一個進程連同此時變量的狀態表示為:在不強調變量狀態時表示為process,簡寫為p;
(1-1)、當進程為順序進程時,表示為:
p=e1→e2→...→en
e為組成順序進程的事件序列的事件event簡寫表達,1,2......n為事件編號。事件包括修改變量值e:={x=a}(其中,x為程序中的某個變量,a為要賦予該變量的值)、發送數據包e:=send(msg)和接收數據包e:=receive(msg)等。
(1-2)、當進程為同步進程時,表示為:
p=p2<<p1
同步進程為兩個需要同步的兩個進程。例如事件接收和發送,必須是「同時」發生的;那麼這樣兩個需要同步的兩個進程,用符號<<來表示:p2<<p1表示進程p2接收進程p1發送的數據包。
(1-3)、當進程為並發進程時,表示為:
p=preceive|||psend|||phandle,符號|||表示進程的並發關係;
並發進程的進程之間具有並發關係:例如在節點內部,需要實現進程的並發,無論是通過多線程、多進程或者是中斷形式。一個節點內部,同時要有一個接收程序preceive、一個發送程序preceive可能還有一個接收的處理程序phandle,這些進程代表了若干個進程,如果它們處理的三個事件分別為事件e1:={x=1};事件e2:={x++};事件e2:={x=2}。這三個事件的處理順序就很重要。如果要精密檢測這個多線程節點是否會造成「意料之外」的結果,那麼對事件並發的模擬,就需要模擬它們所有可能的發生順序。
(1-4)、當進程為阻塞進程時,表示為:
p1=[condition]p2
其中,condition表示進程p2需滿足的條件,這樣進程p2都會滿足某個條件後,進程p1才繼續執行;
(1-5)、進程狀態轉移,表示為
p1=e1
p2=e2→e1=e2→p1
進程狀態轉移是隨著事件的發生,進程的狀態會隨之轉移的情形。
順序進程、並發進程、同步進程、阻塞進程這四種不同構成的進程,它們之間的關係如下所示:
順序進程表示為:
其中,condition.e2代表對condition中的變量,用e2的操作來更新。
同步進程表示為p2<<p1,若同時有轉移關係,表示為:
,(e2=receive(msg),e1=send(msg))
上式的含義為:如果進程p1與p2不涉及收包、發包的事件,可以執行任何一個進程的第一個事件;而如果涉及到了p2的收包事件,或者p1的發包事件,必須兩個事件同時執行,且將p1的msg信息傳遞給了p2。
針對並發進程中有進程狀態轉移的規則定義為:對任意一個並發的進程可以執行其第一個事件,表示為:
阻塞進程的執行條件為,當condition滿足阻塞要求時,執行後面的操作。符號|=代表條件condition「滿足」條件(var==rval),事件τ代表「空事件」。
至此,所有awn語言的語法規則已經定義好。下面使用這些規則描述並分析aodv協議。
aodv協議中,路由只在需要傳輸數據時建立。一個從源節點s到目的節點d的路由,可以表示為一個節點序列串[s,n1,n2…nk,d],其中n1,n2…nk是位於節點s到d的中間節點。如圖2、3所示的aodv協議流程中:其中圖(2a)代表四個節點s,d,a,b,節點間的連線代表兩個節點處於通信範圍內。例如a和b處於通信範圍內,而s和d不處於通信範圍內。圖(2a)中當節點s欲傳輸數據給節點d,但是節點d的路由信息不在節點s的路由表裡,於是s節點發起一個路由請求包rrep(用帶箭頭的實線表示),廣播給它所有的鄰居節點。在此假設此時a和b不知道d的路由信息,節點a收到s的請求節點d的路由信息,a查詢自己的路由表,並不知道d的路由信息,於是節點a轉發這條rrep給它所有的鄰居節點,包括節點s,b,d,如圖(2b)。節點b收到s發起的rrep請求後,和節點a做了相同的處理動作。而後節點b和s收到a轉發的路由請求後,查看自己「處理」過這條路由請求,所以並不理會這條請求。圖(2c)中當節點d收到a轉發的路由請求後,發現自己就是目的節點,於是按照rrep的發送路徑,節點d發起了一個rrep(用帶箭頭的虛線表示),通知源節點s,路徑已經建立,按照這條路徑就可以發送數據。節點d回復一個rrep數據包給節點s,如圖(2c)。與rreq請求包用廣播發送不同,rrep是一個單播,只發送給路徑中下一跳節點。在這個例子中,雖然節點b與a都可以當作下一跳節點,但是根據跳數的多少、rreq抵達節點d的時間先後,只能選取一條路徑,圖2的(2c)中,選節點a作為下一跳節點。
如果節點a在收到路由請求後,再路由表中已有節點d的路由信息,則直接回復一個rrep數據包給節點s。如圖3所示:節點a會立即發給s節點一個rrep數據包,通知它路徑這樣可以建立。而節點b不知道d的路由信息,會繼續轉發rreq。
除了查找過對方目的地址之外,aodv協議規定了一些其它方式可以添加對方節點信息到自身路由表中。主要目的是為了使得網絡狀態更快收斂。當轉發rreq路由請求時,每個中間節點要同時更新其路由表,增加一條「反向」路由到rreq的發起者s,代表s節點可以發送rreq到自己,自己也能通過原路找到s,並且到s的路徑跳數(經過節點的個數)等於rreq的跳數。而當d節點送rrep信息給源節點s時,如果經過自身,也要把源節點的路徑信息添加到路由表之中,與rreq的添加原理類似。添加一條到目的節點d的路徑,跳數等於rrep的跳數。如圖2所示的例子中,s節點除了知道d節點的路由,根據a節點發給自己的rreq包,也添加了a節點的路由。a節點在幫忙轉發rreq、rrep包的同時,也添加了s節點和d節點的路由。
協議規範化:無線傳感器網絡協議的官方規範是用英語描述的rfc(requestforcomments)文檔。然而無線傳感器網絡實際使用中,廠商會根據應用的自身特點和需求,即便是同一個協議,不同的廠商也會有不同的實現版本,細節上會有些許的不同,所以需要一種比rfc文檔更為精細的形式化語言來刻畫協議的屬性。在不同的應用環境中,指令集使用不同,所以不能使用代碼級的程式語言來描述協議。因此本文要選取的形式化語言。awn(algebraofwirelessnetworks)語言是專門為無線傳感器網絡協議量身製作的語言。用awn語言描述的一個無線傳感器網絡協議,是一個節點內並行處理的若干個進程。包括了與信道的交互(收發數據包),節點內的同步(等待接收緩存返回信息),對節點局部變量的增加、刪除、修改、查看等操作。而原有awn語言是針對環路分析而設計的,為了著重安全性,對其語言能力進行了一定的擴充,提高了描述安全問題的能力。進程狀態由自身的變量狀態決定,同時進程內的變量值由進程來保持。根據進程的操作規則,可以操作、預測變量的值。對關鍵變量的操作與預測,就是分析協議的本質與實現方法。
步驟二、基於擴展的awn形式化語言,進行無線傳感網絡協議(aodv)形式化,具體包括網絡模型描述:
定義節點進程np(nodeprocess),為節點對其內部變量的操作,如更新路由表,接收信道的數據包,發送數據包,修改某個局部變量等;
定義節點從信道接收包的接收進程rcp(receivechannelprocess),主要負責接收其它鄰居節點發給自己的包,並且遞交給節點進程np;
每個節點i(1≤i≤n)都需要從自己的信道範圍內接收包:即自己節點的進程與節點收包進程同步,表示如下:
npi<<rcpi(1≤i≤n)
一個節點b發送消息給節點a的過程為:節點b的節點進程npb與節點a的收包進程同步,同時,節點a的節點進程npa與自己的接收進程rcpa同步,即三個進程同步。表示如下:
npa<<rcpa<<npb
每一個網絡用一個進程組來表示網絡的聯通狀態與運行狀態。
例如,對圖2中(2a)的網絡中,相鄰的節點有(a、b)、(a、s)、(a、d)、(b、s)、(b、d)。那麼,利用網絡進程組將該網絡表示為:
用大括號括起來的接收進程rcp,代表「同時」與右邊的進程同步。如第一個式子代表節點b發送的信息,可以被節點a,s,d同時接收到。需要補充的是,本模型不能考慮網絡丟包狀態。一個節點或者100%可以發送給另一個節點信息,或者就不可能發送到。不存在「一定概率」的丟包情況。
步驟三、構建並分析協議模型:
(3-1)、構建aodv協議的模型
aodv協議節點主進程由三個協議的進程並發組成,表示如下:
np=handlemsg|||sendmsg|||recmsg
分別為處理消息、接收消息和發送消息。下面將依次介紹這3個進程:(i)接收消息進程recmsg是將消息從接收進程rcp中同步接收到,並放在自身的接收緩衝區receivebuffer中。完成這一動作之後,再回到接收消息recmsg,以等待接收下一個消息。如果接收到的消息是ack包,則發送信號量,使得等待在這一條信號量上的消息知道已經成功發送。如果是一條pkttype或者rreptype類型的包,證明這是一條單播包,則回復一個ack給發送方,讓對方了解已經成功發送,然後把這條信息寫入接收緩存區。如果是其它類型的包(rreqtype和rerrtype)證明這是一條廣播包,不需要發送ack包,直接將信息寫入接收緩存區即可。(ii)處理消息進程handlemsg:這個進程首先去判斷,接收緩存區是否為空。如果不為空,則取出第一個需要處理的消息msg。之後判斷這條msg的類型,根據類型,交予不同的處理函數newpkt、pkt、rreq、rrep、rerr。特別的需要注意,如果是後三種消息,根據aodv的文檔要求,需要將發送者的路由信息加入到路由表中。也就是說這條消息路徑從節點a發送到節點b,如果節點b收到了,那麼節點b應該更新自說己到節點a的路由(比如路由a是剛啟動或者之前有移動),更新內容為:節點b可以路由尋址到a,且經過跳數為1跳,下一跳地址為節點a。(iii)發送進程sendmsg:發送進程與處理進程類似,首先需要等待發送緩衝區有消息待發送。當發送緩衝區不為空時,取出發送緩衝區的第一個待發送消息ste,然後判斷ste的目的地址dip是否在自己的路由表中有記錄,能尋址。如果能找到,並且這條消息有效性為真,則開始發送unicast,發送後,回到sendmsg進程,同時並發一個等待ack的進程(handleack)。該ack進程需要等到對方回復ack包,而後確認發送成功,或者沒有發送成功就要記錄該鏈路錯誤,然後再通知給相關節點。如果這條消息有效性valid並不為真,那麼判斷其req屬性。req屬性代表這條消息是否需要重新發起路由請求,如果req為真,那麼就發起一個路由請求rreq,目的地址為ste的dip,而sn=sn+1。發送rreq之後,回到sendmsg進程。
除了以上三個「主進程」,節點的運行還需要處理ack的進程handleack。handleack進程:在之前發送包進程sendmsg中已經提到,handleack就是處理一些單播之後的「善後」工作:首先節點m將等待一個ack信號量,如果這個信號量被喚醒,那麼判斷這個ack是否發送成功。如果是,則將發送緩衝區的這個包扔掉。如果這個包沒正常發送,或者過時間後系統觸發ack信號量,那麼代表這條路徑出問題了。對出問題的路徑,aodv文檔rfc中規定,首先需要報告一個rerr錯誤包,給所有相關的節點。如圖4所示:節點m作為中間節點,記錄了每條路由中,相關的前驅節點pre的信息。例如節點a、b都發起過請求rreq,目的地點為節點s2,經過節點m。最後路徑建立後,節點m記錄在節點s2的路由條目中的前驅集合rt.get(s2).pre:={a,b}。而節點c發起過請求,目的節點為節點s1,節點m記錄在節點s1的路由條目中的前驅集rt.get(s1).pre:={c}。當節點a發起一條到節點s2的數據包時,如果節點m在轉發數據包給節點s2的時候,ack出現了錯誤。那麼節點m除了要通知節點a這個錯誤信息,還需要通知節點b這個錯誤信息。以便這兩個節點重新發起rreq包,尋找到達節點s2的路徑。
(3-2)、構建含有攻擊者的網絡模型
攻擊者的節點執行邏輯,以進程形式表示為攻擊進程ap:attackprocess。同其它節點一樣,它也需要一個接收進程arcp:attackreceivechannelprocess。在第一個例子(圖2中(2a)所示網絡示例)中,用大括號括起來的rcp,代表「同時」與右邊的進程同步。如第一個式子代表b節點發送的信息,可以被節點a,s,d同時接收到。原有網絡節點a、b、s、d,如果加入攻擊者節點attacker且其通信範圍有節點a、s、d。那麼網絡的進程組為:
設定arcp的進程與其它節點的接收進程rcp一樣。在某些特殊環境下,攻擊者可以選擇強度更高的發送信號,而接收信號能力一般不太容易提升。這樣攻擊者的「發送鄰居」可能就會覆蓋整個網絡,對網絡產生更大的安全威脅。
再分析進程ap的目的,就是為了使得節點a、s、d至通信範圍外的b節點出現「異常」。下面舉兩個實例,說明什麼樣的攻擊進程ap會達到這樣的效果。
如圖5所示,為了從形式化的協議生成所有的攻擊類型,需要明確無線傳感器網絡中攻擊者的特點。首先找到所有協議的共有弱點,再根據本協議的特點,去匹配是否存在這些弱點,如果存在,則作為一條攻擊類型。
步驟四、生成攻擊者模型:
(4-1)、攻擊點描述;
攻擊類型:攻擊者對無線傳感器網絡的最基本破壞方式,主要體現在對無線傳感器網絡的基礎事件的破壞。攻擊一共有以下四類:
1、破壞原有路由(breaking):攻擊者破壞原有路由,使得原有路徑不能正常使用,需要重新發起組網。該攻擊點會導致dos攻擊,泛洪攻擊等。
2、阻止新路由建立(preventing):在新路由建立時,阻止新的路由建立。使部分網絡處於孤立狀態。該攻擊點可以導致dos攻擊,選擇性轉發等。
3、滲透(penetrating):參與正常組網流程,採用欺騙手段,成為路由中的節點。該攻擊點最為常見,可以導致選擇性轉發,汙水池攻擊,女巫攻擊,中間人攻擊等。
4、資源消耗攻擊(consuming):低成本、低能耗是無線傳感器網絡的核心競爭力。節點的資源包括cpu、帶寬、電量等。然而攻擊者如果用惡意手段,阻止節點睡眠,或者令節點反覆執行較高消耗的行為,則被視為資源消耗攻擊。常見的攻擊有,泛洪攻擊,虛假尋址攻擊等。
攻擊點模型並不能對攻擊者進行分類,從數學定義來講,攻擊點模型不是一個劃分。攻擊點模型是對所有攻擊者集合的一個「有交集的覆蓋」:一個攻擊類型可能包含一個或多個攻擊點,一個攻擊點可以導致多個攻擊類型。表1羅列攻擊模型的覆蓋:
表1、攻擊點對攻擊類型的覆蓋
利用awn語言中有六個基本事件,即廣播broadcast,單播unicast,組播groupcast,確認ack,收包receive與更新路由表rtupdate,將一切攻擊點描述為這六個操作按照某種特定的條件執行的結果。攻擊者的最根本目的,就是通過發送一些惡意的信息,導致正常節點再收到信息後,會按照攻擊者設定的操作執行。也就是說,攻擊者的攻擊入口對應的是正常節點收包事件receive。
如圖6所示的,為penetrating攻擊點的場景模擬示意圖。攻擊點是讓正常節點執行某種它所設定的操作,例如攻擊點penetrating,就是讓被攻擊者(節點a)發送給節點dest,本來應該途徑節點c,後來因為攻擊者節點m對節點a發送了惡意信息,節點a誤以為節點m比節點c更適合當作中間節點,就把信息發送給了攻擊者m。而攻擊者m並不一定把信息轉發給dest。其中,攻擊者的目標就是讓被攻擊者a觸發事件unicast(type==data,dip==m)。
四種攻擊類型所對應的無線傳感器網絡基本事件及其條件,如下所示:
規則1:breaking。執行rtupdata(valid==false)多次;
規則2:preventing。阻止執行rtupdata
規則3:penetrating。unicast(type==data,dip==m)
規則4:consuming。執行broadcast或者groupcast多次
從四條規則出發,就可以得到awn描述的協議中,所有能夠觸發攻擊的語句。即需要搜索,哪些receive值,會導致最終執行到4條規則所描述的awn對應語句。
(4-2)、攻擊者類型分析:
如果協議進程執行到某一個狀態被認為達成了一次攻擊者想要的攻擊。分析需要了解,如果要達到這個狀態,之前發生了哪些事件,進程達到了哪些狀態。分析表示為:
其中為已知協議進程狀態,et為需要搜索前一事件,為前一進程狀態。上式表示的含義是,已知在t時刻,在進程運行到某個狀態npt,變量條件為ct;進行搜索,直至搜索到哪些進程狀態npt-1,變量條件ct-1以及執行那一條語句et會導致進入狀態
例如,consuming攻擊點搜索,最初,從攻擊點consuming,對應aodv協議第141行的廣播事件。攻擊者的目的就是讓正常節點多執行此事件broadcast,而進程執行條件為空。
而推導出三個可能的進程狀態,為簡化次例子的搜索結果,只選第一個進程狀態繼續做推導。
最終得到的條件ct-6解釋為:收到了一個rreq的尋址,目的地址dip不為自己,也不在路由表的有效路由中,即該節點並不知道這條路由。另外這rreq條消息是第一次「處理」,那麼就「可能會」按照npt-6→npt-5→k→npt的進程轉移順序到達攻擊點,進而完成一次攻擊。
這條攻擊點的另一個條件為「多次執行」。也就是說,攻擊者要儘可能多的循環發起這樣的rreq信息。
這樣的攻擊特性,正是泛洪攻擊的攻擊特性。泛洪攻擊也就是這類攻擊的一個代表。
步驟五、生成對應檢測方法
對應檢測方法主要是基於誤用例檢測方法與異常檢測方法。生成誤用例檢測方法:針對所有檢測變量通過一步監聽得到的變量,檢測流程為:每個節點開啟混雜模式,監聽鄰居節點的發包與收報行為。遇到可以情況,分兩種級別。第一是確定該行為一定是攻擊,就發起一個遭到攻擊的警報。第二是不確定該行為是否是攻擊,發起一個可疑警報,如果一個區域內沒有人為可疑警報做「證人」則將可疑警報提升為攻擊警報;如果有證人,證實該行為為正常行為,則解除警報。相應的,檢測到可以鄰居節點正常行為,需要發起「證實」信號,為了讓其它鄰居節點解除警報。
生成異常檢測方法,目的是對誤用例檢測的一種補足,以便減少異常檢測的使用。
由於基於誤用例的檢測方法具有很多優點,主要體現在檢測速度快,檢測準確率高以及耗費資源小等特點。然而,基於誤用例的檢測主要問題是不能檢測到未知攻擊。這一點上,基於異常的檢測可以檢測到一些未知攻擊。
下面為aodv協議的完整的驗證實驗過程。
實驗使用tinyos系統平臺,tinysec安全協議。在監控數據方面,使用西普公司提供的snap平臺。在tinyos平臺上,編譯nesc代碼實現的aodv程序,燒錄到telesb節點。其通信模塊採用cc2420通信晶片。該晶片在普通模式下,只監聽自己的相關信息。而該實驗環境需要節點開啟混雜模式監聽周圍節點的收包請求,即開啟混雜模式。
監控得到數據包括發包信息、列印信息或者收包信息,包的內容以16進位字符表示。
假設按照每個攻擊者生成70次攻擊,混合30次正常收發包。實驗規模為10-50個節點,部署在10m*10m的範圍內。其中5%的節點作為攻擊者。
實驗環境可以直接獲取每個節點串口傳回的信息,檢測過程中,不必在節點上直接處理數據,而是集中傳回snap平臺,模擬節點的分析過程而做攻擊檢測。
首先分析aodv協議,可能受到哪些攻擊者類型的攻擊。根據前文的檢測方法,aodv協議可能受到的攻擊有以下9類,如表6.1所示。
其中,攻擊類型1-6是滲透(penetrating)型攻擊點,這些攻擊會導致中間人攻擊、汙水池攻擊、女巫攻擊等。攻擊類型1-3可以將自己的ip信息篡改,使得被攻擊節點誤以為可以直接連接到某個「虛擬」節點。當被攻擊節點發起對「虛擬」節點的信息後,攻擊者利用混雜模式,接收該信息,並繼續跟蹤破壞。而攻擊類型4-6是攻擊者偽造了一條虛假目的地址的信息,無需改動自己的ip。當被攻擊者接收到該信息後,會更新路由表,並將攻擊者作為虛假目的地址的最優路由。此後每當被攻擊者發起向虛假目的地址的信息時,攻擊者都會截獲該信息。此外,攻擊類型4-6會產生更嚴重影響,當另外一個正常節點,想被攻擊者問詢虛假目的地址路徑時,被攻擊者會將自己的錯誤信息告訴給那個正常節點,造成了攻擊效果急速擴大。攻擊者類型7-8是破壞原有路由(breaking)型攻擊點。攻擊者7描述的是攻擊者偽造一些並不存在的rerr信息,使得收到這個rerr信息的節點誤以為一些路徑不能正常到達了,就刪除了原有路由,進而破壞了整個網絡。攻擊者類型8描述攻擊者阻止、幹擾一些ack的正常發送,使得節點間的通信沒有及時ack反饋,這樣發送方就會誤以為接收方失去連結,進而刪除這條路由,破壞網絡。
攻擊者類型9是一種資源消耗攻擊(consuming)型攻擊點,這類攻擊會導致dos等攻擊。攻擊者可以定期發起rreq請求,尋找一個網絡中並不存在的id號。這樣整個網絡都會幫助攻擊者轉發rreq消息,並且不會有最終返回。攻擊者可以每次尋找不同的id號,也可以尋找同一個id號而選擇不同的序列號。
針對以上9種攻擊類型,對應的檢測方法如表6.2所示。(帶*的攻擊類型6-9,說明需要用基於異常的檢測)
攻擊類型1-3,檢測方法主要是檢測mac地址與ip地址相同,這樣可以杜絕這三類攻擊者偽造自己ip而導致的虛假路由信息。
攻擊類型4-5是在轉發rreq與rrep包時,監聽可疑節點的收包信息與發包信息是否匹配。對特別敏感的變量:跳數hop與sn信息,不能再轉發過程中隨意篡改。如果篡改這些信息,攻擊者可以使被攻擊者更容易接收自己作為路由。
攻擊類型6:在回復rrep路由信息時,可能是因為節點轉發前後繼節點的rrep信息,也可以是回復前驅節點的rreq信息。對於轉發後繼節點的rrep信息,可以構造轉發時的檢測規則。而對於自己產生的rrep信息,需要用基於異常的方法檢測。
攻擊類型7是檢測,rerr是通過轉發形式產生,或者通過缺少ack的原因產生。不能隨意構造rerr信息。其中,轉發類型的規則可以檢測,而自己構造rerr的情況,需要用基於異常的方式檢測。
攻擊類型8-9,因為其沒有關鍵變量的對比檢測方式,只能使用基於異常的檢測方法,分析網絡中各個包類型的流量分析,判斷該節點是否屬於可疑攻擊者。
實驗方法:進行模擬實驗,每類攻擊模擬了70次攻擊,正確檢測到這是攻擊的次數為p,則漏報率為而對30次正常實驗,正確的報告這不是一個攻擊的次數為n,則誤報率為最終,準確率為
對攻擊類型1-9,分為三組,第一組為攻擊類型1-5,對應的檢測方法是算法生成的基於誤用例的檢測方。而攻擊類型6-7是基於誤用例的檢測方法與基於異常檢測方法的結合方法。最後攻擊類型8-9隻能依賴基於異常檢測的方法。檢測結果的漏報率、誤報率與準確率如圖8、9、10所示。
實驗結果表明,本方法在節點較少時準確率較高。而同樣節點個數的情況下,基於誤用例的檢測方法準確率較高。出現的錯誤主要是在異常檢測的誤報情況,可能將某些協議正常的節點數據流的變化,報告為存在攻擊(誤報),這可能是因為網絡拓撲的變化過程使得某些節點的轉發率急劇變化。如果是使用基於異常的檢測方法,會將網絡拓撲的正常變化也界定為一個「異常」變化,並報告錯誤。
表6-1、生成攻擊類型
表6-2、aodv檢測方法