欧美在线观看视频网站,亚洲熟妇色自偷自拍另类,啪啪伊人网,中文字幕第13亚洲另类,中文成人久久久久影院免费观看 ,精品人妻人人做人人爽,亚洲a视频

一種無線傳感器網絡的安全性分析方法與流程

文檔序號:11410764閱讀:704來源:國知局
一種無線傳感器網絡的安全性分析方法與流程

本發(fā)明屬于物聯(lián)網安全領域,特別是涉及一種無線傳感器網絡安全性分析方法。



背景技術:

無線傳感器網絡作為物聯(lián)網的重要組成與技術支撐,其安全問題受到人們越來越廣泛的關注。無線傳感器網絡不同于有線網絡,因其協(xié)議多樣性與網絡動態(tài)性,網絡安全性受到極大威脅。現有的無線傳感器網絡安全檢測系統(tǒng)沒有對協(xié)議形式化分析,也沒有對攻擊類型做深入研究。這致使其檢測到的攻擊類型不夠全面,檢測效果可靠性差。現有的安全檢測方法受到特定協(xié)議的局限性,每個方法只能針對一個協(xié)議,難以移植應用到其它協(xié)議。

無線傳感器網絡的網絡拓撲會隨不穩(wěn)定的環(huán)境因素而動態(tài)改變,而網絡傳播只能通過廣播的形式。這兩個特點使得無線傳感器網絡的安全性受到挑戰(zhàn)。在無線傳感器網絡的眾多安全問題中,最嚴重的威脅就是在組網與傳輸部分,容易受到中間人攻擊、泛洪攻擊、女巫攻擊、選擇性轉發(fā)攻擊等??赡茉斐蓢乐氐膰邑敭a損失與人民安全威脅,例如輸電網絡中的偷電漏電、森林火警的警報失效、智能家居的隱私泄露等。

傳統(tǒng)網絡的安全檢測方法不能直接應用于無線傳感器網絡系統(tǒng)的主要原因有兩點:1、無線傳感器網絡資源有限。無線傳感器網絡的電量、cpu、內存、帶寬等關鍵資源非常有限,檢測系統(tǒng)會嚴重影響原有網絡的運行,使原有無線傳感器網絡失去了低能耗、低成本的優(yōu)勢;2、無線傳感器網絡協(xié)議不完善。無線傳感器網絡技術剛剛起步,無線傳感器網絡協(xié)議還沒有形成統(tǒng)一的標準,廠商之間的協(xié)議均有不同,目前沒有一個穩(wěn)定的無線傳感器網絡安全協(xié)議,也沒有成熟的攻擊類型分析。研究者只能根據自己的理解去構造攻擊者,檢測能力不能得到檢驗與保障。所以需要一個更加全面、更加可靠的安全檢測機制,這也是建立無線傳感器網絡安全檢測平臺的目標。



技術實現要素:

為了克服現有技術中無線傳感器網絡的安全檢測經常出現分析不全面、研究者很少將一個協(xié)議的所有攻擊類型全部分析到位的問題,本發(fā)明提出了一種無線傳感器網絡的安全性分析方法,主要用于對無線傳感器網絡協(xié)議進行形式化分析,根據不同的協(xié)議,結合“攻擊點”模型實現自動化的分析,得到該協(xié)議的全部攻擊類型。

本發(fā)明提出了一種無線傳感器網絡的安全性分析方法,該方法包括以下步驟:

步驟一、進行awn形式化語言擴展設計,擴展設計所包含的定義內容具體為:

將順序進程定義為:

p=e1→e2→...→en

其中,e為組成順序進程的事件序列的事件,n為事件編號;事件包括修改變量值e:={x=a},x為程序中待修改的變量,a為變量值,e:=send(msg)為發(fā)送數據包,e:=receive(msg)為接收數據包;

將同步進程定義為:

p=p2<<p1,p1、p2分別表示兩個進程;

將并發(fā)進程定義為:

p=preceive|||psend|||phandle,

preceive、preceive、phandle表示一個節(jié)點內部,同時存在的一個接收程序、一個發(fā)送程序一個接收的處理程序;

將阻塞進程定義為:

p1=[condition]p2

其中,condition表示進程p2需滿足的條件,這樣進程p2都會滿足阻塞條件后,進程p1才繼續(xù)執(zhí)行;

將進程狀態(tài)轉移定義為:

p1=e1

p2=e2→e1=e2→p1

表示進程狀態(tài)轉移是隨著事件的發(fā)生,進程的狀態(tài)會隨之轉移的情形。

將上述的順序進程、并發(fā)進程、同步進程、阻塞進程四種進程之間的以下關系分別定義為:

定義有阻塞條件的順序進程為:

其中,condition.e2代表對condition中的變量,用e2的操作來更新。

定義同時具有轉移關系的同步進程為:

,(e2=receive(msg),e1=send(msg))

表示如果進程p1與p2不涉及收包、發(fā)包的事件,執(zhí)行任何一個進程的第一個事件;而如果涉及到了p2的收包事件,或者p1的發(fā)包事件,必須兩個事件同時執(zhí)行,且將p1的msg信息傳遞給了p2;

對于并發(fā)進程,其狀態(tài)轉移規(guī)則為:對任意一個并發(fā)的進程可以執(zhí)行其第一個事件,表示為:

