一種無線傳感器網絡安全輕量重編程方法
【技術領域】
[0001]本發明屬于無線通信技術領域,尤其涉及一種無線傳感器網絡安全輕量重編程方法。
【背景技術】
[0002]無線傳感器網絡(Wireless Sensor Networks, WSNs)是由眾多傳感器節點組成的網絡,在醫療、環境檢測、軍事等關鍵領域有非常重要的應用。傳感器節點一旦部署在某些特定的領域,就很難再通過手動的方式進行大規模地修復節點上的某些bug或者更新和安裝一些軟件,因而需要利用重編程協議來對傳感器中的節點進行大規模地重編程。
[0003]現有的重編程協議和方法,關注的重點是程序鏡像分發的可靠性。在程序鏡像分發的第一個階段,傳感器節點首先周期性地廣播其關于程序鏡像的摘要信息,當節點收到摘要信息時會和自身保存的摘要信息進行比較,以調整其廣播的頻率。當節點收到相關的摘要信息比自身存儲的新時(通過比較摘要信息中的版本號即可確定),傳感器節點將向該節點發送請求信息來更新節點上相應的程序鏡像和摘要信息;當節點收到相關的摘要信息比自身存儲的舊時,該傳感器節點將廣播自身的摘要信息;當傳感器節點收到的摘要信息和自身相同時,該傳感器節點將延長其廣播的時間間隔以延長整個傳感器網絡的生命周期。在程序鏡像分發的第二個階段,傳感器節點根據程序鏡像數據包攜帶的循環冗余糾錯碼來確保數據在傳送的過程中未出現錯誤。在程序鏡像分發的第三個階段,如果目標傳感器節點未收到所有的數據包,目標傳感器節點將向發送方發送數據包重傳請求,確保每個傳感器節點都能收到全部的程序鏡像。在程序鏡像分發的這些階段,已有的重編程協議為了確保數據分發的高可靠性,采用了以上保障機制。然而,卻忽略了無線傳感器網絡中重編程的安全保密性。由于無線傳感器網絡是基于無線通信的基礎上發展而來,因而在一些特殊的環境中攻擊者很容易通過竊聽、篡改、拒絕服務等方式來對其發起攻擊。這些攻擊會嚴重危害到程序鏡像的保密性、軟件安裝的正確性以及網絡的正常使用。因而,加強對程序鏡像的安全保護非常關鍵。
[0004]本發明的目的在于克服現有技術的缺點與不足,提供一種無線傳感器網絡安全輕量重編程的方法,該方法具有的優點有:可抵抗傳感器節點的妥協,在丟包和數據包傳送失序上具有高魯棒性,整個網絡無時間同步要求,確保信息的保密性,以及能夠高效抵抗拒絕服務攻擊。
【發明內容】
[0005]本發明提出了一種無線傳感器網絡安全輕量重編程方法,包括如下階段:
[0006]系統初始化階段:基站將每個待發送的頁面對應位置的原始數據包分組,根據所述頁面的數目和每個頁面所包含的數據包的數目,基站為其生成多路單向哈希鏈作為秘鑰,并將每條單向哈希鏈的定向哈希值存儲在各個傳感器節點上;所述基站生成自己的公鑰和私鑰,并將公鑰安裝在各個傳感器節點上;
[0007]數據包預處理階段:所述基站對待發送的數據包進行預處理,使用先編碼后加密的方式構建加密數據包和Merkle哈希樹,然后依次發送所述數據包;
[0008]數據包驗證階段:各個傳感器節點在收到所述數據包,對所述數據包進行解密和驗證后,對各個數據包進行解碼以恢復成所述原始數據包,并判斷所接收到的數據包的有效性成立后接受所述原始數據包。
[0009]本發明提出的所述無線傳感器網絡安全輕量級重編程方法中,所述初始化階段包括以下步驟:
[0010]步驟Al:所述基站將所述頁面中相同位置的數據包分到同一個組內,并為每個數據包組選取一個隨機數作為單向哈希鏈的種子數字;
[0011]步驟A2:所述基站利用所述種子數字為對應的數據包組創建一條單向哈希鏈作為秘鑰,所述種子數字作為哈希鏈頭的初始值,其它鏈上的值由其前一個單向哈希鏈上的值作為輸入運用哈希函數運算而產生的,在足以滿足當前頁面數據包個數的情況下,獲得最后一個哈希值即定向哈希值,所述定向哈希值用于驗證所述數據包的完整性;
[0012]步驟A3:把所述定向哈希值組成的定向哈希值向量分配到對應傳感器節點上,作為密鑰向量,在后續步驟中將用于對接收的數據包進行解密;
[0013]步驟A4:使用七元組表示每一個數據項。
[0014]本發明提出的所述無線傳感器網絡安全輕量級重編程方法中,步驟A4中所述七元組分別為:編碼標識、傳感器節點標識、版本號、已完成的頁面、已完成的數據包、冗余驗證位和數據值;其中,所述編碼標識表示采用的編碼方式,所述傳感器標識表示數據的傳輸的來源,所述版本號表示程序鏡像的新舊,所述已完成的頁面表示現已經收到程序鏡像頁面的總數,所述已完成的數據包表示已完成頁面的下一頁面中已經接收的數據包,所述冗余驗證位表示用于對數據分發的正確性進行校驗的二進制數,所述數據值表示數據項的數據值。
[0015]本發明提出的所述無線傳感器網絡安全輕量級重編程方法中,所述的數據包預處理階段包括以下步驟:
[0016]步驟B1:基站首先利用產生的隨機數,先對各個頁面的各個數據包進行異或操作,生成編碼的數據包,然后利用目標傳感器節點上的密鑰對編碼的數據包進行對稱加密。
[0017]步驟B2:所述基站采用廣播模式將加密后的數據包分發到每一個傳感器節點,所述傳感器節點之間程序鏡像的分發采用事先生成的秘鑰簇來認證節點雙方,以確定通信雙方所發送數據的真實性以及數據的完整性。
[0018]本發明提出的所述無線傳感器網絡安全輕量級重編程方法中,步驟BI中所述的基站利用傳感器節點上的密鑰對數據包進行對稱加密的步驟為:基站利用所產生的多路單向哈希鏈對所述數據包組進行加密,加密時采用縱向加密的方法,其第一個單向哈希鏈對每個頁面第一個數據包所組成的集合進行加密,第二個單向法哈希鏈對每個頁面的第二個數據包所組成的集合進行加密,依次類推;然后將該加密數據包和加密下一個數據包的密鑰連接在一起構建一個新的數據包用于廣播到各個傳感器節點。
[0019]本發明提出的所述無線傳感器網絡安全輕量級重編程方法中,所述數據包驗證階段包括以下步驟:
[0020]步驟Cl:由基站發送的加密的數據包傳送到目標傳感器節點后,所述傳感器節點利用自身的存儲的密鑰向量對其中的各個數據包進行逐一解密,只有經過所述密鑰向量進行驗證過的數據包才能算成功解密;
[0021]步驟C2:成功解密后對所述數據包進行驗證;
[0022]步驟C3:傳感器節點將成功解密后的數據包進行解碼,解碼的過程根據目標傳感器節點所收到的數據包上的編碼標識進行解碼,恢復原始的程序鏡像數據包。
[0023]本發明提出的所述無線傳感器網絡安全輕量級重編程方法中,步驟C2對所述數據包進行驗證包括如下步驟:
[0024]步驟C21:若接收到的數據包的版本號比原有的版本號更新,則執行步驟C22,否則執行步驟C25 ;
[0025]C22:若所述數據包的密鑰值通過哈希函數計算后得到的哈希值與所述傳感器節點上保存的密鑰值相同,則執行步驟C23,否則執行步驟C24 ;
[0026]C23:所述傳感器節點用所述數據包中的密鑰值替換原來的密鑰值,若數據包的版本號是新的,且已經接收完成一個完整的頁面,則所述傳感器節點接收所述數據包以更新數據,否則執行步驟C24;
[0027]C24:拋棄所述數據包;
[0028]C25:若所述數據包的數據的版本號和所述傳感器節點上的版本號相同,則所述傳感器節點根據Trickle算法增大廣播數據包的時間間隔;若接收到的數據包的版本號較所述傳感器節點上的版本號更早,則廣播所述傳感器節點自身存儲的數據包。
[0029]本發明提出的所述無線傳感器網絡安全輕量級重編程方法中,步驟C3對所述數據包進行解碼過程包括如下步驟:
[0030]步驟C31:當所述傳感器節點收到足夠的編碼數據包時,對數據包進行解碼,解碼前首先依據編碼標志位獲得第一個編碼數據包,所述編碼數據包是該頁面所有數據包編碼的結果;
[0031]步驟C32:將后續的編碼數據包依次與第一個編碼數據包進行異或操作,恢復出除了最后一個原始數據包之外的其余原始數據包;
[0032]步驟C33:將所有已經恢復出來的原始數據包與第一個編碼數據包進行異或操作,恢復出所述最后一個原始數據包。
[0033]本發明提出的所述無線傳感器網絡安全輕量級重編程方法中,在所述數據包驗證階段中,根據設定的閾值動態啟動弱的驗證機制,以降低傳感器網絡應對拒絕服務攻擊所消耗的資源,從而延長傳感器網絡的壽命。
[0034]本發明的有益效果在于:
[0035]抵抗傳感器節點的妥協:只要未被妥協的傳感器節點依舊能夠連接到基站,貝1J不管已經妥協傳感器節點的數目多少,協議都能抵抗傳感器節點妥協。
[0036]在丟包和數據包傳送失序上具有高魯棒性:在無線傳感器網絡中高頻率的出現丟包和數據包傳送失序現象,這要求協議設計能夠在最大限度上容忍高丟包率和傳送失序。
[0037]基站與傳感器節點間無時間同步:基站與傳感器節點間不要求時間同步。因此,無需對數據包到達間隔時間