張 治,魏嘉鑫,王 林
(1.國家電投集團光伏產業創新中心,青海 西寧 810000;2.西安理工大學自動化與信息工程學院,陜西 西安 710000)
受益于穩定的生態系統以及技術特點,LoRa網絡在大型數據傳輸網絡中的使用占比越來越大[1],所以其安全性建設尤為重要。LoRa網絡可以基本實現終端、網關和服務器之間傳輸的安全性,終端能夠生成唯一的密鑰。LoRa網絡層和應用傳輸層在對于密鑰的管理上是一致的,2層的密鑰之間沒有設置隔離;同時加/解密過程和密鑰保護都由AES-128加密算法完成,加密強度的不足導致其安全等級不高,因此存在因密鑰泄露而造成的核心數據泄露、非法數據篡改等風險[2]。
相關研究方面,Xu等[3]針對物理層安全展開研究,提出了LoRa網絡第一個完整密鑰建立協議LoRa-Key[3]。另一方面,部分文獻剖析LoRa協議MAC層的結構,并對其安全機制進行了相關分析和改進。例如,Zhang等[4]設計了一種特殊的密鑰生成方案:在室外城市環境和室內環境中進行的實驗表明,這種密鑰生成方案適用于低功率廣域網絡LPWAN(Low-Power Wide-Area Network),并且能夠可靠地生成安全密鑰。Kim等[5]設計了一種低功耗的LoRa協議密鑰自動生成方案,通過安全性分析,證明了此方案可以保證其機密性和完整性。Ozyilmaz等[6]探討了將區塊鏈與LoRa網絡相結合的可能性,實驗證明:區塊鏈與LoRa網絡相結合的方案可以在一定程度上解決LoRa網絡的有關問題。
現有文獻對LoRa數據傳輸網絡安全性進行了多方面的分析研究,但是基本上都是對LoRa網絡自身安全機制進行優化。針對面臨的風險和存在的安全問題,本文提出一種混合加密方案:在LoRa網絡使用AES-128算法對數據加密傳輸的基礎上,引入一種非對稱加密算法——RSA算法,利用其密鑰生成運算復雜度高和安全性強的特點對AES數據加密算法的密鑰進行加密,可以在極大程度上降低風險,提高數據傳輸安全性[7-9]。混合加密方案雖然能夠在很大程度上滿足數據傳輸過程中的安全指標,但其缺陷也十分明顯。由于是在LoRa網絡的基礎上引入了RSA非對稱加密算法并與AES加密算法混合,在數據傳輸過程中會增加通信時間,降低傳輸的效率[10]。本文對RSA和AES加密算法進行優化改進,在保證安全性的前提下,一定程度上保證了算法運算效率[11-14]。
本文設計的混合加密方案,在不影響傳輸效率、保證數據通過性的同時,可以有效阻止竊取密鑰的非法行為,保證網絡數據傳輸的安全性,極大程度降低了LoRa數據傳輸網絡在安全性方面存在的隱患。
LoRa網絡自身安全機制采用的是AES-128數據加密算法,其密鑰長度為128比特,密鑰的長度遠遠低于RSA加密算法的密鑰長度,所以其加/解密數據的過程具有較高的效率[15],但其不足之處在于加/解密過程使用的一對密鑰的參數基本一樣。而RSA加密算法在加/解密時所使用的密鑰是不同的,密鑰長度更長,安全性相較于AES算法有明顯提高,但運算效率遠遠低于AES算法,不適合對大量數據進行操作[16]。針對上述算法特點,分析各自的優勢與不足,本文采用將AES數據加密算法與RSA加密算法相結合的混合加密機制。AES-128算法用來加/解密LoRa網絡中傳輸的數據,RSA算法用來保護AES的密鑰。具體結構如圖1所示。

