馬早霞,李 磊,劉 心
(河北工程大學(xué) 信息與電氣工程學(xué)院,河北 邯鄲 056038)
物聯(lián)網(wǎng)產(chǎn)業(yè)的飛速發(fā)展,對通信技術(shù)提出了更高的要求[1-3]。在此背景下,低功耗廣域網(wǎng)LPWAN (low power wide area network) 因其能耗小、通信范圍廣等特點得以廣泛應(yīng)用。LoRa技術(shù)作為LPWAN中應(yīng)用最為廣泛的通信技術(shù)之一具有低功耗、遠(yuǎn)距離、廣范圍的特點,發(fā)展相對較快、較為成熟。智慧物聯(lián)網(wǎng)依托LPWAN,容易陷入隱私泄漏和其他安全危機(jī)。數(shù)據(jù)傳輸過程是整個物聯(lián)網(wǎng)信息傳輸最薄弱的環(huán)節(jié),特別是在LoRa無線網(wǎng)絡(luò)中,由于帶寬、數(shù)據(jù)速率和包大小等受限,數(shù)據(jù)鏈路特別容易受到攻擊[4]。LoRaWAN是基于LoRa的上層協(xié)議,定義了整個系統(tǒng)的架構(gòu)和運(yùn)行過程。LoRaWAN使用對稱密鑰加密(AES-128bits)進(jìn)行加密/解密和MAC操作,雖在一定程度上保護(hù)網(wǎng)絡(luò)中傳輸?shù)臄?shù)據(jù)有效負(fù)載,但仍面臨數(shù)據(jù)加密安全度不高,傳輸鏈路易被監(jiān)聽等問題[4-5]。
LoRa廣域網(wǎng)的安全性受到廣泛關(guān)注,文獻(xiàn)[6]指出了通信各方由于同步問題易受攻擊的漏洞。文獻(xiàn)[7]首次對LoRaWAN協(xié)議的安全性進(jìn)行研究,主要分析了LoRaWAN v1.0和LoRaWAN v1.1的密鑰交換部分,利用工具Scyther提出了一種針對v1.1的安全協(xié)議模型,定義了基于物理層的LPWAN網(wǎng)絡(luò)的結(jié)構(gòu)和運(yùn)行。但是該文獻(xiàn)提出的模型只是對協(xié)議進(jìn)行安全性檢查,并不能解決LoRaWAN協(xié)議易受攻擊和重放的問題。文獻(xiàn)[8]針對MAC層安全機(jī)制提出了一種密鑰自動生成機(jī)制。文獻(xiàn)[9]在此基礎(chǔ)上提出一種密鑰衍生機(jī)制,該機(jī)制無差別地對連接請求過程進(jìn)行加密,并沒有考慮對功耗的增加。文獻(xiàn)[10]提出一種低功耗的端對端的密鑰生成機(jī)制。文獻(xiàn)[11]展示了密鑰管理、通信和網(wǎng)絡(luò)連接階段的幾個漏洞,討論了LoRaWAN v1.0的一些漏洞。文獻(xiàn)[12]指出,在空中激活過程中,終端向服務(wù)器發(fā)送的連接請求加密等級不高。但是這個問題已經(jīng)在LoRaWAN新版本協(xié)議中做出了改進(jìn)。
本文旨在分析LoRaWAN協(xié)議傳輸鏈路的安全性,在有針對性地解決了重放攻擊問題的基礎(chǔ)之上,提出了一種基于LoRaWAN協(xié)議的安全入網(wǎng)機(jī)制,保證傳輸安全性的同時盡可能地降低功耗。
圖1為LoRa傳感網(wǎng)絡(luò)概念架構(gòu)圖。LoRa網(wǎng)絡(luò)是一種星型拓?fù)渚W(wǎng)絡(luò),終端采集數(shù)據(jù)后上傳至服務(wù)器,且終端與服務(wù)器之間均可以進(jìn)行雙向通信。一個LoRa終端可與一個或多個網(wǎng)關(guān)相連,網(wǎng)關(guān)只對數(shù)據(jù)進(jìn)行轉(zhuǎn)發(fā)處理[13]。
圖1 LoRa智慧網(wǎng)絡(luò)概念圖Fig.1 LoRa Intelligent Network Concept
LoRaWAN作為LoRa網(wǎng)絡(luò)的MAC層協(xié)議,定義了6種消息類型,如表1所示。
服務(wù)器根據(jù)收到的消息類型判斷是否需要進(jìn)行應(yīng)答。當(dāng)發(fā)送的數(shù)據(jù)幀為confirmed類型的消息時,服務(wù)器要進(jìn)行答復(fù)(即ACK要進(jìn)行重置)。其他消息類型根據(jù)需求可不進(jìn)行答復(fù)。本文所做研究針對LoRaWAN數(shù)據(jù)幀join request類型進(jìn)行重構(gòu),即對入網(wǎng)請求幀進(jìn)行重構(gòu)。
表1 LoRaWAN消息類型
雙向認(rèn)證機(jī)制是基于終端與網(wǎng)關(guān)之間的交互,建立安全的數(shù)據(jù)鏈路,防止重放攻擊的有效方法。服務(wù)器對終端發(fā)送的數(shù)據(jù)幀中MAC地址和IP地址等進(jìn)行函數(shù)提取以及合法性檢測,然后被請求方根據(jù)請求方身份信息生成編碼重構(gòu)序列,請求方根據(jù)編碼重構(gòu)序列進(jìn)行幀重構(gòu),然后隨機(jī)生成反向編碼重構(gòu)序列一同發(fā)送給被請求方,由被請求方再次驗證身份。
圖2 雙向認(rèn)證過程Fig.2 Two-way authentication process
圖2所示為LoRa終端與服務(wù)器之間雙向認(rèn)證的過程。終端要按照服務(wù)器定義的規(guī)則對數(shù)據(jù)幀進(jìn)行重構(gòu),并實現(xiàn)重構(gòu)后數(shù)據(jù)幀的網(wǎng)絡(luò)通信傳輸。在數(shù)據(jù)鏈路建立時,首先由終端發(fā)起連接請求,服務(wù)器接收到連接請求后獲取數(shù)據(jù)幀的頭部信息,判斷是否需要進(jìn)行重構(gòu),若需要重構(gòu)則由服務(wù)器向終端發(fā)送反向連接請求。終端收到服務(wù)器的反向連接請求后根據(jù)編碼重構(gòu)序列進(jìn)行重構(gòu),然后第二次向服務(wù)器發(fā)送符合重構(gòu)規(guī)則的連接請求。服務(wù)器接收重構(gòu)后的連接請求判斷是否符合規(guī)則,若符合規(guī)則,則同意連接,至此通信鏈路建立成功。
該機(jī)制只有在數(shù)據(jù)鏈路建立的時候才啟動五次握手認(rèn)證。就單次傳輸來說數(shù)據(jù)鏈路的建立和釋放的能耗是不可避免的。安全機(jī)制的消耗增加主要體現(xiàn)在以下幾個方面增加:(1)每次隨機(jī)生成重構(gòu)因子的消耗;(2)五次握手機(jī)制的消耗;(3)數(shù)據(jù)鏈路釋放之后,再次建立時的消耗。該機(jī)制根據(jù)終端發(fā)送的請求數(shù)據(jù)幀的頭部信息生成的編碼重構(gòu)序列,再利用編碼重構(gòu)序列完成后續(xù)重構(gòu)規(guī)則的通知,在重構(gòu)規(guī)則協(xié)商過程中對請求方的設(shè)備合法性進(jìn)行檢測,通過雙方設(shè)備合法性檢測的流程實現(xiàn)防止第三方竊聽的效果。
圖3是進(jìn)行幀重構(gòu)規(guī)則通知的數(shù)據(jù)幀結(jié)構(gòu),Preamble是幀的頭部,其中編碼了同步字來實現(xiàn)數(shù)據(jù)收發(fā)兩方的同步。PHDR為物理頭,PHDE_CRC為頭校驗。 MHDR是MAC 層幀頭,其中MType 是消息類型,MIC是4字節(jié)校驗[14]。MACPayload 部分為數(shù)據(jù)幀的重構(gòu)部分,其中密鑰指示位代表密鑰指針指向的位置,通過此指針可以確定相同的密鑰。16 字節(jié)數(shù)據(jù)用于存放驗證信息。編碼重構(gòu)序列由其余三個參數(shù)共同確定。
考慮到LoRaWAN通信過程的系統(tǒng)開銷,若每次終端節(jié)點接入都需要進(jìn)行雙向認(rèn)證,則會大大增加能耗,所以在這里利用節(jié)點的安全性等級來確定認(rèn)證規(guī)則的更新周期。即規(guī)定,在一個周期內(nèi),終端節(jié)點只需在首次連接時進(jìn)行雙向認(rèn)證,其余連接只需進(jìn)行網(wǎng)關(guān)與終端的單向認(rèn)證即可。所以節(jié)點的安全等級與重構(gòu)因子的更新周期息息相關(guān),隨著信息安全性等級越高,重構(gòu)因子的更新周期應(yīng)該更短,才能保證數(shù)據(jù)的安全性。在本文中,我們按照終端節(jié)點所采集信息的隱私程度,將終端節(jié)點分為五個安全等級,對應(yīng)認(rèn)證規(guī)則的5個更新周期。T=1時,只需進(jìn)行一次安全數(shù)據(jù)鏈路的建立,一旦數(shù)據(jù)鏈路建立,在之后的數(shù)據(jù)傳輸中將不再進(jìn)行終端身份的認(rèn)證,直到終端身份失效。
在網(wǎng)絡(luò)服務(wù)器端進(jìn)行重構(gòu)規(guī)則的周期性更新,給定重構(gòu)因子一個更新周期,在周期內(nèi)的重構(gòu)因子不進(jìn)行變化,而是在達(dá)到更新周期后對重構(gòu)規(guī)則進(jìn)行函數(shù)性變化。即不用每次建立數(shù)據(jù)鏈路都要生成隨機(jī)的重構(gòu)因子,而是在一定時間內(nèi)使用同一個重構(gòu)因子,以此來減少系統(tǒng)開銷。
為解決重構(gòu)規(guī)則更新時網(wǎng)關(guān)和終端雙方使用規(guī)則的不同步問題,設(shè)置一個緩沖區(qū)來保存原來的重構(gòu)規(guī)則和已經(jīng)發(fā)送過申請的終端地址合法性。若收到的攜帶重構(gòu)因子的申請不符合重構(gòu)規(guī)則但其設(shè)備身份是合法的,則該終端可能是按照上一個周期的重構(gòu)規(guī)則進(jìn)行幀重構(gòu)的。
該機(jī)制的周期性處理流程見圖4。
為進(jìn)一步提供通信鏈路安全性,該機(jī)制對雙向認(rèn)證接入方法的重構(gòu)規(guī)則進(jìn)行周期性更新。為解決重構(gòu)規(guī)則更新時服務(wù)器和終端雙方使用規(guī)則的不同步問題,在網(wǎng)關(guān)中設(shè)置一個白名單來保存已經(jīng)發(fā)送過申請的終端的地址,白名單隨著重構(gòu)規(guī)則進(jìn)行周期性更新,若發(fā)送請求的終端數(shù)據(jù)幀地址已在白名單中保存,則可以判斷該終端在本周期內(nèi)已經(jīng)成功建立過連接,則可進(jìn)一步判斷其請求幀是否符合重構(gòu)規(guī)則。若請求幀符合重構(gòu)規(guī)則,則服務(wù)器同意其連接請求;若不符合重構(gòu)規(guī)則,則拒絕該終端本次連接請求。上述流程可見圖5。圖6所示為終端側(cè)設(shè)備合法性檢測流程圖,是終端發(fā)送連接請求后等待接收服務(wù)器的響應(yīng),并根據(jù)服務(wù)器響應(yīng)進(jìn)行數(shù)據(jù)幀重構(gòu)或數(shù)據(jù)傳輸,若收到服務(wù)器發(fā)送的攜帶編碼重構(gòu)序列的反向連接請求,則對自身請求幀進(jìn)行響應(yīng)重構(gòu),若接收到服務(wù)器的同意連接通知,則可進(jìn)行數(shù)據(jù)傳輸。
圖3 幀重構(gòu)規(guī)則通知報文Fig.3 The frame reconstruction rules inform the message
圖4 雙向認(rèn)證機(jī)制路程圖Fig.4 Two-way authentication mechanism road map
圖5 服務(wù)器端設(shè)備合法性檢測流程圖Fig.5 Flow chart of server side device legality detection
圖6 終端側(cè)設(shè)備合法性檢測流程圖Fig.6 Flow chart of legality testing of terminal side equipment
所有終端的連接請求,經(jīng)NS(Network Servers)轉(zhuǎn)發(fā)給JS(Join Servers)處理。DevNonce是一個由終端設(shè)備在請求連接時產(chǎn)生,在一定范圍內(nèi)的隨機(jī)數(shù)[16]。已產(chǎn)生的DevNonce由JS設(shè)立的固定大小的數(shù)據(jù)池保存。在JS處理連接請求過程中,JS若判斷DevNonce是個不在數(shù)據(jù)池內(nèi)的隨機(jī)數(shù),則同意連接請求,若與數(shù)據(jù)池內(nèi)的數(shù)據(jù)匹配成功,則對連接請求予以丟棄。因為服務(wù)器可連接的終端設(shè)備是有限的,且一旦雙方建立連接,一般情況下,之后的連接將不再進(jìn)行身份認(rèn)證。所以服務(wù)器不會刪除數(shù)據(jù)池中保存的DevNonce。若終端需要重新連接網(wǎng)絡(luò),則生成新的DevNonce。惡意攻擊節(jié)點抓出這一特點,通過占用大量DevNonce使終端設(shè)備不能產(chǎn)生規(guī)定范圍內(nèi)的隨機(jī)數(shù),而無法與服務(wù)器建立連接。
(1)
式中,Tr(以天為單位)代表攻擊節(jié)點重放需等待的時間,是表示數(shù)據(jù)鏈路安全性的重要系數(shù);ND代表最終數(shù)據(jù)池中的序列;fJ(固定值)代表每天每個終端設(shè)備的有效連接過程的數(shù)量。
從式(1)可以看出,只要ND越大,即數(shù)據(jù)池容量夠充足,則連接請求就夠安全。
而幀重構(gòu)機(jī)制可以在每次身份認(rèn)證結(jié)束后便丟棄已產(chǎn)生DevNonce,從而有效地防止了重放攻擊。
判斷算法優(yōu)越性的指標(biāo),除了防止重放的時間之外,還有終端連接的成功率。
假設(shè)DevNonce在數(shù)據(jù)集[1,…,N=216]內(nèi),S是存儲DevNonce的集合,|S|=ND,那么在LoRaWAN v1.1定義下,終端產(chǎn)生一個已被ND存儲的DevNonce的概率是:
(2)
可以看出ND越大,則連接成功率就越低。
而在通過業(yè)務(wù)區(qū)分機(jī)制中,引入了周期性幀重構(gòu)的概念。將一天的時間分為n個周期T,在一個周期結(jié)束后,服務(wù)器存儲的已被終端使用過的DevNonce數(shù)據(jù)池將清空。那么終端產(chǎn)生一個已被ND存儲的DevNonce的概率就是:
P[dK∈S]=P[dK∈S|Ti]
(3)
式中,Ti表示當(dāng)前所處周期,dk是第k次連接過程中產(chǎn)生的DevNonce。系數(shù)P代表信息的安全性,P系數(shù)越高,代表連接成功率越低,即信息傳輸風(fēng)險越高。反之,則信息傳輸風(fēng)險越低。
為了驗證系統(tǒng)性能,在opnet中搭建了LoRa傳感器網(wǎng)絡(luò)模型,模擬信息發(fā)送與接收。根據(jù)信息的安全等級不同,將采集到的醫(yī)療信息分為五個等級,每個等級有其相應(yīng)的重構(gòu)周期。采集到的數(shù)據(jù)會根據(jù)它對應(yīng)的等級選擇相應(yīng)的重構(gòu)周期進(jìn)行發(fā)送。所以在實際情況中,周期是可變的。在可變周期下的安全系數(shù)的對比見圖7。
圖7 安全系數(shù)對比圖Fig.7 Comparison diagram of safety factor
n代表著不同程度安全等級,對比其對應(yīng)著的不同的概率。生成的ND增大,生成無效DevNonce的概率越高,即數(shù)據(jù)連接建立的成功率越低。但因為周期性進(jìn)行幀重構(gòu)的原因,NS端存儲的DevNonce不斷刷新,終端生成的無效DevNonce值的概率一直小于標(biāo)準(zhǔn)LoRaWAN v1.1,且n越大,即周期時間越短,生成無效的DevNonce的概率越小,即安全數(shù)據(jù)鏈路連接成功率越高。
為了對比可變周期下的幀重構(gòu)與標(biāo)準(zhǔn)LoRaWAN v1.1的能量消耗,本文模擬了一段時間內(nèi)的數(shù)據(jù)的發(fā)送,并對其進(jìn)行業(yè)務(wù)區(qū)分,按照數(shù)據(jù)的重要程度對其進(jìn)行安全度的區(qū)分,得到其安全等級變化,見圖8。
圖8 安全等級設(shè)置Fig.8 Safety level setting
其中P(n=1)=0.25,P(n=2)=0.272 5,P(n=3)=0.198 8,P(n=4)=0.127 1,P(n=5)=0.151 6。依照這部分的不同安全等級的數(shù)據(jù)進(jìn)行系統(tǒng)開銷的計算。
先設(shè)定能量消耗系數(shù),假定發(fā)送一比特數(shù)據(jù)消耗的能量為0.000 5。接收一比特數(shù)據(jù)消耗的能量為0.001。終端每間隔20 s向服務(wù)器發(fā)送數(shù)據(jù)。在五個安全等級下(第一等級即按照標(biāo)準(zhǔn)LoRaWAN協(xié)議發(fā)送數(shù)據(jù))對能耗進(jìn)行比較,周期性進(jìn)行重構(gòu)的能量消耗顯然比標(biāo)準(zhǔn)LoRaWAN v1.1的能量消耗要大,且隨著安全性等級越高,其能耗就越高。而各部分?jǐn)?shù)據(jù)對安全性的要求也不同,若一味地追求高安全等級,會大大加速終端的能耗。而采用可變周期的方式,將隱私程度較高的數(shù)據(jù)設(shè)置為高安全等級,隱私度較低的數(shù)據(jù)設(shè)置為低安全等級。
圖9 數(shù)據(jù)認(rèn)證過程能耗圖Fig.9 Energy consumption chart of data authentication process
圖10 數(shù)據(jù)傳輸過程能耗圖(包括認(rèn)證過程)Fig.10 Data transmission process energy consumption diagram
圖9為1 000 s內(nèi)終端周期性身份認(rèn)證過程的能耗對比圖,在可變周期下產(chǎn)生的總能耗雖高于傳統(tǒng)LoRaWAN v1.1(即n1(base)_Energy曲線),但它在考慮安全性的基礎(chǔ)上,與單純追求高安全等級的傳輸相比,能耗大大降低。
圖10為1 000 s內(nèi)終端周期性身份認(rèn)證并進(jìn)行數(shù)據(jù)傳輸所產(chǎn)生的能耗對比圖,在可變周期下產(chǎn)生的總能耗雖高于傳統(tǒng)LoRaWAN v1.1,但它在考慮安全性的基礎(chǔ)上,與單純追求高安全等級的傳輸相比,能耗大大降低。
圖11 數(shù)據(jù)接受延遲分析圖Fig.11 Data reception delay analysis graph
從短期觀察信號延遲問題,通過圖11所示,由于在幀重構(gòu)機(jī)制服務(wù)器需要對終端進(jìn)行身份認(rèn)證,且終端需要根據(jù)服務(wù)器要求進(jìn)行幀重構(gòu),所以在最初進(jìn)行數(shù)據(jù)傳輸時,本系統(tǒng)的延遲時間略高于標(biāo)準(zhǔn)LoRaWAN v1.1協(xié)議的延遲時間。當(dāng)完成身份認(rèn)證之后,受阻的數(shù)據(jù)會先后到達(dá)服務(wù)器,這部分?jǐn)?shù)據(jù)在身份驗證過程中已經(jīng)進(jìn)行重構(gòu),所以圖中兩種模式會有短暫重疊,隨后兩條線漸漸趨于平緩。一個周期結(jié)束后,幀重構(gòu)機(jī)制中終端需要再一次進(jìn)行身份認(rèn)證,身份認(rèn)證結(jié)束后,延遲時間又恢復(fù)穩(wěn)定。通過對實驗結(jié)果分析,在數(shù)據(jù)傳輸階段造成的實驗增加不足7%。
本文針對性的LoRa無線傳感網(wǎng)絡(luò)的協(xié)議安全性問題,提出一種基于LoRaWAN協(xié)議的雙向認(rèn)證機(jī)制,該機(jī)制利用數(shù)據(jù)幀的編碼重構(gòu),實現(xiàn)終端與服務(wù)器之間雙向的身份認(rèn)證,并在此基礎(chǔ)上對重構(gòu)規(guī)則進(jìn)行周期性更新,對不同安全等級的節(jié)點進(jìn)行不同周期的重構(gòu)規(guī)則更新,避免多次重構(gòu)規(guī)則更新造成的系統(tǒng)開銷。通過對協(xié)議安全性的算法分析,結(jié)果表明該機(jī)制能夠有效提高終端與服務(wù)器建立連接過程的安全性,且協(xié)議安全性隨著重構(gòu)規(guī)則更新周期的縮短而增大。對該機(jī)制進(jìn)行能耗分析,結(jié)果顯示在雙方身份認(rèn)證過程中造成的能耗會隨著周期的縮短而增大,在整體數(shù)據(jù)傳輸過程中,能耗增加并不明顯,數(shù)據(jù)時延僅在認(rèn)證階段具有顯著增加,而在整體數(shù)據(jù)傳輸階段時延增加不過7%。該協(xié)議的安全性、能耗和時延均隨重構(gòu)規(guī)則更新周期的變化而變化,故該協(xié)議下一步將對更新周期的設(shè)置進(jìn)行進(jìn)一步研究,以求達(dá)到安全性和系統(tǒng)開銷的平衡。