對于阻塞進程,其執(zhí)行條件為,當condition滿足阻塞要求時,執(zhí)行后面的操作;在下面的公式中,符號|=代表條件condition“滿足”條件(var==rval),事件τ代表“空事件”,

至此,所有awn語言的語法規(guī)則已經定義好;

步驟二、基于擴展的awn形式化語言,進行無線傳感網絡協(xié)議(aodv)形式化描述,具體包括如下幾點:

網絡模型描述:

定義節(jié)點進程np、節(jié)點從信道接收包的接收進程rcp;

針對每個節(jié)點i(1≤i≤n),有節(jié)點的進程與節(jié)點收包進程同步;表示為:

npi<<rcpi(1≤i≤n)

將一個節(jié)點b發(fā)送消息給節(jié)點a的過程表示為:

npa<<rcpa<<npb

含義是:每一個節(jié)點b的節(jié)點進程npb與節(jié)點a的收包進程同步,同時,節(jié)點a的節(jié)點進程npa與自己的接收進程rcpa同步,即三個進程同步;

用一個進程組每個網絡來表示網絡的聯(lián)通狀態(tài)與運行狀態(tài);

步驟三、構建并分析無線傳感網絡aodv協(xié)議模型,包括構建aodv協(xié)議的模型、構建含有攻擊者的網絡模型,該模型具體包括;

構建aodv協(xié)議的模型:

將aodv協(xié)議節(jié)點主進程用三個協(xié)議的進程并發(fā)來表示:

np()=handlemsg()|||sendmsg()|||recmsg()

分別為處理消息、接收消息和發(fā)送消息;

另外,將節(jié)點的運行定義為處理ack信息量的進程handleack;

構建含有攻擊者的網絡模型:將攻擊者節(jié)點的攻擊進程表示為ap,與其有關的攻擊接收進程表示為arcp,依據攻擊者節(jié)點的進程arcp和其它節(jié)點的接收進程rcp構建一個進程組來表示每一個含有攻擊者的網絡模型。

步驟四、生成攻擊者模型,具體包括:

將攻擊點描述為按照六個操作中某種特定的條件執(zhí)行的結果,這六個操作即為廣播broadcast、單播unicast、組播groupcast、確認ack、收包receive與更新路由表rtupdate;

將攻擊類型描述為破壞原有路由breaking、阻止新路由建立preventing、滲透penetrating和資源消耗攻擊consuming這四種類型,;攻擊點模型是對所有攻擊者集合的一個有交集的覆蓋,也就是一個攻擊類型可能包含一個或多個攻擊點,一個攻擊點可以導致多個攻擊類型;

四種攻擊類型所對應的無線傳感器網絡基本事件及其條件,如下所示:

規(guī)則1:breaking;執(zhí)行更新路由表rtupdata(valid==false)多次;

規(guī)則2:preventing;阻止執(zhí)行更新路由表rtupdata();

規(guī)則3:penetrating;單播unicast(type==data,dip==m);

規(guī)則4:consuming;執(zhí)行廣播broadcast或者組播groupcast多次;

搜索,確認哪些receive值會導致最終執(zhí)行到4條規(guī)則所描述的awn對應語句,確定攻擊者行為;

將攻擊者的攻擊入口設定為對應的是正常節(jié)點收包事件receive;

步驟五、生成對應檢測方法,包括基于誤用例檢測方法與異常檢測方法。

與現有技術相比,本發(fā)明具有以下效果:

1、提高了檢測效果的通用性,可以檢測到所有可能的攻擊,并且可以檢測所有攻擊者類型;同時,這種形式化的檢測方法也大大提高了協(xié)議分析的可靠性;實現對多種協(xié)議通用的無線傳感器網絡安全檢測系統(tǒng);

2、改進了形式化awn建模語言,擴展了其表達能力,使其能夠更好的描述無線傳感器網絡協(xié)議;

3、給出了一個能夠分析協(xié)議弱點的方法。這一點對該領域的所有工作者都有一定幫助,在設計檢測模型與驗證檢測結果中,都可以起到重要參考作用;

4、自動化地生成針對性強且能耗小的攻擊檢測方法;以往的協(xié)議檢測方法都是需要分析協(xié)議后,實現整個協(xié)議的有限自動機模型,能耗較大,且對攻擊的針對性不強。實現的檢測方法是在分析潛在攻擊的基礎上,分析數據的特點,生成的對應性很強的誤用例檢測方法,效果好,能效小。

附圖說明

圖1為無線傳感器網絡安全檢測系統(tǒng)框架圖;

圖2為aodv協(xié)議尋址過程一模型圖;

圖3為aodv協(xié)議尋址過程二模型圖;

圖4為處理ack進程中發(fā)起rrer場景模擬圖;

圖5為攻擊者生成流程圖;

圖6為penetrating攻擊點的場景模擬示意圖;

圖7為本發(fā)明的一種無線傳感器網絡的安全性分析方法整體流程示意圖;

圖8為實驗結果漏報率比較結果示意圖;

圖9為實驗結果誤報率比較結果示意圖;

圖10為實驗結果準確率比較結果示意圖。

具體實施方式