Figure 1 Flow chart of LoRa data transmission network hybrid encryption scheme圖1 LoRa數據傳輸網絡混合加密方案流程
該混合加密方案的原理是:在LoRa終端設備發送實時數據之前,終端設備使用AES-128算法對需要發送的數據報文進行加密,并使用RSA算法對AES數據加密算法產生的密鑰進行加密處理。加密后的AES密鑰和數據密文被一起發送到服務器。服務器接收到加密的AES密鑰和數據密文后,首先利用提前設置好的RSA私鑰對加密過的AES密鑰實施解密操作,然后利用解密得到的AES密鑰解密數據密文,最后得到數據。終端設備實現實時數據加密,服務器實現解密。一般來說,服務器應當在最開始創建一個RSA密鑰對來提高AES密鑰的安全性。
3.1.1 AES算法原理
LoRa網絡自身安全機制所使用的加密算法為AES-128算法,其密鑰長度為128比特,需要的迭代操作輪數為10輪,所以在算法的初始階段,需要實現輪密鑰加操作,完成操作需要的子密鑰數為11[17]。在迭代過程中,前9輪操作是一樣的,每輪具體包含4個操作,分別是字節代換、行移位、列混淆和輪密鑰加,而在最后一輪只有3個階段,相較于前9輪缺少了列混淆[18]。前面9輪,從第1輪到第9輪都稱為輪函數。AES加密算法運行過程的核心部分就是輪函數[19],因此,可以用輪函數運算效率的高低來衡量整個AES算法加密過程的運算效率。本文將通過提高輪函數的運算效率來優化AES算法。
3.1.2 AES算法輪函數優化
相比于窮舉暴力破解密鑰,捷徑攻擊在某些方面具有更高的有效性,所以單純地從安全性角度來看,在面對網絡攻擊時,加密算法的輪數與安全性成正比[20]。但是,如果從網絡的傳輸效率角度來分析,可以在合理的范圍內減少加密算法輪函數的輪數。
可以利用密鑰擴展算法來判斷精簡輪數的可行性,輪密鑰的發散程度具有極大的參考意義。參考1對只有一位不同的主密鑰,對其進行密鑰擴展,然后對比2對輪密鑰的不同。2對主密鑰如表1所示。

Table 1 Two sets of key seeds表1 2對密鑰種子
將第1對的密鑰種子選為操作樣本,操作條件為10輪擴展,通過一對密鑰種子的輪密鑰來計算其比特差。根據AES算法的運行原理得輪密鑰每輪的擴展,比特差越大,安全性越高。密鑰擴展結果如表2所示。

