賈榮媛,王宜懷,王小寧
(蘇州大學 計算機科學與技術學院, 江蘇 蘇州 215000)
窄帶物聯(lián)網(narrowband internet of things,NB-IoT)自標準被建立以來因其具有廣覆蓋、高容量、靈活部署、低功耗和低成本等特點而得到了迅猛發(fā)展[1-3]。隨著窄帶物聯(lián)網終端感知節(jié)點數(shù)目的急劇增加及窄帶網絡的開放性,終端感知節(jié)點易受到節(jié)點冒充、信息竊取、消息篡改等攻擊,其安全問題面臨嚴峻的挑戰(zhàn),這迫切需要研究和解決[4,5]。加密技術是保證網絡信息安全的常用措施,高度優(yōu)化的AES(advanced encryption standard)強分組加密算法是當前終端感知節(jié)點加密的研究方向之一[6,7]。文獻[8,9]通過減少AES加密輪數(shù)和設計替換表來提高AES的運行效率。然而,雖然改進的AES在運行效率方面有很大的改進,但是其安全性也隨之降低。混沌序列因其可被序列化成某個范圍內的正整數(shù)而被廣泛應用于數(shù)據加密領域[10,11]。因此本文針對現(xiàn)有基于AES的加密算法無法在時間消耗和安全性兩方面具有良好表現(xiàn)的問題,提出了基于AES與混沌序列的輕量級加密算法——LCHAOSAES(lightweight chaos AES),并根據窄帶物聯(lián)網應用架構給出加密模型,從理論和實驗兩方面驗證LCHAOSAES算法的可行性,為今后窄帶物聯(lián)網應用安全的研究提供思路。
AES是美國政府采用的對稱密鑰分組加密算法,它能抵抗除了暴力攻擊以外的所有已知類型的攻擊。該算法靈活,數(shù)據塊和密鑰長度可以是128、192和256位,對應著的加密輪數(shù)Nr分別是10、12和14。由于窄帶物聯(lián)網終端感知節(jié)點的資源有限,因此本文對占用資源較低的數(shù)據塊長度為128位的AES_128進行改進。圖1描述了AES_128加密實現(xiàn)過程,圖中Nr[i](0≤i≤10)表示第i輪運算,Key為種子密鑰,K[i](0≤i≤10)表示第i輪密鑰。AES_128每個數(shù)據塊和密鑰長度均為16個字節(jié),加密過程由4個基本輪函數(shù)組成:SubBytes,ShiftRows,MixCo-lumns和AddRoundkey。

圖1 經典AES_128加密實現(xiàn)過程
SubBytes是一個非線性函數(shù),具有混淆字節(jié)的作用,可用S盒查表法提高運算速度;ShiftRows是一個線性函數(shù),使得每行字節(jié)的順序發(fā)生變化;MixColumns是將每個字節(jié)利用GF(28)域上算術特性進行一個替換;Add-RoundKey是一個簡單的XOR操作,它的輪密鑰由種子密鑰計算得出。
混沌加密因其具有速度快、簡單、實時性高等特點被廣泛應用于信息加密領域,其利用混沌系統(tǒng)產生的混沌序列具有隨機性、非周期性、易于交叉和對初始狀態(tài)極易敏感等特點。本文使用的混沌系統(tǒng)性是:Logistic映射和Tent映射。
一維Logistic映射的非線性方程如下表示
yn+1=λyn+1(1-yn)
(1)
在Logistic映射中,當形態(tài)參數(shù)λ=4時,Logistic映射對迭代的初值異常敏感,此時被稱為滿映射混沌狀態(tài)。Logistic映射生成的混沌序列與噪聲相似,序列的混沌狀態(tài)高度依賴于映射的初始值y0和形態(tài)參數(shù)λ。因此,在一個Logistic映射中即使y0或λ發(fā)生了極微小的變化,Logistic映射也可經過較少次數(shù)的迭代生成完全不同的混沌序列。
Tent映射是一種分段線性映射,其方程如下
(2)
Tent映射可以通過確定形態(tài)參數(shù)μ的值,利用初始值x0迭代得出一個具體的數(shù)值混沌序列。當μ∈(1.4,2)且μ趨近于2時,Tent映射產生的混沌序列的隨機性較好。
為了解決現(xiàn)有基于AES的加密算法無法在提高運行效率的同時保證算法的安全性的問題,本文分別從簡化AES以降低復雜度和構建混沌密鑰生成系統(tǒng)以提高算法安全性兩方面入手對AES進行改進,繼而提出了一種基于AES與混沌序列的輕量級加密算法——LCHAOSAES。本節(jié)主要對明文塊長度為128位的AES_128進行改進。
2.1.1 精簡加密輪數(shù)
張堯等[9]通過實驗證明將AES_128加密算法的加密輪數(shù)設置為6輪即可抵抗已知的捷徑攻擊,為了進一步確保算法的安全性,將加密輪數(shù)設置為7輪。然而,本文從最大程度簡化AES_128加密算法的角度出發(fā),將加密輪數(shù)設置為6輪,即LCHAOSAES的加密輪數(shù)為6。
2.1.2 優(yōu)化輪函數(shù)
MixColumns操作涉及有限域GF(28)上的乘法運算,會為NB-IoT終端感知節(jié)點帶來大量的計算負擔。因此,在設計LCHAOSAES時,本文省略1至5輪中的ShiftRows操作,采用查表法代替SubBytes和MixColumns提高算法的運行效率,查表法依然可以用SubBytes操作實現(xiàn)。
令SubBytes輸入為矩陣A,操作用函數(shù)S(A)表示,其輸出結果為矩陣B;MixColumns將矩陣B作為輸入,其輸出結果為矩陣C。為整合SubBytes和MixColumns而設計快速替換表的過程如下:
對于矩陣B可表示為
Bij=S(Aij), (0≤i,j≤3)
(3)
矩陣C可表示為

