劉清源,劉瑞佳,王健,李曉坤
(1.東北林業(yè)大學(xué),哈爾濱 150000; 2.黑龍江恒訊科技有限公司國家博士后科研工作站,哈爾濱 150090; 3.復(fù)旦大學(xué),上海 200433)
泛在電力物聯(lián)網(wǎng)解決方案的主要特點是基于事件的通信方式,其中一種方式,即所謂的訂閱者方式,是指在某些事件發(fā)生時獲得通知,并接收這些事件的相關(guān)信息[1-3]。另一種通信方式被稱為發(fā)布者,這種通信方式更傾向于檢測事件的發(fā)生,它們分析檢測到的信息分析事件發(fā)生的細節(jié)[4-6]。
構(gòu)建帶有事件詳細信息的消息,并將此類消息從發(fā)布者傳遞到訂閱者的總體行為稱為事件通知[7-10]。這需要一個中間件來解決這種通信的基礎(chǔ)問題[11]。這種中間件在當(dāng)前的文獻中被稱為發(fā)布/訂閱服務(wù)基礎(chǔ)模式,它主要包含兩種模式,一是直接交付模式,即每個發(fā)布者節(jié)點向訂閱者節(jié)點直接發(fā)送信息;二是間接交付模式,即負責(zé)發(fā)送通知的節(jié)點從發(fā)布者轉(zhuǎn)移到一個或多個特殊節(jié)點,該節(jié)點在發(fā)布者和訂閱者之間進行中介[12-13]。
在泛在電力物聯(lián)網(wǎng)環(huán)境中,發(fā)布/訂閱服務(wù)被廣泛使用。盡管在實踐操作中,不同的使用場景存在這樣那樣的差異,但所有的解決方案都遵循一種間接的交付的模式,及需要代理信息的特殊物聯(lián)網(wǎng)節(jié)點[14-16]。然而間接交付方法并不適用于泛在電力物聯(lián)網(wǎng),本文提出了一種直接交付方法,該方法不將事件通知操作集中在單個節(jié)點,而是將它們分發(fā)到充當(dāng)轉(zhuǎn)發(fā)者的其他節(jié)點中,從而不需要部署任何代理節(jié)點,減少了系統(tǒng)開銷,提高了系統(tǒng)運行效率[17]。
邊緣計算是一項正在興起的技術(shù),通過把計算、存儲、帶寬、應(yīng)用等資源放在網(wǎng)絡(luò)的邊緣側(cè),以便減小傳輸延遲和帶寬消耗[18-20]。同時,應(yīng)用開發(fā)者和內(nèi)容提供商可以根據(jù)實時的網(wǎng)絡(luò)信息提供可感知的服務(wù)[21-23]。如圖1所示,移動終端、物聯(lián)網(wǎng)等設(shè)備為計算敏感型的應(yīng)用提供了必要的前端處理支撐,例如圖像識別、網(wǎng)絡(luò)游戲等應(yīng)用,以利用邊緣計算的處理能力分擔(dān)云端工作負荷[24]。
圖1 邊緣計算架構(gòu)圖Fig.1 Edge computing architecture diagram
泛在電力物聯(lián)網(wǎng)技術(shù)未來要呈現(xiàn)的是物理互通更緊密,數(shù)據(jù)維度更多元的、技術(shù)更成熟的智慧電力能源系統(tǒng)[25-28]。
泛在電力物聯(lián)網(wǎng)可以分解為三個方面,及“泛在網(wǎng)絡(luò)”,“電力網(wǎng)絡(luò)”和“物聯(lián)網(wǎng)”?!胺涸诰W(wǎng)絡(luò)”可以大體理解為是物聯(lián)網(wǎng)和互聯(lián)網(wǎng)的結(jié)合體,是二者技術(shù)結(jié)合的產(chǎn)物[29];“電力網(wǎng)絡(luò)”是指物聯(lián)網(wǎng)技術(shù)的特定應(yīng)用對象[30];“物聯(lián)網(wǎng)”是指通過各種信息傳感器,實現(xiàn)對物品和過程的智能化感知、識別和管理,使普通物理對象形成網(wǎng)絡(luò)的相關(guān)技術(shù)[31]。泛在電力物聯(lián)網(wǎng)的發(fā)展帶動了大規(guī)模傳感器網(wǎng)絡(luò)的發(fā)展[32]。
能源互聯(lián)網(wǎng)是以電力能源為中心,多種能源協(xié)同,消費協(xié)同,集中式、分布式協(xié)同,大眾廣泛參與的新型生態(tài)化能源系統(tǒng),主要表現(xiàn)為堅強智能電網(wǎng)與泛在電力物聯(lián)網(wǎng)深度融合[33-34]。
其中,泛在電力物聯(lián)網(wǎng)還處于起步階段,是能源互聯(lián)網(wǎng)建設(shè)的關(guān)鍵一步[35]。泛在電力物聯(lián)網(wǎng)的建設(shè)對提升用戶體驗、提升電網(wǎng)運營水平、促進新能源消納和培育新興業(yè)務(wù)有明顯的積極意義[35-37]。
群組密鑰管理是一種高效的群組消息交互模式,其可以降低網(wǎng)絡(luò)傳輸代價并能達到較高的可擴展性[38-40]。
大多數(shù)多播應(yīng)用都需要保證群組成員間通信信息的安全性,并限制非群組成員對群組通信內(nèi)容的訪問[41-43]。解決這一問題的通常方法是在群組成員間使用群組外界不知道的群組密鑰對通信內(nèi)容進行加密,在動態(tài)物聯(lián)網(wǎng)環(huán)境中,節(jié)點經(jīng)常離開或加入一個網(wǎng)絡(luò),或從一個組遷移到另一個組[44-46]。很多群組應(yīng)用都使用了多播技術(shù),如醫(yī)療、交通、農(nóng)業(yè)和工業(yè)監(jiān)控[47-50]。例如醫(yī)療場景,如圖2所示,一個head節(jié)點可以注冊多個患者的健康參數(shù)采集設(shè)備或手機來建立一個組[51-54]。在這種情況下,CH可以從多方獲取安全憑據(jù),在任何發(fā)送方和接收方之間設(shè)置密鑰[55-58]。然而該方法需要CH與每個節(jié)點都建立鏈接,密鑰分配與派生的效率不高[59-61]。
圖2 群組密鑰管理架構(gòu)圖Fig.2 Group key management architecture diagram
本文提出了一種基于群組的密鑰管理算法,這種算法通過使用基于分組網(wǎng)絡(luò)的密鑰派生算法,減少了系統(tǒng)為組內(nèi)成員增減而生成新密鑰所耗費的資源;密鑰的分配是通過一種基于群組密鑰管理的密鑰分配算法來實現(xiàn)的,因而密鑰生成節(jié)點無需和所有物聯(lián)網(wǎng)節(jié)點建立通訊鏈路,從而降低了成本,減少了系統(tǒng)開銷。
為解決前一節(jié)提出的密鑰分配與派生效率不高等問題,本章提出了一種基于邊緣計算的泛在電力物聯(lián)網(wǎng)群組密鑰管理算法,以此提高密鑰的分配與派生效率,解決方案可以簡單地在圖3中說明,算法可大體分為四個組成部分。第一部分是使用基于相同主題的節(jié)點群組構(gòu)建算法,將主題相同的物聯(lián)網(wǎng)節(jié)點聚集在同一分組中;第二部分是通過一種基于安全網(wǎng)絡(luò)編碼的頭節(jié)點選舉算法為每組密鑰生成和管理選擇合適的頭節(jié)點;第三部分是通過一種基于群組密鑰管理的密鑰分配算法來確定節(jié)點離開后新的組密鑰的分配方案;第四部分是當(dāng)一個新節(jié)點加入分組時或一個節(jié)點離開分組時,使用一種基于分組網(wǎng)絡(luò)的密鑰派生算法,確保在不產(chǎn)生密鑰派生開銷的情況下實現(xiàn)密鑰的派生。
圖3 組密鑰管理算法流程圖Fig.3 Flow chart of group key management algorithm
本文的算法是根據(jù)每個物聯(lián)網(wǎng)節(jié)點的主題,將每個物聯(lián)網(wǎng)節(jié)點分配給至少一個分組,這些分組的成員具有相同的主題,并將分組的大小保持在適當(dāng)?shù)姆秶鷥?nèi)。
最重要的一點是要確保分組內(nèi)成員的關(guān)系不是相互排斥的,但在給定分組邊界上的節(jié)點也應(yīng)該是附近其他分組的成員。在消息傳輸?shù)倪^程中,需要使用該分組的密鑰解密,然后在通往其他分組物聯(lián)網(wǎng)節(jié)點時,使用下一個分組的密鑰重新加密。
如圖4所示,一個物聯(lián)網(wǎng)系統(tǒng)中的整體節(jié)點被劃分為兩個分組,每個分組都有一個合適的密鑰。但是,在示例中,ω分組的成員無法解密消息,因為它是用不同的密鑰加密的。相反,如果該節(jié)點6屬于兩個分組,它將能夠使用ω分組的密鑰解密消息,并利用Δ分組的密鑰加密信息,以讓其節(jié)點能夠成功的獲得信息,算法中符號如表1所示。
圖4 分組通信示意圖Fig.4 Schematic diagram of packet communication
表1 群組密鑰管理算法使用的符號列表Tab.1 List of symbols used by the group key management algorithm
每個節(jié)點都擁有一個由其自己的節(jié)點id標(biāo)識的分組數(shù)據(jù)集,其中包含該節(jié)點的主題topic、其分組的標(biāo)識符node_id,和大小size(大小最初等于1),鄰居分組(最初為空,表2第5行)和一個TTL。當(dāng)一個節(jié)點從另一個節(jié)點接收到一個分組數(shù)據(jù)集時,它會遞減TTL值,如果它等于或小于0,則丟棄該分組數(shù)據(jù)集。如果分組數(shù)據(jù)集內(nèi)TTL為正,則節(jié)點檢查它是否來自其鄰居。如果分組數(shù)據(jù)集不是來自鄰居節(jié)點,則直接結(jié)束流程;否則它會根據(jù)幾個因素進行各種操作。
表2 分組初始化算法流程表Tab.2 Flow table of group initialization algorithm
一方面,如果一個節(jié)點對分組數(shù)據(jù)集中表達的主題topic(表2第13行)不相符,它會選擇一個符合該主題的鄰居,轉(zhuǎn)發(fā)分組數(shù)據(jù)集并保存分組標(biāo)識符node_id。
另一方面,如果一個節(jié)點符合該主題并且該節(jié)點所在分組內(nèi)節(jié)點數(shù)量size小于α,并且分組數(shù)據(jù)集中顯示所在分組尚未達到其最大值no_changes,那么該節(jié)點將添加到該分組數(shù)據(jù)集描述的分組中(表2第21行)。
在這兩種情況下,節(jié)點都會更新相關(guān)的信息,并向主題相同的相鄰節(jié)點發(fā)送更新后的分組數(shù)據(jù)集(表2第26行~29行)。
若分組內(nèi)節(jié)點數(shù)量size大于α,節(jié)點將檢查分組數(shù)據(jù)集內(nèi)分組節(jié)點數(shù)size的大小(表2第34行),如果分組數(shù)據(jù)集內(nèi)分組節(jié)點數(shù)size小于α,則發(fā)送分組數(shù)據(jù)集的節(jié)點加入該分組并發(fā)送新分組數(shù)據(jù)集(表2第36行~38行)。
這種群組構(gòu)建算法的作用是初始化泛在電力物聯(lián)網(wǎng)系統(tǒng),例如圖5中的節(jié)點11,在這種情況下,這些節(jié)點向所有鄰居發(fā)送一條消息。當(dāng)一個節(jié)點收到這樣的請求時,它可以通過兩種方式進行回復(fù)。一方面,如果它屬于該主題的分組,例如圖5中的節(jié)點6,它會回復(fù)該分組的詳細信息,并將新加入的節(jié)點通知給其他人;另一方面,如果它不屬于該主題的分組,例如圖5中的節(jié)點10,它會選擇一個對與該主題相符合的鄰居節(jié)點,并將請求發(fā)送給選定的鄰居節(jié)點。
圖5 節(jié)點加入請求示意圖Fig.5 Schematic diagram of node join request
選舉協(xié)議的目標(biāo)是指定一個頭節(jié)點作為分組內(nèi)責(zé)生成、分發(fā)密鑰等工作的節(jié)點,算法流程如表3所示。
表3 基于安全網(wǎng)絡(luò)編碼的頭節(jié)點選舉算法算法流程表Tab.3 Flow table of head node election algorithm based on secure network coding
假設(shè)被選擇節(jié)點不不存在拜占庭行為,然而,節(jié)點仍有可能由于與硬件或軟件故障而崩潰,因此選出最合適的分組頭節(jié)點至關(guān)重要。在本文描述的算法中,擁有最高標(biāo)識的節(jié)點將被選舉為頭節(jié)點。具體而言,具有最高活力值A(chǔ)、可用性L和可信任度T的節(jié)點被選為其分組中的頭節(jié)點。因此,本文可以將本文的選舉過程建模為一個優(yōu)化問題,目標(biāo)函數(shù)在一系列約束條件下最大化:
(1)
并且,該目標(biāo)函數(shù)從屬于:
(2)
Ai≤θA,Li≤θL,Ti≤θT
(3)
當(dāng)在分組內(nèi)某一節(jié)點發(fā)起選舉頭節(jié)點進程時,該節(jié)點將向同一分組的鄰居子集發(fā)送特定的頭節(jié)點選舉數(shù)據(jù)集,內(nèi)容其中包括表示當(dāng)前分組curr_cluster、主題標(biāo)識符topic、發(fā)送者的節(jié)點標(biāo)識符node_id、對發(fā)送者的可用性A、活躍性L和可信任度T、一個隨機數(shù),用于區(qū)分是否已經(jīng)接收到消息、以及經(jīng)過節(jié)點的個數(shù)(初始設(shè)置為1)。
當(dāng)一個節(jié)點收到頭節(jié)點選舉數(shù)據(jù)集時,基于安全網(wǎng)絡(luò)編碼的頭節(jié)點選舉算法有兩種選擇方式,如果接收數(shù)據(jù)集的節(jié)點與發(fā)送節(jié)點主題相符,則節(jié)點將數(shù)據(jù)集保存在本地隊列,并檢測是否為重復(fù)消息(表3第15行),如果為重復(fù)消息則將其排除(表3第26行);如果不是重復(fù)消息,它將收到的頭節(jié)點選舉數(shù)據(jù)集轉(zhuǎn)發(fā)給隨機選擇的鄰居(表3第18行);并且它回復(fù)了一條包含它自己屬性的頭節(jié)點選舉數(shù)據(jù)集(表3第19、20行)。
另一方面,如果接收數(shù)據(jù)集的節(jié)點與發(fā)送節(jié)點主題不符,它只是在增加數(shù)據(jù)集中顯示的跳數(shù)hops后將消息轉(zhuǎn)發(fā)給對該主題感興趣的鄰節(jié)點(表3第22行、23行)。
在選舉頭節(jié)點選舉結(jié)束時,節(jié)點將所有接收到頭節(jié)點選舉數(shù)據(jù)集中可用性A、活躍性L和可信任度T的最大值與自己的屬性進行比較(表3第29行、30行)。如果節(jié)點自身屬性值值大于接收到節(jié)點屬性值,則該節(jié)點選舉為頭節(jié)點,否則該節(jié)點為普通節(jié)點(表3第31行~33行),開始密鑰生成和分發(fā)(表3第34行)。
在分組的中選出頭節(jié)點后,就需要派生密鑰并為所在分組中節(jié)點分配新的密鑰,算法流程如表4所示。
表4 基于群組密鑰管理的密鑰分配算法流程表Tab.4 Flow table of key distribution algorithm based on group key management
在密鑰創(chuàng)建階段,頭節(jié)點將采用模指數(shù)函數(shù)作為單向函數(shù),并隨機確定此類函數(shù)的參數(shù)。設(shè)p是一個非常大的素數(shù),g是群Zp的原始元素,因此反向推導(dǎo)出給定的g和:
ga(modp)
(4)
在計算上是不可行的。密鑰組由:
K=ga(modp)
(5)
確定,并存儲在頭節(jié)點keyi中。
在密鑰分配階段中,傳統(tǒng)的方法是為每個分組成員建立多個安全通道,以安全交付密鑰。這樣的解決方案需要端到端的安全保障,因為分組頭不是直接連接到所有節(jié)點,增加了通信延遲且必須檢測消息是否丟失。在物聯(lián)網(wǎng)場景中,頭節(jié)點只能連接到分組中的一部分節(jié)點,并需要依賴它們才能與其他成員聯(lián)系。在泛在電力物聯(lián)網(wǎng)中的解決方案被稱為網(wǎng)絡(luò)編碼,如圖6所示,圖6(a)說明了沒有網(wǎng)絡(luò)編碼的消息轉(zhuǎn)發(fā)的簡單情況,而圖6(b)顯示了網(wǎng)絡(luò)編碼的情況。
圖6 網(wǎng)絡(luò)編碼示意圖Fig.6 Schematic diagram of network coding
網(wǎng)絡(luò)編碼相對于傳統(tǒng)傳輸方法擁有高效性靈活性等優(yōu)勢,但仍然存在惡意竊聽等安全隱患,從而產(chǎn)生了安全網(wǎng)絡(luò)編碼。具體來說,安全網(wǎng)絡(luò)編碼的密鑰被分解成n個部分,分別發(fā)送到不同的節(jié)點,每個節(jié)點最多接收到k個部分k< 文中所述的密鑰分配方案基于上述安全網(wǎng)絡(luò)編碼算法,具體來說,在同一分組種,頭節(jié)點和物聯(lián)網(wǎng)節(jié)點的數(shù)量等于n,密鑰被分成長度為qbits的d-k+1份,其中d≥k,密鑰向量由[S1,S2,….,Sd-k+1]組成,其中每個元素都是元素長度固定的qbits,即GF(2q)。然后,構(gòu)建n*d的范德蒙德矩陣Ψ,其中第i行的Ψi;根據(jù)計算的共享Ψi和矩陣,確定對稱的d*d矩陣如下: (6) SA=Sd-k+1是一個向量,SB=[S1,S2,….,Sd-k],是長度為d-k的向量。ra是一個能隨機組合長度為k- 1的向量,Rb和Rc矩陣,大小分別與(k-1) * (k-1)和(d-k)* (k- 1) 并且Rb為是對稱矩陣,并且其元素都為隨機選擇的整數(shù)。 每個不是頭節(jié)點的節(jié)點都必須等待接收d個消息,因為范德蒙德矩陣的矩陣需要d個接收到的消息的編碼向量,與接收到的消息本身的向量相乘。但中繼節(jié)點相對于其他節(jié)點有一定區(qū)別。每個中繼節(jié)點接收到消息后,必須根據(jù)不同分組對收到的消息進行正確的編碼,并發(fā)送給其他節(jié)點(表4第24行)。具體來說,根據(jù)接收到的d值{σ1,…,σd}與鄰節(jié)點的{i1,…,id},它計算以下元素: (7) (8) 當(dāng)一個新節(jié)點加入或離開該分組時,頭節(jié)點必須生成一個新的密鑰,并根據(jù)適當(dāng)?shù)拿荑€分發(fā)協(xié)議進行分發(fā)。 當(dāng)一個新的節(jié)點加入分組時,之前的所有成員都進行密鑰推導(dǎo),生成一個新的密鑰,該密鑰不在整個組內(nèi)分發(fā),只傳遞給新加入的成員,以降低重新密鑰輸入的相對成本。 具體來說,可以通過對舊密鑰使用單向推導(dǎo)函數(shù)f和選擇一個非零鹽值作為分組標(biāo)識符Kid,通過計算來獲得每個節(jié)點上的新密鑰,新密鑰如下所示: Knew=f(Kold⊕Kid) (9) 故通過知道Knew來反向推導(dǎo)獲得Kold在計算上一定是不可行的,SHA-1哈希函數(shù)因為計算量少且足夠安全的特性被用作密鑰派生函數(shù)。 文中選擇使用符合IEEE 802.15.4協(xié)議的短距離射頻廣播網(wǎng)絡(luò)和數(shù)據(jù)速率為250 kbit/s的無線電芯片CC2420作為參考通信設(shè)施。在TOSSIM模擬器上運行了解決方案,在模擬中使用了4 MHz微控制器、4 kB的RAM,8通道的10位ADC和一個128 kB的可編程閃存。對從50~300個節(jié)點的不同數(shù)量的設(shè)備進行了多項實驗,通過測量完成所提出方案的基本階段所需的平均時間以及隨之而來的能源消耗。 如圖7所示,本文用短條形表示利用本文描述算法構(gòu)建泛在電力物聯(lián)網(wǎng)群組所需的平均時間,可以發(fā)現(xiàn)相對于多安全信道、網(wǎng)絡(luò)編碼等傳輸方式,本文提出群組密鑰管理算法大大縮短了相應(yīng)時間。 圖7 算法平均耗時圖Fig.7 Average time consumption graph of the algorithm 如圖8所示,本文用短條形表示利用本文描述算法構(gòu)建泛在電力物聯(lián)網(wǎng)群組所需的平均能耗,不難發(fā)現(xiàn),相對于聚類、非聚類等密鑰管理算法,本文提出的群組密鑰管理算法大大降低了建立群組花費的平均能耗。 圖8 算法平均能耗圖Fig.8 Average power consumption graph of the algorithm 物聯(lián)網(wǎng)正逐步被用于工業(yè)和關(guān)鍵應(yīng)用,在這些應(yīng)用中,安全性至關(guān)重要。特別是,當(dāng)使用無線技術(shù)時,實現(xiàn)安全通信是非常具有挑戰(zhàn)性的,因為它很容易被破壞。機密性的要求通常通過加密來解決,這需要對所采用的密鑰進行適當(dāng)?shù)墓芾砗徒粨Q/協(xié)議。本文設(shè)計并實現(xiàn)了一種使用組密鑰保護節(jié)點間通信的物聯(lián)網(wǎng)發(fā)布/訂閱協(xié)議。針對這些網(wǎng)絡(luò)的超大規(guī)模,本文針對事件的特定主題,根據(jù)節(jié)點的共同主題對其進行聚類,并設(shè)計了一種基于安全網(wǎng)絡(luò)編碼的頭節(jié)點選舉和基于群組密鑰管理的分布式密鑰管理方案。為了避免在新節(jié)點加入分組時需要重新鍵控的開銷,本文使用了鍵派生。從這項工作中,本文了解到,與在事件通知中引入加密和提供空間解耦相比,使用組密鑰和分布式密鑰管理和節(jié)點分組能夠降低開銷。本文描述的群組密鑰管理算法具有高效性和安全性等特點,并且可以降低重密鑰的成本。作為未來的工作,文中描述的分組密鑰管理算法可以用來解決網(wǎng)絡(luò)的可伸縮性、匿名性等問題。2.4 基于分組網(wǎng)絡(luò)的密鑰派生算法
3 性能評估
4 結(jié)束語