無線傳感器網(wǎng)絡(luò)中的安全代碼分發(fā)方法
【專利摘要】本發(fā)明公開了一種無線傳感器網(wǎng)絡(luò)中的安全代碼分發(fā)方法,包括對待分發(fā)的程序映像進(jìn)行分層和計(jì)算Hash摘要,并對所得的Hash鏈?zhǔn)自氐腍ash值進(jìn)行數(shù)字簽名;通過節(jié)點(diǎn)的接收和驗(yàn)證后,對于通過第一層驗(yàn)證的數(shù)據(jù)頁,不需要再發(fā)送以第二層及以下的數(shù)據(jù)包。本發(fā)明通過Hash值保證了分發(fā)的安全性,通過分層處理策略的引入降低了程序映像分發(fā)的負(fù)載。在程序映像分發(fā)過程中滿足了安全和低負(fù)載兩方面的需求。
【專利說明】無線傳感器網(wǎng)絡(luò)中的安全代碼分發(fā)方法
【技術(shù)領(lǐng)域】
[0001] 本發(fā)明涉及安全認(rèn)證領(lǐng)域,尤其涉及一種無線傳感器網(wǎng)絡(luò)中的安全代碼分發(fā)方 法。
【背景技術(shù)】
[0002] 無線傳感器網(wǎng)絡(luò)在農(nóng)業(yè)、環(huán)境監(jiān)測、生態(tài)保護(hù)等眾多領(lǐng)域有著廣闊的應(yīng)用前景,其 應(yīng)用通常被部署于長期無人看守的環(huán)境中。然而,隨著時(shí)間的推移,無線傳感器節(jié)點(diǎn)上的 應(yīng)用程序經(jīng)常需要增加一些功能或者修復(fù)軟件中存在的問題,這就需要對整個(gè)網(wǎng)絡(luò)所有 的節(jié)點(diǎn)進(jìn)行重編程。在一些網(wǎng)絡(luò)規(guī)模較大或者是節(jié)點(diǎn)部署環(huán)境較惡劣的情況下,人工手動 地對所有節(jié)點(diǎn)編程將是一項(xiàng)非常耗時(shí)、耗力甚至是不可能完成的任務(wù)。因此在Wireless Sensor Networks (WSNs)中需要一種機(jī)制能夠通過無線的方式遠(yuǎn)程對節(jié)點(diǎn)軟件進(jìn)行更新。 WSNs代碼分發(fā)(Code Dissemination)技術(shù)是一種有效的解決途徑。
[0003] 增量式多跳代碼分發(fā)算法是WSNs在線代碼分發(fā)中最主流的一類方法。這類方法 的通用做法是首先通過計(jì)算新舊映像之間字節(jié)級的差異確定分發(fā)目標(biāo),然后將更新目標(biāo)分 成固定大小的頁,每頁被進(jìn)一步分割成固定大小的數(shù)據(jù)包,最終將該數(shù)據(jù)包作為基本的數(shù) 據(jù)傳輸單位進(jìn)行傳輸。傳輸時(shí),頁按序傳輸。這類方法基本都沒有考慮代碼分發(fā)的安全性。 為此,針對傳感器節(jié)點(diǎn)資源極度受限的計(jì)算環(huán)境,許多學(xué)者提出采用基于對稱密鑰加密方 法來加強(qiáng)代碼分發(fā)算法的安全性和可靠性。雖然這種方法可以減少更新代碼的認(rèn)證開銷, 縮短端到端傳輸?shù)臅r(shí)間延遲。然而,使用對稱密鑰加密方法,需要在發(fā)送者和接收者之間 事先建立一個(gè)共享密鑰。在代碼分發(fā)過程中,只要有一個(gè)節(jié)點(diǎn)被俘獲就意味著共享密鑰 被泄露,導(dǎo)致整個(gè)網(wǎng)絡(luò)都不再安全。此外,即便使用基站與傳感器節(jié)點(diǎn)之間的配對密碼 (pairwise keys)方案,也會因 WSNs規(guī)模增大所產(chǎn)生的顯著開銷,而變得難以實(shí)用。針對 這些缺點(diǎn),基于PKC(Public Key Cipher)的安全認(rèn)證算法被提了出來。這類算法的主要 思想是使用單向Hash函數(shù)和數(shù)字簽名的混合方法來認(rèn)證網(wǎng)絡(luò)中的更新代碼包和基站的身 份。數(shù)字簽名主要用來認(rèn)證基站的身份,即一個(gè)可信的基站有一個(gè)私鑰,同時(shí)每個(gè)傳感器 節(jié)點(diǎn)預(yù)置了這個(gè)基站相應(yīng)的公鑰?;居盟乃借€對每個(gè)更新包進(jìn)行簽名,傳感器節(jié)點(diǎn)用 公鑰來驗(yàn)證每個(gè)接收更新包的真實(shí)性。任何節(jié)點(diǎn)在沒有獲得私鑰的情況下,都無法冒充基 站的合法簽名。但是,現(xiàn)有的解決方案普遍存在算法復(fù)雜度較高、沒有同時(shí)考慮安全性和代 碼分發(fā)能耗有效性的缺點(diǎn)。
【發(fā)明內(nèi)容】
[0004] 為了克服現(xiàn)有的無線傳感器網(wǎng)絡(luò)代碼分發(fā)復(fù)雜性高、安全性低、能源消耗大的缺 點(diǎn),本發(fā)明提供一種復(fù)雜度低、安全性高、能源消耗小的基于哈希摘要和層策略的安全代碼 分發(fā)方法。該方法解決的技術(shù)問題主要是在提供代碼分發(fā)安全性的同時(shí)盡量降低由此產(chǎn)生 的額外負(fù)載。因?yàn)闊o線傳感器網(wǎng)絡(luò)基本都由電池供電,額外負(fù)載將增加系統(tǒng)能耗,降低系統(tǒng) 使用時(shí)長。本發(fā)明專利主要運(yùn)用了預(yù)驗(yàn)證、層策略和按需驗(yàn)證技術(shù)來避免不必要Hash值的 傳送,從而降低傳輸負(fù)載。
[0005] 一種無線傳感器網(wǎng)絡(luò)中的安全代碼分發(fā)方法,包括如下步驟:
[0006] 步驟1,基站將待分發(fā)的程序映像進(jìn)行預(yù)處理,得到多層數(shù)據(jù)頁及各層對應(yīng)的 Hash鏈,其中每個(gè)數(shù)據(jù)頁包含若干數(shù)據(jù)包,對第一層Hash鏈的第一個(gè)Η節(jié)點(diǎn)的Hash值進(jìn)行 數(shù)字簽名;
[0007] 步驟2,基站廣播步驟1所得的數(shù)字簽名;
[0008] 步驟3,傳感器節(jié)點(diǎn)接收且對所述的數(shù)字簽名進(jìn)行驗(yàn)證,通過后,從第一層起,接收 并驗(yàn)證Hash鏈,并根據(jù)判定條件依次逐層接收數(shù)據(jù)頁,判定方式如下:
[0009] 在同層中的各個(gè)數(shù)據(jù)頁中,對于數(shù)據(jù)包全部通過驗(yàn)證的數(shù)據(jù)頁,計(jì)算當(dāng)前數(shù)據(jù)頁 的Hash值,并通過與Hash鏈中對應(yīng)的Hash值比較來進(jìn)行驗(yàn)證:驗(yàn)證通過,則接收下一個(gè)數(shù) 據(jù)頁;
[0010] 否則,向基站請求發(fā)送該數(shù)據(jù)頁所對應(yīng)的下一層Hash鏈,對整個(gè)數(shù)據(jù)頁進(jìn)行重 傳;
[0011] 對于數(shù)據(jù)包未全部通過驗(yàn)證的數(shù)據(jù)頁,針對其中未通過的數(shù)據(jù)包進(jìn)行重新接收和 驗(yàn)證,直至重復(fù)預(yù)定次數(shù)或驗(yàn)證通過。
[0012] 在步驟1中,程序映像即為經(jīng)過編譯的程序代碼,即可執(zhí)行程序。
[0013] 該步驟1預(yù)處理過程主要發(fā)生在基站,因?yàn)榛居谐渥愕墓╇?,因此不需要過多 的關(guān)注能耗問題。但是經(jīng)過這種預(yù)處理后,能實(shí)現(xiàn)按需傳輸,如果步驟7中對數(shù)據(jù)頁的驗(yàn)證 通過,則第二層及其以下層的所有Hash值都不需要傳送,能節(jié)約較大的傳輸能耗。
[0014] 步驟1中的預(yù)處理具體包括如下步驟:
[0015] 步驟1-1,設(shè)定第一層分頁數(shù)和最大負(fù)載,將程序映像按第一層分頁數(shù)等長劃分為 第一層數(shù)據(jù)頁,計(jì)算各個(gè)數(shù)據(jù)頁的Hash值,并將其插入到第一層Hash鏈中Η節(jié)點(diǎn)對應(yīng)的位 置;
[0016] 步驟1-2,將各個(gè)數(shù)據(jù)頁等長劃分為若干數(shù)據(jù)包,其中每個(gè)數(shù)據(jù)包大小不超過最大 負(fù)載,計(jì)算每個(gè)數(shù)據(jù)包的Hash值,并提取Hash值摘要,將Hash值插入到該層Hash鏈中HD 節(jié)點(diǎn)對應(yīng)的位置;
[0017] 步驟1-3,判斷劃分后的數(shù)據(jù)頁是否超過最大負(fù)載:是,設(shè)定第二層分頁數(shù),將該 數(shù)據(jù)頁按第二層分頁數(shù)進(jìn)行劃分,得到劃分后的數(shù)據(jù)頁,計(jì)算每個(gè)數(shù)據(jù)頁的Hash值,從后 往前依次將各個(gè)Hash值追加到前一個(gè)Hash節(jié)點(diǎn)的末尾,得到該數(shù)據(jù)頁對應(yīng)Hash鏈,并將 第二層Hash鏈中的第一個(gè)元素的Hash值插入上層Hash鏈對應(yīng)的FHC節(jié)點(diǎn);否則,進(jìn)入步 驟 1-4 ;
[0018] 步驟1-4,計(jì)算每個(gè)數(shù)據(jù)頁的Hash值,從后往前依次將各個(gè)Hash值追加到前一個(gè) Hash節(jié)點(diǎn)的末尾,得到的Hash鏈;
[0019] 步驟1-5,重復(fù)步驟1-3和1-4,直至劃分后的每個(gè)數(shù)據(jù)頁均小于或等于最大負(fù)載, 對于第一個(gè)Hash節(jié)點(diǎn)的Hash值進(jìn)行數(shù)字簽名。
[0020] 每一層的Hash鏈可能出現(xiàn)三類節(jié)點(diǎn):H節(jié)點(diǎn),它存儲(子)數(shù)據(jù)頁的hash值;HD 節(jié)點(diǎn),它存儲每個(gè)數(shù)據(jù)包的Hash值摘要疋HC節(jié)點(diǎn),它存儲下一層對應(yīng)Hash鏈中第一個(gè)元 素的Hash值。通常情況下Η節(jié)點(diǎn)在每一層的Hash鏈中都必須存在,為了減少代碼分發(fā)的 負(fù)載,Η節(jié)點(diǎn)的個(gè)數(shù)通常不超過2個(gè)。HD節(jié)點(diǎn)僅僅存在第一層的Hash鏈中,F(xiàn)HC節(jié)點(diǎn)則在 每一層中都可能出現(xiàn),也可能不出現(xiàn),決定于代碼分發(fā)的程序映像的大小,如果出現(xiàn),F(xiàn)HC節(jié) 點(diǎn)的個(gè)數(shù)也不會超過2,因?yàn)镕HC節(jié)點(diǎn)的個(gè)數(shù)不會超過Η節(jié)點(diǎn)的個(gè)數(shù)。這三類節(jié)點(diǎn)統(tǒng)稱為 Hash節(jié)點(diǎn),在各個(gè)Hash節(jié)點(diǎn)的插入之后,計(jì)算各類Hash節(jié)點(diǎn)的Hash值,從后往前依次將他 們的Hash值追加到前一個(gè)Hash節(jié)點(diǎn)的末尾,從而構(gòu)成Hash鏈。
[0021 ] 在步驟1-1中,第一層分頁數(shù)設(shè)定方式如下:
[0022] 第一層分頁數(shù)的計(jì)算公式如下:
[0023]
【權(quán)利要求】
1. 一種無線傳感器網(wǎng)絡(luò)中的安全代碼分發(fā)方法,其特征在于,包括如下步驟: 步驟1,基站將待分發(fā)的程序映像進(jìn)行預(yù)處理,得到多層數(shù)據(jù)頁及各層對應(yīng)的Hash鏈, 其中每個(gè)數(shù)據(jù)頁包含若干數(shù)據(jù)包,對第一層Hash鏈的第一個(gè)Η節(jié)點(diǎn)的Hash值進(jìn)行數(shù)字簽 名; 步驟2,基站廣播步驟1所得的數(shù)字簽名; 步驟3,傳感器節(jié)點(diǎn)接收且對所述數(shù)字簽名進(jìn)行驗(yàn)證,通過后,從第一層起,接收并驗(yàn)證 Hash鏈,并根據(jù)判定條件依次逐層接收數(shù)據(jù)頁,判定方式如下: 在同層中的各個(gè)數(shù)據(jù)頁中,對于數(shù)據(jù)包全部通過驗(yàn)證的數(shù)據(jù)頁,計(jì)算當(dāng)前數(shù)據(jù)頁的 Hash值,并通過與Hash鏈中對應(yīng)的Hash值比較來進(jìn)行驗(yàn)證:驗(yàn)證通過,則接收下一個(gè)數(shù)據(jù) 頁; 否則,向基站請求發(fā)送該數(shù)據(jù)頁所對應(yīng)的下一層Hash鏈,對整個(gè)數(shù)據(jù)頁進(jìn)行重傳; 對于數(shù)據(jù)包未全部通過驗(yàn)證的數(shù)據(jù)頁,針對其中未通過的數(shù)據(jù)包進(jìn)行重新接收和驗(yàn) 證,直至重復(fù)預(yù)定次數(shù)或驗(yàn)證通過。
2.如權(quán)利要求1所述無線傳感器網(wǎng)絡(luò)中的安全代碼分發(fā)方法,其特征在于,步驟1中的 預(yù)處理具體包括如下步驟: 步驟1-1,設(shè)定第一層分頁數(shù)和最大負(fù)載,將程序映像按第一層分頁數(shù)等長劃分為第一 層數(shù)據(jù)頁,計(jì)算各個(gè)數(shù)據(jù)頁的Hash值,并將其插入到第一層Hash鏈中Η節(jié)點(diǎn)對應(yīng)的位置; 步驟1-2,將各個(gè)數(shù)據(jù)頁等長劃分為若干數(shù)據(jù)包,其中每個(gè)數(shù)據(jù)包大小不超過最大負(fù) 載,計(jì)算每個(gè)數(shù)據(jù)包的Hash值,并提取Hash值摘要,將Hash值插入到該層Hash鏈中HD節(jié) 點(diǎn)對應(yīng)的位置; 步驟1-3,判斷劃分后的數(shù)據(jù)頁是否超過最大負(fù)載:是,設(shè)定第二層分頁數(shù),將該數(shù)據(jù) 頁按第二層分頁數(shù)進(jìn)行劃分,得到劃分后的數(shù)據(jù)頁,計(jì)算每個(gè)數(shù)據(jù)頁的Hash值,從后往前 依次將各個(gè)Hash值追加到前一個(gè)Hash節(jié)點(diǎn)的末尾,得到該數(shù)據(jù)頁對應(yīng)Hash鏈,并將第二 層Hash鏈中的第一個(gè)元素的Hash值插入上層Hash鏈對應(yīng)的FHC節(jié)點(diǎn);否則,進(jìn)入步驟 1-4 ; 步驟1-4,計(jì)算每個(gè)數(shù)據(jù)頁的Hash值,從后往前依次將各個(gè)Hash值追加到前一個(gè)Hash 節(jié)點(diǎn)的末尾,得到的Hash鏈; 步驟1-5,重復(fù)步驟1-3和1-4,直至劃分后的每個(gè)數(shù)據(jù)頁均小于或等于最大負(fù)載,對于 第一個(gè)Hash節(jié)點(diǎn)的Hash值進(jìn)行數(shù)字簽名。
3.如權(quán)利要求2所述無線傳感器網(wǎng)絡(luò)中的安全代碼分發(fā)方法,其特征在于,在步驟1-1 中,第一層分頁數(shù)設(shè)定方式如下: 第一層分頁數(shù)的計(jì)算公式如下:
其中,ML為最大負(fù)載,PI表示程序映像的大小,最大第一層分頁數(shù)max_n的計(jì)算公式 為:
數(shù)據(jù)包個(gè)數(shù)P的計(jì)算公式為:
Η(·)為Hash值長度,|Sig(.) |表示數(shù)字簽名的大小,Header表示頭信息的大小。
4.如權(quán)利要求2或3所述無線傳感器網(wǎng)絡(luò)中的安全代碼分發(fā)方法,其特征在于,在步驟 1-3中,對于第i個(gè)數(shù)據(jù)頁,第二層分頁數(shù)的計(jì)算方式如下: 第二層分頁數(shù)的計(jì)算公式如下: 其中,|ΙΒ」表示第i個(gè)數(shù)據(jù)頁的長度,ML表示最大負(fù)載,最大第二層分頁數(shù)maX_SUb_ η的計(jì)算公式如下:
其中,Η(·)為Hash值長度。
5.如權(quán)利要求1所述無線傳感器網(wǎng)絡(luò)中的安全代碼分發(fā)方法,其特征在于,在步驟3 中,每個(gè)Hash值的Hash值摘要的計(jì)算方法為,對所計(jì)算得到的Hash值的各個(gè)字節(jié)中提取 一位,將所得的所有數(shù)據(jù)組成Hash值摘要。
6.如權(quán)利要求1所述無線傳感器網(wǎng)絡(luò)中的安全代碼分發(fā)方法,其特征在于,判斷當(dāng)前 數(shù)據(jù)頁的數(shù)據(jù)包是否均通過驗(yàn)證的方法為:對于每個(gè)數(shù)據(jù)頁設(shè)定一個(gè)位向量,位向量中的 各位與該數(shù)據(jù)頁中的數(shù)據(jù)包一一對應(yīng),對于驗(yàn)證通過的數(shù)據(jù)包,位向量中的對應(yīng)位設(shè)為1, 對于未通過驗(yàn)證的數(shù)據(jù)包,位向量中的對應(yīng)位設(shè)為0。
【文檔編號】G06F9/445GK104142837SQ201410238004
【公開日】2014年11月12日 申請日期:2014年5月29日 優(yōu)先權(quán)日:2014年5月29日
【發(fā)明者】謝滿德 申請人:浙江工商大學(xué)