(4)
由式(3)和式(4)可得

(5)
由式(5)可以看出,SubBytes和MixColumns實際上是對01×S(A)、02×S(A)和03×S(A)(×代表有限域GF(28)上的乘法)3種數(shù)據進行操作。S(A)表示利用表S(S盒)進行SubBytes操作,而表2S和3S可由表S獲得,因此預存S、2S和3S這3張表就可以用查表法代替大量的乘法運算來降低算法的復雜度。LCHAOSAES加密過程如圖2所示,圖中Nr[i](0≤i≤6)表示第i輪運算,Key為種子密鑰,K[i](0≤i≤6)表示第i輪密鑰。

圖2 LCHAOSAES加密過程
一維Logistic映射在初值敏感性、非周期性和偽隨機性方面具有良好表現(xiàn)。LCHAOSAES算法通過構建Logistic和Tent混沌密鑰生成系統(tǒng)生成隨機性較高的混沌序列,并利用該序列為每個AES_128明文分組生成不同的種子密鑰。這樣,所有明文分組的種子密鑰各不相同,從而構成“一次一密”的加密系統(tǒng)。
LCHAOSAES在加解密兩端以相同的參數(shù)構建完全一致的混沌系統(tǒng),通過多次迭代產生動態(tài)的種子密鑰,并利用此密鑰加解密。圖3描述了LCHAOSAES算法構建混沌密鑰生成系統(tǒng)的過程。具體描述如下:

圖3 LCHAOSAES算法構建混沌密鑰生成系統(tǒng)的過程
(1)利用初始化參數(shù)構建混沌系統(tǒng)
通過對稱密鑰加密體制傳遞密鑰,發(fā)送方和接收方的密鑰包含:Logistic映射λ和初始值y0,Tent映射的控制參數(shù)μ和x0,基本迭代次數(shù)N。目的是使得發(fā)送方和接收方可以利用λ、μ、y0,x0和N構建相同的混沌系統(tǒng)。
(2)將明文分組
將明文以16字節(jié)為單位長度進行分組并根據待加密明文的長度length計算明文的分塊參數(shù)m和n。m表示明文分塊的組數(shù),m=length/16;n表示明文分塊后剩余的字節(jié)數(shù),n=length%16。Logistic和Tent的迭代次數(shù)分別由m和n控制,也使得該密鑰生成系統(tǒng)與明文長度緊密聯(lián)系。
(3)產生混沌序列與合成種子密鑰
為了使混沌序列充分離散化,本文分別將Logistic映射迭代N+m次、Tent映射迭代N+n次,而后每加密一個數(shù)據塊都將Logistic和Tent每個映射再連續(xù)迭代8次以分別獲得8個混沌實數(shù)。將每個實數(shù)小數(shù)部分的前4位數(shù)組成整數(shù)并對256取模,取模后的兩組數(shù)交叉組合,最后形成的16個字節(jié)的實數(shù)便是LCHAOSAES數(shù)據塊的種子密鑰,即每個明文塊的種子密鑰各不相同。
(4)動態(tài)加密和尾端處理
對明文加密時,利用步驟(3)產生的種子密鑰對m個明文塊逐塊加密以得到相應的m個密文塊;利用步驟(3)產生的種子密鑰的前n個字節(jié)與剩余的n個字節(jié)的明文塊異或即可得到n個字節(jié)的尾密文。這種尾端處理機制能極大地減小計算量。
按照以上步驟對明文加密后,依次將密文塊與尾密文合并以得到與明文長度相等的密文,如圖4所示。
從技術科學角度分析,窄帶物聯(lián)網應用架構可以抽象為NB-IoT終端(ultimate-equipment,UE)、NB-IoT信息郵局(information post office,MPO)、NB-IoT人機交互系統(tǒng)(human-computer interaction system,HCI)3個組成部分, 如圖5所示。 UE是以MCU為核心, 具有NB-IoT通信、數(shù)據采集、控制、運算等功能的軟硬件實體。如燃氣表、水表等。MPO是一種基于NB-IoT協(xié)議的信息傳送系統(tǒng),是NB-IoT基站(eNodeB),核心網(core network)和設備管理平臺(device management server)的總稱,是UE與HCI信息交互的媒介。HCI是實現(xiàn)具體應用功能的軟硬件系統(tǒng), 使人們能夠利用通用計算機(PC)、 平板電腦、 手機等設備實現(xiàn)對例如智能家居、物流等控制的功能。圖5中數(shù)據傳輸過程(1)和(2)表示上行數(shù)據傳輸過程,(3)和(4)代表下行數(shù)據傳輸過程,其中過程(1)和(3)使用的是NB-IoT通信技術。