為解決無線傳感器網絡協(xié)議繁多、手動分析每次只能分析某一個協(xié)議的問題;本發(fā)明使用改進的awn語言對無線傳感器網絡協(xié)議形式化建模,用一個通用的模型分析法解決所有的協(xié)議分析問題。對原awn語言中節(jié)點內進程并發(fā)、條件執(zhí)行等行為描述能力進行擴展,提高awn語言的通用性,使改進后的awn語言可以刻畫所有的協(xié)議模型。針對每一條攻擊類型,生成對應的檢測方法。在檢測方法的選擇上,盡量生成基于誤用例的檢測方式?;谡`用例的方式對每種攻擊的針對性更強,檢測率更高,能量消耗更少。

下面結合附圖對本發(fā)明作進一步詳細描述。

如圖1所示,為本發(fā)明所基于的無線傳感器網絡安全檢測系統(tǒng)整體框架圖。該系統(tǒng)一共有五部分,包括環(huán)境因素分析、應用需求分析、協(xié)議分析、檢測框架與方法及檢測反饋部分;根據外部環(huán)境條件挑選檢測框架,并結合具體協(xié)議分析的弱點,生成具體的檢測方法。

影響安全性檢測的外界因素包括:

因素一、環(huán)境因素,在安全檢測系統(tǒng)中,外部因素是由于無線傳感器網絡應用本身決定的,檢測系統(tǒng)只能去適應它,不能去改變它。

因素二、采集方式:檢測節(jié)點可以是傳感節(jié)點本身,也可以是另外部署的獨立采集節(jié)點,甚至在某些一跳網絡中,采集節(jié)點可以是基站本身。

因素三、處理位置:分為分布式與集中式,分布式的相對需要帶寬較小,對檢測單元的硬件要求較高;集中式的對帶寬消耗較大,需要將信息發(fā)送給基站或者簇頭節(jié)點,對電量消耗較大,而且對應用本身的性能可能影響較大。

因素四、檢測頻率:分為連續(xù)性檢測與周期性檢測。連續(xù)性檢測耗電較大,但是信息更全面。而周期檢測只能收集一段時間的信息,對檢測方法的要求比較高。

因素五、應用需求:分為兩部分,安全需求與性能需求。

因素六、檢測與反饋:根據檢測到的攻擊情況,以及運行應用本身的數據情況,分析是否達到了預期的安全需求與性能需求。根據分析結果,再相應地調整檢測方法。

步驟一、進行awn形式化語言擴展設計,擴展設計所包含的定義內容具體為:

將一個進程連同此時變量的狀態(tài)表示為:在不強調變量狀態(tài)時表示為process,簡寫為p;

(1-1)、當進程為順序進程時,表示為:

p=e1→e2→...→en

e為組成順序進程的事件序列的事件event簡寫表達,1,2......n為事件編號。事件包括修改變量值e:={x=a}(其中,x為程序中的某個變量,a為要賦予該變量的值)、發(fā)送數據包e:=send(msg)和接收數據包e:=receive(msg)等。

(1-2)、當進程為同步進程時,表示為:

p=p2<<p1

同步進程為兩個需要同步的兩個進程。例如事件接收和發(fā)送,必須是“同時”發(fā)生的;那么這樣兩個需要同步的兩個進程,用符號<<來表示:p2<<p1表示進程p2接收進程p1發(fā)送的數據包。

(1-3)、當進程為并發(fā)進程時,表示為:

p=preceive|||psend|||phandle,符號|||表示進程的并發(fā)關系;

并發(fā)進程的進程之間具有并發(fā)關系:例如在節(jié)點內部,需要實現進程的并發(fā),無論是通過多線程、多進程或者是中斷形式。一個節(jié)點內部,同時要有一個接收程序preceive、一個發(fā)送程序preceive可能還有一個接收的處理程序phandle,這些進程代表了若干個進程,如果它們處理的三個事件分別為事件e1:={x=1};事件e2:={x++};事件e2:={x=2}。這三個事件的處理順序就很重要。如果要精密檢測這個多線程節(jié)點是否會造成“意料之外”的結果,那么對事件并發(fā)的模擬,就需要模擬它們所有可能的發(fā)生順序。

(1-4)、當進程為阻塞進程時,表示為:

p1=[condition]p2

其中,condition表示進程p2需滿足的條件,這樣進程p2都會滿足某個條件后,進程p1才繼續(xù)執(zhí)行;

(1-5)、進程狀態(tài)轉移,表示為

p1=e1

p2=e2→e1=e2→p1

進程狀態(tài)轉移是隨著事件的發(fā)生,進程的狀態(tài)會隨之轉移的情形。

順序進程、并發(fā)進程、同步進程、阻塞進程這四種不同構成的進程,它們之間的關系如下所示:

順序進程表示為:

其中,condition.e2代表對condition中的變量,用e2的操作來更新。

同步進程表示為p2<<p1,若同時有轉移關系,表示為:

,(e2=receive(msg),e1=send(msg))

上式的含義為:如果進程p1與p2不涉及收包、發(fā)包的事件,可以執(zhí)行任何一個進程的第一個事件;而如果涉及到了p2的收包事件,或者p1的發(fā)包事件,必須兩個事件同時執(zhí)行,且將p1的msg信息傳遞給了p2。

針對并發(fā)進程中有進程狀態(tài)轉移的規(guī)則定義為:對任意一個并發(fā)的進程可以執(zhí)行其第一個事件,表示為:

阻塞進程的執(zhí)行條件為,當condition滿足阻塞要求時,執(zhí)行后面的操作。符號|=代表條件condition“滿足”條件(var==rval),事件τ代表“空事件”。

至此,所有awn語言的語法規(guī)則已經定義好。下面使用這些規(guī)則描述并分析aodv協(xié)議。

aodv協(xié)議中,路由只在需要傳輸數據時建立。一個從源節(jié)點s到目的節(jié)點d的路由,可以表示為一個節(jié)點序列串[s,n1,n2…nk,d],其中n1,n2…nk是位于節(jié)點s到d的中間節(jié)點。如圖2、3所示的aodv協(xié)議流程中:其中圖(2a)代表四個節(jié)點s,d,a,b,節(jié)點間的連線代表兩個節(jié)點處于通信范圍內。例如a和b處于通信范圍內,而s和d不處于通信范圍內。圖(2a)中當節(jié)點s欲傳輸數據給節(jié)點d,但是節(jié)點d的路由信息不在節(jié)點s的路由表里,于是s節(jié)點發(fā)起一個路由請求包rrep(用帶箭頭的實線表示),廣播給它所有的鄰居節(jié)點。在此假設此時a和b不知道d的路由信息,節(jié)點a收到s的請求節(jié)點d的路由信息,a查詢自己的路由表,并不知道d的路由信息,于是節(jié)點a轉發(fā)這條rrep給它所有的鄰居節(jié)點,包括節(jié)點s,b,d,如圖(2b)。節(jié)點b收到s發(fā)起的rrep請求后,和節(jié)點a做了相同的處理動作。而后節(jié)點b和s收到a轉發(fā)的路由請求后,查看自己“處理”過這條路由請求,所以并不理會這條請求。圖(2c)中當節(jié)點d收到a轉發(fā)的路由請求后,發(fā)現自己就是目的節(jié)點,于是按照rrep的發(fā)送路徑,節(jié)點d發(fā)起了一個rrep(用帶箭頭的虛線表示),通知源節(jié)點s,路徑已經建立,按照這條路徑就可以發(fā)送數據。節(jié)點d回復一個rrep數據包給節(jié)點s,如圖(2c)。與rreq請求包用廣播發(fā)送不同,rrep是一個單播,只發(fā)送給路徑中下一跳節(jié)點。在這個例子中,雖然節(jié)點b與a都可以當作下一跳節(jié)點,但是根據跳數的多少、rreq抵達節(jié)點d的時間先后,只能選取一條路徑,圖2的(2c)中,選節(jié)點a作為下一跳節(jié)點。

如果節(jié)點a在收到路由請求后,再路由表中已有節(jié)點d的路由信息,則直接回復一個rrep數據包給節(jié)點s。如圖3所示:節(jié)點a會立即發(fā)給s節(jié)點一個rrep數據包,通知它路徑這樣可以建立。而節(jié)點b不知道d的路由信息,會繼續(xù)轉發(fā)rreq。

除了查找過對方目的地址之外,aodv協(xié)議規(guī)定了一些其它方式可以添加對方節(jié)點信息到自身路由表中。主要目的是為了使得網絡狀態(tài)更快收斂。當轉發(fā)rreq路由請求時,每個中間節(jié)點要同時更新其路由表,增加一條“反向”路由到rreq的發(fā)起者s,代表s節(jié)點可以發(fā)送rreq到自己,自己也能通過原路找到s,并且到s的路徑跳數(經過節(jié)點的個數)等于rreq的跳數。而當d節(jié)點送rrep信息給源節(jié)點s時,如果經過自身,也要把源節(jié)點的路徑信息添加到路由表之中,與rreq的添加原理類似。添加一條到目的節(jié)點d的路徑,跳數等于rrep的跳數。如圖2所示的例子中,s節(jié)點除了知道d節(jié)點的路由,根據a節(jié)點發(fā)給自己的rreq包,也添加了a節(jié)點的路由。a節(jié)點在幫忙轉發(fā)rreq、rrep包的同時,也添加了s節(jié)點和d節(jié)點的路由。

協(xié)議規(guī)范化:無線傳感器網絡協(xié)議的官方規(guī)范是用英語描述的rfc(requestforcomments)文檔。然而無線傳感器網絡實際使用中,廠商會根據應用的自身特點和需求,即便是同一個協(xié)議,不同的廠商也會有不同的實現版本,細節(jié)上會有些許的不同,所以需要一種比rfc文檔更為精細的形式化語言來刻畫協(xié)議的屬性。在不同的應用環(huán)境中,指令集使用不同,所以不能使用代碼級的編程語言來描述協(xié)議。因此本文要選取的形式化語言。awn(algebraofwirelessnetworks)語言是專門為無線傳感器網絡協(xié)議量身制作的語言。用awn語言描述的一個無線傳感器網絡協(xié)議,是一個節(jié)點內并行處理的若干個進程。包括了與信道的交互(收發(fā)數據包),節(jié)點內的同步(等待接收緩存返回信息),對節(jié)點局部變量的增加、刪除、修改、查看等操作。而原有awn語言是針對環(huán)路分析而設計的,為了著重安全性,對其語言能力進行了一定的擴充,提高了描述安全問題的能力。進程狀態(tài)由自身的變量狀態(tài)決定,同時進程內的變量值由進程來保持。根據進程的操作規(guī)則,可以操作、預測變量的值。對關鍵變量的操作與預測,就是分析協(xié)議的本質與實現方法。

步驟二、基于擴展的awn形式化語言,進行無線傳感網絡協(xié)議(aodv)形式化,具體包括網絡模型描述:

定義節(jié)點進程np(nodeprocess),為節(jié)點對其內部變量的操作,如更新路由表,接收信道的數據包,發(fā)送數據包,修改某個局部變量等;

定義節(jié)點從信道接收包的接收進程rcp(receivechannelprocess),主要負責接收其它鄰居節(jié)點發(fā)給自己的包,并且遞交給節(jié)點進程np;

每個節(jié)點i(1≤i≤n)都需要從自己的信道范圍內接收包:即自己節(jié)點的進程與節(jié)點收包進程同步,表示如下:

npi<<rcpi(1≤i≤n)

一個節(jié)點b發(fā)送消息給節(jié)點a的過程為:節(jié)點b的節(jié)點進程npb與節(jié)點a的收包進程同步,同時,節(jié)點a的節(jié)點進程npa與自己的接收進程rcpa同步,即三個進程同步。表示如下:

npa<<rcpa<<npb

每一個網絡用一個進程組來表示網絡的聯(lián)通狀態(tài)與運行狀態(tài)。

例如,對圖2中(2a)的網絡中,相鄰的節(jié)點有(a、b)、(a、s)、(a、d)、(b、s)、(b、d)。那么,利用網絡進程組將該網絡表示為:

用大括號括起來的接收進程rcp,代表“同時”與右邊的進程同步。如第一個式子代表節(jié)點b發(fā)送的信息,可以被節(jié)點a,s,d同時接收到。需要補充的是,本模型不能考慮網絡丟包狀態(tài)。一個節(jié)點或者100%可以發(fā)送給另一個節(jié)點信息,或者就不可能發(fā)送到。不存在“一定概率”的丟包情況。

步驟三、構建并分析協(xié)議模型:

(3-1)、構建aodv協(xié)議的模型

aodv協(xié)議節(jié)點主進程由三個協(xié)議的進程并發(fā)組成,表示如下:

np()=handlemsg()|||sendmsg()|||recmsg()

分別為處理消息、接收消息和發(fā)送消息。下面將依次介紹這3個進程:(i)接收消息進程recmsg是將消息從接收進程rcp中同步接收到,并放在自身的接收緩沖區(qū)receivebuffer中。完成這一動作之后,再回到接收消息recmsg,以等待接收下一個消息。如果接收到的消息是ack包,則發(fā)送信號量,使得等待在這一條信號量上的消息知道已經成功發(fā)送。如果是一條pkttype或者rreptype類型的包,證明這是一條單播包,則回復一個ack給發(fā)送方,讓對方了解已經成功發(fā)送,然后把這條信息寫入接收緩存區(qū)。如果是其它類型的包(rreqtype和rerrtype)證明這是一條廣播包,不需要發(fā)送ack包,直接將信息寫入接收緩存區(qū)即可。(ii)處理消息進程handlemsg:這個進程首先去判斷,接收緩存區(qū)是否為空。如果不為空,則取出第一個需要處理的消息msg。之后判斷這條msg的類型,根據類型,交予不同的處理函數newpkt、pkt、rreq、rrep、rerr。特別的需要注意,如果是后三種消息,根據aodv的文檔要求,需要將發(fā)送者的路由信息加入到路由表中。也就是說這條消息路徑從節(jié)點a發(fā)送到節(jié)點b,如果節(jié)點b收到了,那么節(jié)點b應該更新自說己到節(jié)點a的路由(比如路由a是剛啟動或者之前有移動),更新內容為:節(jié)點b可以路由尋址到a,且經過跳數為1跳,下一跳地址為節(jié)點a。(iii)發(fā)送進程sendmsg:發(fā)送進程與處理進程類似,首先需要等待發(fā)送緩沖區(qū)有消息待發(fā)送。當發(fā)送緩沖區(qū)不為空時,取出發(fā)送緩沖區(qū)的第一個待發(fā)送消息ste,然后判斷ste的目的地址dip是否在自己的路由表中有記錄,能尋址。如果能找到,并且這條消息有效性為真,則開始發(fā)送unicast,發(fā)送后,回到sendmsg進程,同時并發(fā)一個等待ack的進程(handleack)。該ack進程需要等到對方回復ack包,而后確認發(fā)送成功,或者沒有發(fā)送成功就要記錄該鏈路錯誤,然后再通知給相關節(jié)點。如果這條消息有效性valid并不為真,那么判斷其req屬性。req屬性代表這條消息是否需要重新發(fā)起路由請求,如果req為真,那么就發(fā)起一個路由請求rreq,目的地址為ste的dip,而sn=sn+1。發(fā)送rreq之后,回到sendmsg進程。

除了以上三個“主進程”,節(jié)點的運行還需要處理ack的進程handleack。handleack進程:在之前發(fā)送包進程sendmsg中已經提到,handleack就是處理一些單播之后的“善后”工作:首先節(jié)點m將等待一個ack信號量,如果這個信號量被喚醒,那么判斷這個ack是否發(fā)送成功。如果是,則將發(fā)送緩沖區(qū)的這個包扔掉。如果這個包沒正常發(fā)送,或者過時間后系統(tǒng)觸發(fā)ack信號量,那么代表這條路徑出問題了。對出問題的路徑,aodv文檔rfc中規(guī)定,首先需要報告一個rerr錯誤包,給所有相關的節(jié)點。如圖4所示:節(jié)點m作為中間節(jié)點,記錄了每條路由中,相關的前驅節(jié)點pre的信息。例如節(jié)點a、b都發(fā)起過請求rreq,目的地點為節(jié)點s2,經過節(jié)點m。最后路徑建立后,節(jié)點m記錄在節(jié)點s2的路由條目中的前驅集合rt.get(s2).pre:={a,b}。而節(jié)點c發(fā)起過請求,目的節(jié)點為節(jié)點s1,節(jié)點m記錄在節(jié)點s1的路由條目中的前驅集rt.get(s1).pre:={c}。當節(jié)點a發(fā)起一條到節(jié)點s2的數據包時,如果節(jié)點m在轉發(fā)數據包給節(jié)點s2的時候,ack出現了錯誤。那么節(jié)點m除了要通知節(jié)點a這個錯誤信息,還需要通知節(jié)點b這個錯誤信息。以便這兩個節(jié)點重新發(fā)起rreq包,尋找到達節(jié)點s2的路徑。

(3-2)、構建含有攻擊者的網絡模型

攻擊者的節(jié)點執(zhí)行邏輯,以進程形式表示為攻擊進程ap:attackprocess()。同其它節(jié)點一樣,它也需要一個接收進程arcp:attackreceivechannelprocess()。在第一個例子(圖2中(2a)所示網絡示例)中,用大括號括起來的rcp,代表“同時”與右邊的進程同步。如第一個式子代表b節(jié)點發(fā)送的信息,可以被節(jié)點a,s,d同時接收到。原有網絡節(jié)點a、b、s、d,如果加入攻擊者節(jié)點attacker且其通信范圍有節(jié)點a、s、d。那么網絡的進程組為:

設定arcp的進程與其它節(jié)點的接收進程rcp一樣。在某些特殊環(huán)境下,攻擊者可以選擇強度更高的發(fā)送信號,而接收信號能力一般不太容易提升。這樣攻擊者的“發(fā)送鄰居”可能就會覆蓋整個網絡,對網絡產生更大的安全威脅。

再分析進程ap的目的,就是為了使得節(jié)點a、s、d至通信范圍外的b節(jié)點出現“異?!薄O旅媾e兩個實例,說明什么樣的攻擊進程ap會達到這樣的效果。

如圖5所示,為了從形式化的協(xié)議生成所有的攻擊類型,需要明確無線傳感器網絡中攻擊者的特點。首先找到所有協(xié)議的共有弱點,再根據本協(xié)議的特點,去匹配是否存在這些弱點,如果存在,則作為一條攻擊類型。

步驟四、生成攻擊者模型:

(4-1)、攻擊點描述;

攻擊類型:攻擊者對無線傳感器網絡的最基本破壞方式,主要體現在對無線傳感器網絡的基礎事件的破壞。攻擊一共有以下四類:

1、破壞原有路由(breaking):攻擊者破壞原有路由,使得原有路徑不能正常使用,需要重新發(fā)起組網。該攻擊點會導致dos攻擊,泛洪攻擊等。

2、阻止新路由建立(preventing):在新路由建立時,阻止新的路由建立。使部分網絡處于孤立狀態(tài)。該攻擊點可以導致dos攻擊,選擇性轉發(fā)等。

3、滲透(penetrating):參與正常組網流程,采用欺騙手段,成為路由中的節(jié)點。該攻擊點最為常見,可以導致選擇性轉發(fā),污水池攻擊,女巫攻擊,中間人攻擊等。

4、資源消耗攻擊(consuming):低成本、低能耗是無線傳感器網絡的核心競爭力。節(jié)點的資源包括cpu、帶寬、電量等。然而攻擊者如果用惡意手段,阻止節(jié)點睡眠,或者令節(jié)點反復執(zhí)行較高消耗的行為,則被視為資源消耗攻擊。常見的攻擊有,泛洪攻擊,虛假尋址攻擊等。

攻擊點模型并不能對攻擊者進行分類,從數學定義來講,攻擊點模型不是一個劃分。攻擊點模型是對所有攻擊者集合的一個“有交集的覆蓋”:一個攻擊類型可能包含一個或多個攻擊點,一個攻擊點可以導致多個攻擊類型。表1羅列攻擊模型的覆蓋:

表1、攻擊點對攻擊類型的覆蓋

利用awn語言中有六個基本事件,即廣播broadcast,單播unicast,組播groupcast,確認ack,收包receive與更新路由表rtupdate,將一切攻擊點描述為這六個操作按照某種特定的條件執(zhí)行的結果。攻擊者的最根本目的,就是通過發(fā)送一些惡意的信息,導致正常節(jié)點再收到信息后,會按照攻擊者設定的操作執(zhí)行。也就是說,攻擊者的攻擊入口對應的是正常節(jié)點收包事件receive。

如圖6所示的,為penetrating攻擊點的場景模擬示意圖。攻擊點是讓正常節(jié)點執(zhí)行某種它所設定的操作,例如攻擊點penetrating,就是讓被攻擊者(節(jié)點a)發(fā)送給節(jié)點dest,本來應該途徑節(jié)點c,后來因為攻擊者節(jié)點m對節(jié)點a發(fā)送了惡意信息,節(jié)點a誤以為節(jié)點m比節(jié)點c更適合當作中間節(jié)點,就把信息發(fā)送給了攻擊者m。而攻擊者m并不一定把信息轉發(fā)給dest。其中,攻擊者的目標就是讓被攻擊者a觸發(fā)事件unicast(type==data,dip==m)。

四種攻擊類型所對應的無線傳感器網絡基本事件及其條件,如下所示:

規(guī)則1:breaking。執(zhí)行rtupdata(valid==false)多次;

規(guī)則2:preventing。阻止執(zhí)行rtupdata()

規(guī)則3:penetrating。unicast(type==data,dip==m)

規(guī)則4:consuming。執(zhí)行broadcast或者groupcast多次

從四條規(guī)則出發(fā),就可以得到awn描述的協(xié)議中,所有能夠觸發(fā)攻擊的語句。即需要搜索,哪些receive值,會導致最終執(zhí)行到4條規(guī)則所描述的awn對應語句。

(4-2)、攻擊者類型分析:

如果協(xié)議進程執(zhí)行到某一個狀態(tài)被認為達成了一次攻擊者想要的攻擊。分析需要了解,如果要達到這個狀態(tài),之前發(fā)生了哪些事件,進程達到了哪些狀態(tài)。分析表示為:

其中為已知協(xié)議進程狀態(tài),et為需要搜索前一事件,為前一進程狀態(tài)。上式表示的含義是,已知在t時刻,在進程運行到某個狀態(tài)npt,變量條件為ct;進行搜索,直至搜索到哪些進程狀態(tài)npt-1,變量條件ct-1以及執(zhí)行那一條語句et會導致進入狀態(tài)

例如,consuming攻擊點搜索,最初,從攻擊點consuming,對應aodv協(xié)議第141行的廣播事件。攻擊者的目的就是讓正常節(jié)點多執(zhí)行此事件broadcast,而進程執(zhí)行條件為空。

而推導出三個可能的進程狀態(tài),為簡化次例子的搜索結果,只選第一個進程狀態(tài)繼續(xù)做推導。

最終得到的條件ct-6解釋為:收到了一個rreq的尋址,目的地址dip不為自己,也不在路由表的有效路由中,即該節(jié)點并不知道這條路由。另外這rreq條消息是第一次“處理”,那么就“可能會”按照npt-6→npt-5→k→npt的進程轉移順序到達攻擊點,進而完成一次攻擊。

這條攻擊點的另一個條件為“多次執(zhí)行”。也就是說,攻擊者要盡可能多的循環(huán)發(fā)起這樣的rreq信息。

這樣的攻擊特性,正是泛洪攻擊的攻擊特性。泛洪攻擊也就是這類攻擊的一個代表。

步驟五、生成對應檢測方法

對應檢測方法主要是基于誤用例檢測方法與異常檢測方法。生成誤用例檢測方法:針對所有檢測變量通過一步監(jiān)聽得到的變量,檢測流程為:每個節(jié)點開啟混雜模式,監(jiān)聽鄰居節(jié)點的發(fā)包與收報行為。遇到可以情況,分兩種級別。第一是確定該行為一定是攻擊,就發(fā)起一個遭到攻擊的警報。第二是不確定該行為是否是攻擊,發(fā)起一個可疑警報,如果一個區(qū)域內沒有人為可疑警報做“證人”則將可疑警報提升為攻擊警報;如果有證人,證實該行為為正常行為,則解除警報。相應的,檢測到可以鄰居節(jié)點正常行為,需要發(fā)起“證實”信號,為了讓其它鄰居節(jié)點解除警報。

生成異常檢測方法,目的是對誤用例檢測的一種補足,以便減少異常檢測的使用。

由于基于誤用例的檢測方法具有很多優(yōu)點,主要體現在檢測速度快,檢測準確率高以及耗費資源小等特點。然而,基于誤用例的檢測主要問題是不能檢測到未知攻擊。這一點上,基于異常的檢測可以檢測到一些未知攻擊。

下面為aodv協(xié)議的完整的驗證實驗過程。

實驗使用tinyos系統(tǒng)平臺,tinysec安全協(xié)議。在監(jiān)控數據方面,使用西普公司提供的snap平臺。在tinyos平臺上,編譯nesc代碼實現的aodv程序,燒錄到telesb節(jié)點。其通信模塊采用cc2420通信芯片。該芯片在普通模式下,只監(jiān)聽自己的相關信息。而該實驗環(huán)境需要節(jié)點開啟混雜模式監(jiān)聽周圍節(jié)點的收包請求,即開啟混雜模式。

監(jiān)控得到數據包括發(fā)包信息、打印信息或者收包信息,包的內容以16進制字符表示。

假設按照每個攻擊者生成70次攻擊,混合30次正常收發(fā)包。實驗規(guī)模為10-50個節(jié)點,部署在10m*10m的范圍內。其中5%的節(jié)點作為攻擊者。

實驗環(huán)境可以直接獲取每個節(jié)點串口傳回的信息,檢測過程中,不必在節(jié)點上直接處理數據,而是集中傳回snap平臺,模擬節(jié)點的分析過程而做攻擊檢測。

首先分析aodv協(xié)議,可能受到哪些攻擊者類型的攻擊。根據前文的檢測方法,aodv協(xié)議可能受到的攻擊有以下9類,如表6.1所示。

其中,攻擊類型1-6是滲透(penetrating)型攻擊點,這些攻擊會導致中間人攻擊、污水池攻擊、女巫攻擊等。攻擊類型1-3可以將自己的ip信息篡改,使得被攻擊節(jié)點誤以為可以直接連接到某個“虛擬”節(jié)點。當被攻擊節(jié)點發(fā)起對“虛擬”節(jié)點的信息后,攻擊者利用混雜模式,接收該信息,并繼續(xù)跟蹤破壞。而攻擊類型4-6是攻擊者偽造了一條虛假目的地址的信息,無需改動自己的ip。當被攻擊者接收到該信息后,會更新路由表,并將攻擊者作為虛假目的地址的最優(yōu)路由。此后每當被攻擊者發(fā)起向虛假目的地址的信息時,攻擊者都會截獲該信息。此外,攻擊類型4-6會產生更嚴重影響,當另外一個正常節(jié)點,想被攻擊者問詢虛假目的地址路徑時,被攻擊者會將自己的錯誤信息告訴給那個正常節(jié)點,造成了攻擊效果急速擴大。攻擊者類型7-8是破壞原有路由(breaking)型攻擊點。攻擊者7描述的是攻擊者偽造一些并不存在的rerr信息,使得收到這個rerr信息的節(jié)點誤以為一些路徑不能正常到達了,就刪除了原有路由,進而破壞了整個網絡。攻擊者類型8描述攻擊者阻止、干擾一些ack的正常發(fā)送,使得節(jié)點間的通信沒有及時ack反饋,這樣發(fā)送方就會誤以為接收方失去鏈接,進而刪除這條路由,破壞網絡。

攻擊者類型9是一種資源消耗攻擊(consuming)型攻擊點,這類攻擊會導致dos等攻擊。攻擊者可以定期發(fā)起rreq請求,尋找一個網絡中并不存在的id號。這樣整個網絡都會幫助攻擊者轉發(fā)rreq消息,并且不會有最終返回。攻擊者可以每次尋找不同的id號,也可以尋找同一個id號而選擇不同的序列號。

針對以上9種攻擊類型,對應的檢測方法如表6.2所示。(帶*的攻擊類型6-9,說明需要用基于異常的檢測)

攻擊類型1-3,檢測方法主要是檢測mac地址與ip地址相同,這樣可以杜絕這三類攻擊者偽造自己ip而導致的虛假路由信息。

攻擊類型4-5是在轉發(fā)rreq與rrep包時,監(jiān)聽可疑節(jié)點的收包信息與發(fā)包信息是否匹配。對特別敏感的變量:跳數hop與sn信息,不能再轉發(fā)過程中隨意篡改。如果篡改這些信息,攻擊者可以使被攻擊者更容易接收自己作為路由。

攻擊類型6:在回復rrep路由信息時,可能是因為節(jié)點轉發(fā)前后繼節(jié)點的rrep信息,也可以是回復前驅節(jié)點的rreq信息。對于轉發(fā)后繼節(jié)點的rrep信息,可以構造轉發(fā)時的檢測規(guī)則。而對于自己產生的rrep信息,需要用基于異常的方法檢測。

攻擊類型7是檢測,rerr是通過轉發(fā)形式產生,或者通過缺少ack的原因產生。不能隨意構造rerr信息。其中,轉發(fā)類型的規(guī)則可以檢測,而自己構造rerr的情況,需要用基于異常的方式檢測。

攻擊類型8-9,因為其沒有關鍵變量的對比檢測方式,只能使用基于異常的檢測方法,分析網絡中各個包類型的流量分析,判斷該節(jié)點是否屬于可疑攻擊者。

實驗方法:進行模擬實驗,每類攻擊模擬了70次攻擊,正確檢測到這是攻擊的次數為p,則漏報率為而對30次正常實驗,正確的報告這不是一個攻擊的次數為n,則誤報率為最終,準確率為

對攻擊類型1-9,分為三組,第一組為攻擊類型1-5,對應的檢測方法是算法生成的基于誤用例的檢測方。而攻擊類型6-7是基于誤用例的檢測方法與基于異常檢測方法的結合方法。最后攻擊類型8-9只能依賴基于異常檢測的方法。檢測結果的漏報率、誤報率與準確率如圖8、9、10所示。

實驗結果表明,本方法在節(jié)點較少時準確率較高。而同樣節(jié)點個數的情況下,基于誤用例的檢測方法準確率較高。出現的錯誤主要是在異常檢測的誤報情況,可能將某些協(xié)議正常的節(jié)點數據流的變化,報告為存在攻擊(誤報),這可能是因為網絡拓撲的變化過程使得某些節(jié)點的轉發(fā)率急劇變化。如果是使用基于異常的檢測方法,會將網絡拓撲的正常變化也界定為一個“異?!弊兓?,并報告錯誤。

表6-1、生成攻擊類型

表6-2、aodv檢測方法

當前第1頁1 2 
網友詢問留言 已有0條留言
  • 還沒有人留言評論。精彩留言會獲得點贊!
1
甘泉县| 昭平县| 会同县| 竹北市| 灌云县| 北辰区| 房产| 靖安县| 灵台县| 扎赉特旗| 贵州省| 和静县| 阳江市| 舟山市| 墨江| 晴隆县| 青州市| 甘肃省| 鄂州市| 神木县| 和林格尔县| 南雄市| 安义县| 仙桃市| 双鸭山市| 长宁县| 平江县| 云霄县| 安乡县| 延边| 平江县| 河东区| 清水河县| 宜兰县| 大化| 谢通门县| 读书| 屯门区| 二手房| 巫溪县| 郧西县|