Table 2 Bit difference after 10 rounds of key expansion表2 10輪密鑰擴展后比特差
同理,對第1對密鑰種子完成如上操作,通過對2組數據比較分析可得密鑰種子在經過7輪密鑰擴展后,比特差與10輪操作的比特差差異不大且第8輪密鑰擴展為總體比特差峰值。
綜合以上分析結果,本文選擇AES算法為8輪,后2輪留作安全冗余。
由于傳統RSA算法的安全性取決于算法過程中的大素數因子分解的難度,而模正整數次冪的運算過程復雜,也就造成了該算法采用的冪指剩余計算太耗時,影響算法執行效率[21]。本文對RSA算法優化的原則:確保安全性,即在提高運算速率的同時避免影響算法的安全性能。
在數據結構與算法中,冪運算是復雜度較高的運算,運算過程比較復雜,效率較低。而RSA算法中存在很多的冪剩余運算,其對于運算效率的影響是非常大的,算法安全性在很大程度上取決于大整數n的因子分解難度,那么需要考慮如何在保持n不變的基礎上將冪剩余運算次數在合理范圍內降到最低,這樣就可能在保證安全性的同時提高運算效率。
3.2.1 傳統RSA加密算法
傳統RSA加密算法由加密過程和解密過程組成,其運算公式分別如式(1)和式(2)所示:
(1)
(2)
其中,n為2個隨機不相等質數p和q的乘積,e為隨機整數,1 3.2.2 對于RSA算法的改進 本文使用2種不同的方法分別對加密和解密運算進行改進。 (1)加密運算改進。 由式(1)可知,加密過程需要執行k次冪剩余運算,很大程度上加重了運算任務。本文對此改進的思想是:在合理范圍內最大限度地減少冪剩余運算的次數,可以用適合的加法剩余運算替代冪剩余運算,改進后的運算公式如式(3)所示: cf=mf+mf-1(modn),f=1,2,…,k (3) (4) 經過優化操作后的改進算法中,對于冪剩余運算的操作,加密過程只需進行1次,剩下的運算操作是將加法剩余運算執行k-1次。加法剩余運算的速度要遠遠高于冪剩余運算速度,因此能夠有效解決算法的速度問題。 (2)解密運算改進。 接收方在對密文解密時會知道n的分解,即n=p*q,可以得到q和p的相關參數。所以,解密運算可以分解進行,具體如式(5)所示: (5) 其中,C1=Cmodn;C2=Cmodq;d1=dmod (p-1);d2=dmod (q-1)。 將RSA解密運算公式分解之后,d的長度與n的長度基本一致,d1和d2的長度只有原始d長度的一半,因此在實際運算過程中,可以降低運算復雜度,節省大量的運算時間,提高運算效率。最后應用中國余數定理就能計算出m的值,如式(6)所示: m=(m1qy1+m2py2)modn (6) 其中,qy1=1 modp;py2=1 modq。 與傳統RSA算法相比較,改進后的算法還是需要依賴n的因數分解難度來決定算法的安全性,在改進過程中,n的因數分解難度并沒有變化,所以改進算法與傳統RSA算法在安全方面具有相同的可靠性。 本節對設計的數據傳輸網絡混合加密方案從安全性和傳輸效率方面進行分析和評估,明確本文方案的優勢,以便于今后進一步改進和升級。 本文設計的加密方案能夠利用AES數據加密算法加密LoRa協議的數據報文,同時引入RSA加密算法對AES-128算法的密鑰進行加密,并一起進行密文傳輸。此方案將2種算法的優勢合理結合,最大限度地提高了數據傳輸的安全性。 LoRa網絡中AES數據加密算法能夠在很大程度上實現數據保密性和傳輸安全性,以此為基礎,本文采用RSA非對稱算法對AES算法生成的密鑰進行加密,可以防止AES密鑰泄露,為數據傳輸的安全提供保障。 因此,本文設計的數據傳輸混合加密方案能夠滿足數據傳輸對于安全性的需求。 本文對3種加密方案進行測試: (1)LoRa網絡自身安全機制:AES-128加密算法; (2)經典加密方案:RSA+AES混合加密算法; (3)本文提出的方案:改進后的RSA+改進后的AES混合加密算法。 3種加密方案中AES算法都采用與LoRa網絡AES-128算法相同的密鑰長度128位,3種加密方案對同一個48字節的字符串進行1 000次加解密,得出每種方案的加/解密時間,具體結果如表3所示。 Table 3 Comparison of encryption time and decryption time表3 加/解密時間比較 由表3可以很直觀地看出,改進后的AES+RSA加密算法比LoRa網絡AES-128加密算法用時長,比經典的數據加密方案AES+RSA算法加解密耗時更少,運算效率更高。 如今是數據傳輸網絡高速發展的時代,網絡安全被高度重視。在面對網絡上各種各樣的惡意攻擊時,對保護重要信息不被竊取、數據防泄漏等研究的投入日益增長,因此提高數據傳輸網絡的安全性具有重要意義。本文通過分析LoRa網絡安全機制的不足,設計了一種混合加密方案,在LoRa協議的基礎上引進RSA加密算法來對原有AES-128算法的密鑰進行加密,同時對AES數據加密算法和RSA加密算法進行優化改進,在提升數據傳輸安全性的同時保證了其傳輸效率。通過測試結果可以看到,改進算法相比于經典數據加密方案中的AES+RSA算法而言,其加密解密過程同時兼顧了運算效率和安全性。本文設計的加密方案可以有效保證網絡數據傳輸的安全性,并且傳輸效率沒有受到較大影響,保證了數據通過性,可以在一定程度上促進LoRa網絡的安全性研究。4 實驗結果分析與比較
4.1 安全性分析
4.2 效率分析

5 結束語