圖4 基于混沌序列的加密過程
從應用開發(fā)的角度來看,開發(fā)者只需要對UE和HCI端的軟硬件進行設計。而對于數(shù)據是如何在MPO內部傳輸?shù)倪@個問題將由運營商解決。所以開發(fā)者在進行軟件設計時應著重考慮UE、以及HCI的軟硬件環(huán)境及資源。
在圖5的窄帶物聯(lián)網應用架構中,數(shù)據被竊取可能發(fā)生在任意一個網絡通信過程中,例如過程(1)、(2)(3)、(4)以及MPO內部。
每個UE都有唯一一個國際移動設備身份碼IMEI(international mobile equipment identity),是15位數(shù)字組成的“電子串號”。每一個UE的通信模組都將擁有一個全球唯一的IMEI。本文利用IMEI為每一個UE的加密密鑰生成固定的基本迭代次數(shù)N以降低密鑰管理的難度。綜合窄帶物聯(lián)網應用架構以及每個UE的IMEI號本文提出了應用環(huán)境下的加密模型,如圖6所示。

圖5 窄帶物聯(lián)網應用架構

圖6 窄帶物聯(lián)網加密模型
當UE要發(fā)送數(shù)據到HCI時,首先獲取IMEI號的后三位數(shù)記為number,其次根據number的值設置LCHAOSAES算法的基本迭代次數(shù):若number<100,則N=100;否則,N=number。在確定密鑰信息后,UE和HCI共享同一密鑰。UE利用LCHAOSAES對數(shù)據加密產生的密文,經由MPO轉發(fā)發(fā)送至HCI,HCI收到密文后用密鑰對密文解密以得到明文。
本文在這一部分將通過分析密鑰空間和敏感性來驗證LCHAOSAES的安全性,并將結果與AES_128和LAES[9]的安全性進行對比。接下來本文將統(tǒng)計3種算法加密同一個明文所用的時間,并將統(tǒng)計結果進行對比,算法花費的時間越少效率越高。
本文實驗環(huán)境有兩個:一是在64位PC機(主頻為3.20 GHz)上運行的VS2012平臺VC++編譯器,PC機操作系統(tǒng)為Windows10,在該環(huán)境下本文進行密鑰敏感性驗證和算法性能實驗;二是本文提出的窄帶物聯(lián)網加密模型的UE,UE主控芯片的型號是MKL36Z64VLH4,時鐘頻率為48 MHz,F(xiàn)lash大小為64 KB。UE使用的通信模組是華為推出的Quectel BC95,它為NB-IoT通信提供了一系列的AT命令集,UE可通過這些指令與MPO通信,也可以獲取模組的IMEI號,UE的硬件結構如圖7所示。本文將在窄帶物聯(lián)網的加密模型上對LCHAOSAES、AES_128以及LAES進行效率測試。

圖7 UE硬件實物圖
4.2.1 密鑰空間
密鑰空間的大小影響著加密算法抵抗窮盡密鑰搜索攻擊的能力。LCHAOSAES的種子密鑰由多個參數(shù)控制,分別是Logistic映射的控制參數(shù)λ和初始值y0,Tent映射的控制參數(shù)μ和初始值x0,以及基本迭代次數(shù)N。double類型的數(shù)據可以得到小數(shù)點后15位有效數(shù)字[12],那么各參數(shù)的空間大小見表1。

表1 各參數(shù)空間大小
LCHAOSAES密鑰空間大小為
RLCHAOSAES=Rλ×Ry0×Rμ×Rx0×RN≈2.32×1062
(6)
理論上AES_128和LAES算法密鑰空間大小是2128≈3.40×1038。因此,LCHAOSAES密鑰空間的大小遠遠大于AES_128和LAES。并且LCHAOSAES的迭代次數(shù)取決于UE模塊的IMEI和明文長度,因此其密鑰空間具有不確定性,這進一步增加了破解密文信息的難度。
4.2.2 密鑰敏感性
密鑰敏感性是衡量加密算法安全性常用的方法之一[13],即密鑰要滿足雪崩準則,當密鑰發(fā)生細微變化后,密文中有大約一半的比特發(fā)生變化。為了驗證LCHAOSAES、AES_128以及LAES密鑰的敏感性,本文分別進行了兩個實驗:第一個實驗檢測3種加密算法對同一明文加密后得到密文的比特變化率,明文長度為1000字節(jié),進行40次實驗取得的平均結果如圖8所示;第二個實驗檢測密鑰發(fā)生微小變化后的密文比特變化率,進行40次實驗取得的平均結果如圖9所示。

圖8 加密后的密文比特率變化

圖9 密鑰發(fā)生變化后的密文比特率變化
分析圖8和圖9的結果可知,兩個實驗的密文比特的變化率最高的都是LCHAOSAES,其次是AES_128。因此LCHAOSAES在雪崩性分析中表現(xiàn)得更好。在進行圖9的實驗時,密鑰僅發(fā)生了10-8的微小變化,而LCHAOSAES密文的比特變化率卻達到了51.1%,說明密鑰雪崩現(xiàn)象明顯,從而驗證了LCHAOSAES密鑰的敏感性優(yōu)于AES_128和LAES,即安全性高于AES_128和LAES。
軟件性能即是評估算法在各個平臺上的運行效率。本文利用C語言分別實現(xiàn)LCHAOSAES、AES_128和LAES。在64位PC端(主頻為3.20 GHz)上對1000個字節(jié)的.txt文本數(shù)據進行50次加密實驗并記錄每次加密所花費的時間。每種算法經過50次加密求得的平均時間見表2。
從表2中可知,AES_128在加密時花費的時間最多,而LAES的時間最少。由于LCHAOSAES在輕量化的同時要提高安全性,所以其加密速度略低于LAES是不可避免的,但是總體來說它比AES_128效率還要高出35%。

表2 各算法加密明文花費的平均時間/ms
本文將上述3種算法移植到NB-IoT加密模型的UE芯片中。UE主芯片(MKL36Z64VLH4)的時鐘頻率為48 MHz,F(xiàn)lash大小為64 KB。各算法對不同長度明文加密所花費的平均時間如圖10所示。

圖10 加密不同長度數(shù)據所花費的平均時間
從圖10可以看出,LCHAOSAES加密時花費的時間明顯少于AES_128,但是略高于LAES。隨著明文長度的增加,3種算法加密時間也逐漸增多。其中,AES_128增加的速度最快,而LCHAOSAES和LAES時間增長幅度較小。雖然LCHAOSAES的效率略低于LAES,但從表2可以得出它比AES_128高出35%的結論,所以LCHAOSAES是輕量級的加密算法。
為了解決窄帶物聯(lián)網面臨的數(shù)據安全問題,而現(xiàn)有基于AES的加密算法無法滿足窄帶物聯(lián)網的特性,本文提出了基于AES與混沌序列的輕量級加密算法,并根據NB-IoT應用架構提出了加密模型。本文通過減少AES_128的加密輪數(shù)以及合并輪函數(shù)來提高算法運行效率;此外,使用Logistic和Tent映射構建混沌密鑰生成系統(tǒng)為每個明文塊加密提供不同的種子密鑰以提高算法的安全性和確保密文的長度與明文相同;通過在加密模型上對LCHAOSAES進行理論分析和實驗可知,LCHAOSAES的安全性明顯高于AES_128和LAES,運行效率略比AES_128高出35%。因此,LCHAOSAES具有高效率和高安全性的特點可被用作窄帶物聯(lián)網終端節(jié)點的數(shù)據加密算法。同時,其在加密模型上的良好表現(xiàn)進一步驗證了它的可用性。
此外,為提高LCHAOSAES的運行效率而設計的字節(jié)替換表將占用1792字節(jié)的內存。雖然目前的MCU處理器足以容納1792個字節(jié),但本文工作者計劃在未來的工作中解決這個問題。