張馨方,周江華
(1.中國(guó)科學(xué)院 空天信息創(chuàng)新研究院,北京 100094;2.中國(guó)科學(xué)院大學(xué) 航空宇航學(xué)院,北京 100094)
近年來,在大氣環(huán)境實(shí)時(shí)監(jiān)測(cè)、自然災(zāi)害監(jiān)視和區(qū)域偵察監(jiān)視等方面,距地面18~35km 高的平流層浮空器得到了廣泛的應(yīng)用[1-2]。國(guó)內(nèi)外在長(zhǎng)航時(shí)平流層浮空器方面取得較大突破,谷歌公司的Loon 氣球最大飛行航時(shí)已超過300天[3]。平流層浮空器在遠(yuǎn)離本土執(zhí)行長(zhǎng)航時(shí)任務(wù)時(shí),其數(shù)據(jù)安全傳輸問題也隨之顯現(xiàn)。一方面,常規(guī)的浮空器平臺(tái)的數(shù)據(jù)傳輸方式為明文無線傳輸,安全性較更低[4],若其敏感數(shù)據(jù)被泄露將會(huì)留下嚴(yán)重的安全隱患。另一方面,平流層浮空器平臺(tái)的處理器大多采用微型嵌入式系統(tǒng),由于微型嵌入式系統(tǒng)計(jì)算能力弱且資源性能有限[5],使其所需的安全技術(shù)方法也更苛刻。因此,需要一種不但能夠?qū)崿F(xiàn)平臺(tái)數(shù)據(jù)安全傳輸,而且速度快、效率高且實(shí)時(shí)性強(qiáng)的數(shù)據(jù)傳輸方法。
加密算法是目前實(shí)現(xiàn)數(shù)據(jù)安全傳輸主流的技術(shù)之一,根據(jù)算法使用密鑰的不同,通常將加密算法分為對(duì)稱加密算法和非對(duì)稱加密算法[6]。與非對(duì)稱加密算法相比,對(duì)稱加密算法運(yùn)算量更小、性能更強(qiáng)且加密速度更快。AES(高級(jí)加密標(biāo)準(zhǔn))是目前世界上最常見且使用最廣泛的對(duì)稱分組密碼算法之一[7],經(jīng)過AES加密算法處理后的數(shù)據(jù)保留了明文的數(shù)據(jù)格式,其數(shù)據(jù)長(zhǎng)度也不會(huì)發(fā)生改變,更不會(huì)破壞浮空器平臺(tái)數(shù)據(jù)的傳輸結(jié)構(gòu),在通信容量有限的系統(tǒng)中具有不可替代的優(yōu)勢(shì)。
AES加密算法是一類安全性能強(qiáng)、移植操作簡(jiǎn)單并且應(yīng)用前景廣闊的加密方法,因此,對(duì)該算法的研究與改進(jìn)是近年來的研究熱點(diǎn)之一。N.Gangurde[8]等人將AES加密算法與QR 碼結(jié)合,設(shè)計(jì)了一套安全可靠的票務(wù)系統(tǒng),防止了用戶隱私的泄露;Y.W.Ke[9]等人提出了一種基于時(shí)間自動(dòng)機(jī)的嵌入式實(shí)時(shí)操作系統(tǒng)中密碼可行性的定量判斷方法,驗(yàn)證了AES加密算法運(yùn)行在嵌入式實(shí)時(shí)操作系統(tǒng)上的可行性;M.Gupta[10]等人提出通過將算法中的S盒拆分為上下兩部分,利用多線程任務(wù)并行在雙S 盒中查找代換字節(jié),但由于引入了雙S盒,該方法在提高運(yùn)行速度的同時(shí)擴(kuò)大了對(duì)處理器的內(nèi)存占用;Z.Rahman[11]等人提出了一種基于混沌映射和三維S盒的密鑰輪換技術(shù)來提高AES加密算法的安全性,確保物聯(lián)網(wǎng)下智能家居數(shù)據(jù)傳輸系統(tǒng)的可靠性,但是提高算法安全性的同時(shí)由于添加了新的算法并且提高了S盒維度,使得算法計(jì)算量增大且運(yùn)行時(shí)間增長(zhǎng)。
綜上所述,AES加密算法在不同領(lǐng)域得到了廣泛應(yīng)用,然而,若直接將該算法應(yīng)用到浮空器平臺(tái)這一微型嵌入式系統(tǒng)時(shí),受到嵌入式系統(tǒng)處理器計(jì)算速度和性能資源的限制,將會(huì)導(dǎo)致算法運(yùn)行速度降低。為了保障浮空器飛行時(shí)敏感數(shù)據(jù)得到安全高效傳輸,本文對(duì)AES加密算法進(jìn)行改進(jìn)與優(yōu)化,提出了基于輕量型AES加密算法的浮空器平臺(tái)數(shù)據(jù)傳輸方案,通過減少輪函數(shù)的循環(huán)次數(shù)和將行移位變換改為列移位變換以實(shí)現(xiàn)輕量型AES加密算法,減少數(shù)據(jù)加解密過程中消耗的時(shí)間。經(jīng)過實(shí)驗(yàn)驗(yàn)證,該方案在保證盡可能高的算法安全性的同時(shí)提高了數(shù)據(jù)加解密速度。
平流層浮空器平臺(tái)的數(shù)據(jù)傳輸系統(tǒng)以無線傳輸方式作為其通信媒介,實(shí)現(xiàn)浮空器平臺(tái)與地面監(jiān)控中心的點(diǎn)對(duì)點(diǎn)雙向通信,傳輸模型如圖1所示。其中,浮空器作為被監(jiān)控對(duì)象,由處理器與各類傳感器節(jié)點(diǎn)和執(zhí)行機(jī)構(gòu)節(jié)點(diǎn)共同組成平臺(tái)嵌入式系統(tǒng),完成平臺(tái)下行數(shù)據(jù)的采集與處理;地面監(jiān)控中心由地面上位機(jī)軟件組成,負(fù)責(zé)指令的發(fā)送以及實(shí)時(shí)顯示各類飛行數(shù)據(jù),完成人機(jī)交互;無線傳輸模塊由浮空器平臺(tái)傳輸終端和地面?zhèn)鬏斀K端兩部分組成,二者通過特定的ID進(jìn)行身份識(shí)別,完成平臺(tái)與地面之間的數(shù)據(jù)傳輸。
圖1 浮空器平臺(tái)數(shù)據(jù)傳輸模型
本文提出的數(shù)據(jù)傳輸方案通過在平臺(tái)嵌入式系統(tǒng)和上位機(jī)軟件中內(nèi)置輕量型AES加密算法,實(shí)現(xiàn)平臺(tái)下行數(shù)據(jù)和上行指令的加密和解密。以保證即使關(guān)鍵數(shù)據(jù)在遠(yuǎn)距離無線傳輸過程中被惡意截取,對(duì)方在沒有密鑰的情況下也難以破解密文獲取到有用的信息,從而實(shí)現(xiàn)浮空器平臺(tái)的安全性,方案整體設(shè)計(jì)如圖2所示。
圖2 方案整體設(shè)計(jì)圖
一方面,對(duì)于浮空器下行數(shù)據(jù)而言:首先,平臺(tái)在自身嵌入式系統(tǒng)中內(nèi)置輕量型AES加密模塊,對(duì)采集到的各項(xiàng)下行數(shù)據(jù)進(jìn)行加密處理,通過串口傳輸將密文數(shù)據(jù)發(fā)送到平臺(tái)傳輸終端;其次,平臺(tái)傳輸終端按照既定的通信協(xié)議將密文數(shù)據(jù)進(jìn)行打包發(fā)送到地面?zhèn)鬏斀K端;最后,地面?zhèn)鬏斀K端通過串口將接收到的密文發(fā)送到上位機(jī)軟件,利用上位機(jī)軟件內(nèi)置的輕量型AES加密算法完成數(shù)據(jù)解密處理,并實(shí)現(xiàn)各項(xiàng)下行數(shù)據(jù)的實(shí)時(shí)顯示以及在線監(jiān)測(cè)平臺(tái)狀態(tài)等功能。
另一方面,對(duì)于地面監(jiān)控中心上行指令而言:首先,通過上位機(jī)軟件內(nèi)置的輕量型AES模塊對(duì)上行指令進(jìn)行加密處理,并以密文形式傳輸至地面無線傳輸終端;其次,地面無線傳輸終端按照既定的通信協(xié)議將密文指令進(jìn)行打包發(fā)送到平臺(tái)無線傳輸終端;最后,平臺(tái)無線傳輸終端通過串口將密文指令發(fā)送到平臺(tái)處理器,處理器根據(jù)內(nèi)置的輕量型AES加密算法解密出原有指令內(nèi)容,并實(shí)施相應(yīng)動(dòng)作,從而實(shí)現(xiàn)地面遠(yuǎn)距離對(duì)高空平臺(tái)的控制。
2.1.1 原理介紹
高級(jí)加密標(biāo)準(zhǔn)(AES,advanced encryption standard)由美國(guó)國(guó)家標(biāo)準(zhǔn)與技術(shù)研究院在2001年發(fā)布,是目前對(duì)稱加密算法中研究熱點(diǎn)之一。AES加密算法采用分組加密的方式,分組長(zhǎng)度固定為128位,即16字節(jié)[12-13]。算法通常有3種密鑰長(zhǎng)度,即128比特、192比特和256比特,不同的密鑰長(zhǎng)度對(duì)應(yīng)不同的加密輪數(shù),如表1所示。
表1 AES加密算法參數(shù)
AES加密算法利用混淆和代換的工作原理,將明文數(shù)據(jù)元素代換成為另一個(gè)不相關(guān)的元素,并對(duì)明文數(shù)據(jù)元素進(jìn)行重新排列和組合,從而生成密文。以AES-128加密算法為例:首先,在初始階段利用混淆的原理,對(duì)128位初始密鑰經(jīng)過十輪密鑰擴(kuò)展操作以生成后續(xù)需要的輪密鑰;其次,進(jìn)行十輪算法迭代,前九輪的迭代依次按照字節(jié)代換、行移位、列混淆以及輪密鑰加操作進(jìn)行,第十的輪迭代只進(jìn)行字節(jié)代換、行移位以及輪密鑰加操作,不進(jìn)行列混合操作;最后,輸出大小同樣為128位的密文。算法在每輪迭代過程中進(jìn)行的4個(gè)可逆變換統(tǒng)稱為輪函數(shù),它是AES加密算法實(shí)現(xiàn)高安全度的核心部分。
本文提出的輕量型AES加密算法在AES-128算法的基礎(chǔ)上做出改進(jìn)。在保證算法安全性的前提下,通過尋找輪函數(shù)循環(huán)的局部最優(yōu)次數(shù)和將狀態(tài)矩陣行移位變換改為列移位變換,即通過輪函數(shù)優(yōu)化和行移位優(yōu)化兩個(gè)操作對(duì)AES加密算法進(jìn)行改進(jìn),從而在保證算法安全性的同時(shí)提高算法加解密速度。
2.1.2 輪函數(shù)優(yōu)化
輪函數(shù)迭代是保證加密算法安全性最重要的步驟,隨著輪函數(shù)循環(huán)次數(shù)的增加,算法抵御網(wǎng)絡(luò)攻擊的能力也隨之增強(qiáng)[14]。然而,隨著輪函數(shù)循環(huán)次數(shù)增加的同時(shí),算法的計(jì)算量也會(huì)隨之變大,從而導(dǎo)致算法的運(yùn)行速度降低。因此,輕量型AES加密算法旨在尋找既能夠最大限度保證算法安全性,又可以提升算法運(yùn)行速度的輪函數(shù)循環(huán)的局部最優(yōu)次數(shù),以達(dá)到平衡算法的安全性與運(yùn)行速度的目的。
輪密鑰擴(kuò)展的發(fā)散程度對(duì)選取可行的輪函數(shù)循環(huán)次數(shù)具有一定的參考意義[15]。根據(jù)AES 加密算法的原理可知每輪密鑰擴(kuò)展后的比特差(bit difference,不同數(shù)據(jù)相同位相異的總和)越大,安全性越高。為了進(jìn)一步明確輪函數(shù)循環(huán)的局部最優(yōu)次數(shù),該實(shí)驗(yàn)利用線性同余法隨機(jī)生成了100個(gè)初始密鑰及100個(gè)與初始密鑰相差一位比特的對(duì)比密鑰,共同構(gòu)成100組密鑰對(duì);通過計(jì)算100組密鑰對(duì)經(jīng)過十輪密鑰擴(kuò)展后每輪比特差的變化情況,以選取輪函數(shù)循環(huán)的局部最優(yōu)次數(shù)具體流程如圖3所示。
圖3 輪函數(shù)優(yōu)化流程
1)構(gòu)建初始密鑰矩陣:利用線性同余法隨機(jī)生成100×16的二維初始密鑰矩陣A,記作A=[100][16],矩陣的各行代表初始密鑰,各列代表密鑰中的各個(gè)元素。線性同余方法是目前應(yīng)用廣泛的偽隨機(jī)數(shù)生成算法之一[16]。一般形式為:對(duì)任意初始值X0,滿足0≤X0<M,隨機(jī)數(shù)序列由如下遞推公式(1)確定:
式中,M為模數(shù)并且M>0;A為乘子且0<A<M;C為增量且0≤C<M。取M=232,A=2 140 13,C=2 531 011,X0取系統(tǒng)當(dāng)前時(shí)間值。
2)生成對(duì)比密鑰矩陣:通過判斷初始密鑰矩陣A中某列元素的奇偶性,若該元素為偶數(shù),對(duì)其進(jìn)行加一操作;反之,對(duì)其進(jìn)行減一操作,以確定與初始密鑰相差一位比特的二維對(duì)比密鑰矩陣B,記作B=[100][16]。
3)執(zhí)行密鑰擴(kuò)展:對(duì)初始密鑰矩陣A和對(duì)比密鑰矩陣B分別進(jìn)行十輪密鑰擴(kuò)展,并將結(jié)果存儲(chǔ)在四維矩陣W[100][11][4][4]和V[100][11][4][4]之中。密鑰擴(kuò)展將128位的原密鑰轉(zhuǎn)換為4*4矩陣形式,并將矩陣中的列向量存儲(chǔ)在W[0]-W[3]中;基于W[0]-W[3]通過公式(2)和(3)依次求解出W[j],生成十個(gè)子密鑰。
公式(3)中引入的G函數(shù)對(duì)列向量W重新排列后執(zhí)行S盒代換,并用第一個(gè)字節(jié)與輪系數(shù)進(jìn)行異或運(yùn)算,生成新的列向量W’。一方面可以增強(qiáng)擴(kuò)展密鑰的非線性,提高密鑰安全性;另一方面,可以消除算法中的對(duì)稱性,使得密文數(shù)據(jù)更不容易被破解。
4)計(jì)算比特差:首先,將W和V矩陣中對(duì)應(yīng)元素進(jìn)行異或得到矩陣CMP[100][11][4][4],該步驟的目的是得到兩個(gè)矩陣中每個(gè)對(duì)應(yīng)元素之間相差的比特?cái)?shù);其次,統(tǒng)計(jì)CMP[100][11][4][4]各個(gè)元素中為“1”的位數(shù)得到矩陣COUNT[100][11][4][4],即W和V矩陣中對(duì)應(yīng)元素的比特差;最后,通過對(duì)四維矩陣COUNT[100][11][4][4]進(jìn)行降維操作,最終得到SUM2[100][11]矩陣,該矩陣行值代表100組密鑰,列值代表每組密鑰經(jīng)過密鑰擴(kuò)展后的比特差。
5)統(tǒng)計(jì)頻次:得到的二維矩陣SUM2[100][11]后,找到矩陣每行元素中的最大值及其所在列數(shù),即可得到100組密鑰經(jīng)過密鑰擴(kuò)展后各輪的比特差峰值情況。
為了選取更多的實(shí)驗(yàn)樣本,該實(shí)驗(yàn)將上述步驟重復(fù)進(jìn)行10次,即通過總計(jì)1 000組密鑰經(jīng)過各輪密鑰擴(kuò)展后比特差的變化情況以確定輪函數(shù)循環(huán)的局部最優(yōu)次數(shù),最終實(shí)驗(yàn)結(jié)果如圖4所示。
圖4 各輪密鑰擴(kuò)展后比特差峰值圖
從圖4中可知,1 000組密鑰在最初只相差一位比特差的情況下,在第四輪密鑰擴(kuò)展后開始出現(xiàn)比特差峰值,即此時(shí)密鑰的混淆程度最大,說明經(jīng)過前三輪密鑰擴(kuò)展后密鑰各位已基本得到完全擴(kuò)散;從第五輪密鑰擴(kuò)散之后,各輪的比特差峰值次數(shù)基本維持在200次左右,并且在第五輪密鑰擴(kuò)展后比特差峰值次數(shù)達(dá)到最大,占整體試驗(yàn)次數(shù)的20.3%,并在第七輪密鑰擴(kuò)展后比特差峰值次數(shù)達(dá)到了第二次小高峰,占整體實(shí)驗(yàn)次數(shù)的17.3%。
J.Daemen[17]指出可以從加密算法抗擊捷徑攻擊的能力出發(fā)考慮算法的輪函數(shù)的循環(huán)次數(shù),并且證實(shí)對(duì)于AES-128加密算法而言,目前尚未發(fā)現(xiàn)能夠?qū)哂休喓瘮?shù)循環(huán)六次以上的簡(jiǎn)化版本實(shí)施的捷徑攻擊方法。綜上分析,本文將該理論研究與實(shí)驗(yàn)結(jié)果相結(jié)合,選取前七輪作為輕量型AES加密算法的輪函數(shù)循環(huán)的局部最優(yōu)次數(shù)。
2.1.3 行移位優(yōu)化
輕量型AES加密算法將AES加密算法中的行移位變換改為列移位變換,其執(zhí)行方式與行移位基本相同,目的在于打破AES加密算法常規(guī)的執(zhí)行方式以優(yōu)化算法結(jié)構(gòu)并提升算法安全性,從而使密文數(shù)據(jù)更難被破解。列移位變換是一種線性變換,通過公式(4)有規(guī)則地對(duì)狀態(tài)矩陣進(jìn)行字節(jié)移動(dòng)實(shí)現(xiàn):
式中,Nb取4。狀態(tài)矩陣由4*4個(gè)字節(jié)構(gòu)成,在加密過程中,保持矩陣的第一列不變,將第二行向下移動(dòng)一個(gè)字節(jié)、第三行向下移動(dòng)二個(gè)字節(jié)、第四行向上移動(dòng)一個(gè)字節(jié),如圖3所示。列移位處理后,得到的狀態(tài)矩陣如圖5所示。
圖5 狀態(tài)矩陣圖
解密時(shí):保持矩陣的第一列不變,第二行向上移動(dòng)一個(gè)字節(jié)、第三行向上移動(dòng)二個(gè)字節(jié)、第四行向下移動(dòng)一個(gè)字節(jié),如5五所示。列移位處理后,得到的狀態(tài)矩陣如圖6所示。
圖6 狀態(tài)矩陣圖
輕量型AES 加密算法在AES-128 算法的基礎(chǔ)上,對(duì)AES-128的處理速度和效率進(jìn)行優(yōu)化提高。該算法采用7次輪函數(shù)循環(huán),除最后一輪外,前六輪次都包含字節(jié)代換(SubByte)、列位移變換(ColumnRow)、列混合(MixColumn)、輪密鑰加(AddRoundKey)4個(gè)處理步驟,另外,最后一輪不包含列混合操作,算法具體實(shí)現(xiàn)流程如圖7所示。
圖7 輕量型AES加密算法流程圖
2.2.1 字節(jié)代換
字節(jié)代換作為輕量型AES加密算法的第一步,是整個(gè)算法中唯一的非線性變換,關(guān)鍵在于S盒的構(gòu)造。S盒是一個(gè)具有很強(qiáng)代數(shù)結(jié)構(gòu)的16×16矩陣[19,18],設(shè)計(jì)中包含3個(gè)步驟:首先,初始化矩陣的第一行是 {00},{01}…{0F},第二行是{10},{11}… {1F},其次,將矩陣中每個(gè)元素的值代換為其在有限域GF(28)上的逆乘法;最后,利用公式(5)對(duì)每個(gè)元素執(zhí)行仿射變換:
在加密過程中,字節(jié)代換是將狀態(tài)矩陣中的每個(gè)字節(jié)代換為S盒矩陣中的另一個(gè)字節(jié)。取狀態(tài)矩陣中每個(gè)字節(jié)的高四位作為S盒行值,低四位作為S盒列值,根據(jù)行值和列值確定該字節(jié)所對(duì)應(yīng)的S盒中的字節(jié),并用S盒中該位置的字節(jié)代換狀態(tài)矩陣中的元素,作為新的字節(jié)輸出;在解密過程中,字節(jié)代換的逆運(yùn)算為逆字節(jié)代換。逆S盒的生成與S盒生成步驟相反,初始化S盒進(jìn)行逆仿射變換后,對(duì)每個(gè)字節(jié)在有限域上取乘法逆運(yùn)算,完成逆字節(jié)代換步驟并輸出結(jié)果。
2.2.2 列移位
列移位操作是對(duì)狀態(tài)矩陣中各個(gè)元素進(jìn)行重新排列以打破原狀態(tài)矩陣中的元素之間的統(tǒng)計(jì)關(guān)系。列移位是整個(gè)輕量型AES加密算法中獨(dú)具特色的操作,利用列移位變換來代替原AES加密算法中的行移位變化,使得黑客攻擊難以預(yù)測(cè)算法正在執(zhí)行的操作方式。列移位變換的執(zhí)行方式與行移位相同,并在此基礎(chǔ)上做了一些改進(jìn),具體操作與2.1.2行移位優(yōu)化章節(jié)一致。
2.2.3 列混合
列混合變換是數(shù)據(jù)混淆的關(guān)鍵步驟,該步驟將列移位后的狀態(tài)矩陣與常數(shù)矩陣相乘,得到混淆后新的狀態(tài)矩陣,運(yùn)算過程如公式(6)所示:
在具體計(jì)算中,列混合變換可視為將原狀態(tài)矩陣中的每一列與常數(shù)矩陣相乘,得到與原狀態(tài)矩陣對(duì)應(yīng)的新狀態(tài)矩陣,即將原狀態(tài)矩陣中每列所有元素的加權(quán)和賦值給新狀態(tài)矩陣中對(duì)應(yīng)的元素,從而輸入的每個(gè)字節(jié)都會(huì)影響到輸出的4個(gè)字節(jié),第j(0≤j<3)列可表示為:
列混合變換的逆變換為列混合變換的逆。逆變換是將矩陣中的每一列與常數(shù)矩陣相乘,該常數(shù)矩陣與列混合變換中的常數(shù)矩陣互為逆矩陣,從而便可恢復(fù)出原狀態(tài)矩陣中的元素值,逆列混合變換的計(jì)算過程如公式(8)所示:
2.2.4 輪密鑰加
在輪函數(shù)轉(zhuǎn)換中,每輪將生成一個(gè)通過密鑰擴(kuò)展獲得的新密鑰。輪密鑰加是將128位新生成的輪密鑰與狀態(tài)矩陣中的數(shù)據(jù)進(jìn)行逐位異或操作,輪密鑰加操作的計(jì)算如公式(9)所示:
由于異或運(yùn)算的逆操作是其自身,因此輪密鑰加的逆運(yùn)算與輪密鑰加的運(yùn)算過程一致。
為了驗(yàn)證所提出的輕量型AES加密算法應(yīng)用于浮空器平臺(tái)數(shù)據(jù)傳輸?shù)陌踩院透咝?,?shí)驗(yàn)使用C 語(yǔ)言在KEIL5軟件中編寫AES加密算法和輕量型AES加密算法,并在主頻為168MHz、FLASH 內(nèi)存為1 M、基于Cortex-M4內(nèi)核的STM32F407處理器上實(shí)現(xiàn)算法的模擬和仿真。實(shí)驗(yàn)選取2021年浮空器平臺(tái)的飛行數(shù)據(jù)作為加密算法的明文測(cè)試數(shù)據(jù)源。首先,對(duì)輸入的浮空器平臺(tái)明文數(shù)據(jù)進(jìn)行字節(jié)填充和矩陣旋轉(zhuǎn)兩步預(yù)處理操作;其次,基于STM32嵌入式處理器利用輕量型AES加密算法對(duì)不同大小明文數(shù)據(jù)源進(jìn)行加解密實(shí)驗(yàn)并得到各個(gè)數(shù)據(jù)源的傳輸結(jié)果;最后,從算法安全性和運(yùn)行速度兩方面對(duì)AES加密算法與輕量型AES加密算法進(jìn)行對(duì)比分析。
在執(zhí)行輕量型AES加密算法之前,需對(duì)明文數(shù)據(jù)進(jìn)行預(yù)處理操作以減少明文數(shù)據(jù)之間的統(tǒng)計(jì)關(guān)系,增強(qiáng)明文數(shù)據(jù)的擴(kuò)散程度。預(yù)處理的流程包括字節(jié)填充和明文矩陣旋轉(zhuǎn)。
Step1:字節(jié)填充
字節(jié)填充是對(duì)明文數(shù)據(jù)處理的第一個(gè)步驟,填充的目的是確保明文數(shù)據(jù)為分組長(zhǎng)度16字節(jié)的整數(shù)倍,以保證明文數(shù)據(jù)可全部轉(zhuǎn)換為4*4字節(jié)的矩陣。字節(jié)填充的具體步驟如圖8所示。
圖8 字節(jié)填充流程圖
在進(jìn)行字節(jié)填充流程中,首先計(jì)算得到待處理的明文數(shù)據(jù)的長(zhǎng)度;其次,判斷明文數(shù)據(jù)長(zhǎng)度是否為16字節(jié)的整數(shù)倍,如若明文數(shù)據(jù)長(zhǎng)度不足為16字節(jié)的整數(shù)倍,則用0將數(shù)據(jù)長(zhǎng)度補(bǔ)齊為16字節(jié)整數(shù)倍;最后,輸出完成字節(jié)填充后的明文數(shù)據(jù)。
Step2:明文矩陣旋轉(zhuǎn)
預(yù)處理步驟的第二步是將完成字節(jié)填充流程后的明文數(shù)據(jù)分為若干4*4字節(jié)大小的矩陣,并依次對(duì)各個(gè)矩陣逆時(shí)針旋轉(zhuǎn)90°以進(jìn)一步增強(qiáng)明文數(shù)據(jù)內(nèi)部的混淆程度。該步驟的輸入為若干4*4字節(jié)大小的明文矩陣。矩陣旋轉(zhuǎn)是對(duì)明文數(shù)據(jù)內(nèi)部的字節(jié)進(jìn)行重新排列,不僅可以打破原有明文數(shù)據(jù)間的統(tǒng)計(jì)關(guān)系,還能夠補(bǔ)償后續(xù)在減少輪函數(shù)循環(huán)次數(shù)過程中所削弱的算法安全性。明文矩陣逆時(shí)針旋轉(zhuǎn)90°的操作如圖9所示。
圖9 逆時(shí)針旋轉(zhuǎn)操作圖
在實(shí)驗(yàn)過程中,選取10kB、20kB、30kB、40kB、50kB、60kB六種不同大小的數(shù)據(jù)源利用輕量型AES加密算法分別對(duì)各個(gè)數(shù)據(jù)源進(jìn)行十次處理后,取10次結(jié)果的平均值作為實(shí)驗(yàn)結(jié)果。具體實(shí)驗(yàn)結(jié)果詳見表2。
表2 加密算法實(shí)驗(yàn)測(cè)試結(jié)果
由表2可知,經(jīng)過輕量型AES加密算法處理后的數(shù)據(jù)與明文相比,其準(zhǔn)確率隨著明文數(shù)據(jù)源的增大逐漸減?。簩?duì)30kB以內(nèi)的小數(shù)據(jù)量明文數(shù)據(jù)源進(jìn)行傳輸時(shí)完整實(shí)現(xiàn)了加解密操作,成功保證了數(shù)據(jù)準(zhǔn)確無誤傳輸;由于受到嵌入式系統(tǒng)處理器性能的限制,在對(duì)數(shù)據(jù)量為40~60kB大小的數(shù)據(jù)源傳輸時(shí)存在誤差,數(shù)據(jù)加密完整率平均達(dá)到99%左右。綜上分析,本文提出的輕量型AES加密算法能夠保證各個(gè)大小的數(shù)據(jù)源穩(wěn)定完整傳輸,適合應(yīng)用于浮空器平臺(tái)數(shù)據(jù)傳輸。
3.3.1 統(tǒng)計(jì)分析
在明文數(shù)據(jù)源中存在的重復(fù)字節(jié)可能會(huì)泄露某些重要信息,因此密文數(shù)據(jù)必須具有均勻分布的字節(jié)以保證數(shù)據(jù)的安全性。為了測(cè)試輕量型AES加密算法的加密效果,統(tǒng)計(jì)了各個(gè)數(shù)據(jù)源在加密前后數(shù)據(jù)內(nèi)容的變化,以描述明文和密文中的字節(jié)分布情況[20],如圖10和圖11所示,圖10中明文數(shù)據(jù)的字節(jié)分布出現(xiàn)了明顯的峰值,這些峰值反映了明文數(shù)據(jù)中重要數(shù)據(jù)信息的細(xì)節(jié);而經(jīng)過加密處理后的密文數(shù)據(jù)的字節(jié)分布圖11呈現(xiàn)無規(guī)律的均勻分布,有效地隱藏了明文數(shù)據(jù)源中的統(tǒng)計(jì)信息,說明輕量型AES加密算法可以有效地抵御基于數(shù)據(jù)統(tǒng)計(jì)的攻擊。
圖10 明文數(shù)據(jù)分布直方圖
圖11 密文數(shù)據(jù)分布直方圖
3.3.2 信息熵
信息熵一種衡量數(shù)據(jù)隨機(jī)性水平的指標(biāo),用來表示數(shù)據(jù)的混亂程度。熵值越大表明數(shù)據(jù)越混亂所包含的有效信息越少,信息熵計(jì)算公式如下[21]:
式中,p(mi)表示數(shù)值為mi出現(xiàn)的概率。由于密文數(shù)據(jù)值以字節(jié)為單位進(jìn)行表示,所以其取值范圍為[0,255],對(duì)應(yīng)的理想信息熵值為8。表3 列出了對(duì)不同大小數(shù)據(jù)源使用AES加密算法和輕量型AES加密算法加密后的密文信息熵及其二者之間的熵差(信息熵差值的絕對(duì)值)。從表中可以看出,AES加密算法和輕量型AES加密算法加密后二者的密文信息熵相近皆與理想信息熵值接近,并且最大熵差小于0.01,說明本文提出的加密算法能夠有效防止明文數(shù)據(jù)源的信息泄露,可以有效地抵抗基于信息熵的攻擊。
表3 密文信息熵
3.3.3 運(yùn)行時(shí)間分析
算法加解密運(yùn)行時(shí)間是衡量加密算法性能的重要參數(shù)[22]。本文的主要目標(biāo)是提供一種用于嵌入式微型系統(tǒng)上的加密算法,并且該算法在對(duì)浮空器平臺(tái)上數(shù)據(jù)進(jìn)行加密和解密時(shí)處理速度更為高效快捷。通過輸入不同大小的明文數(shù)據(jù)源,對(duì)AES加密算法和輕量型AES加密算法各自的加密和解密的時(shí)間進(jìn)行測(cè)試與統(tǒng)計(jì),測(cè)試結(jié)果如表4所示。
表4 算法運(yùn)行時(shí)間
實(shí)驗(yàn)結(jié)果表明:在對(duì)各個(gè)不同大小數(shù)據(jù)源加解密過程中,輕量型AES加密算法的運(yùn)行時(shí)間都低于AES加密算法,并且對(duì)各個(gè)數(shù)據(jù)源多次測(cè)試取平均值后,輕量型AES加密算法的加密時(shí)間比AES加密算法少46.33ms,而解密時(shí)間則少50.83ms,新算法的運(yùn)行速度更快。
為了進(jìn)一步分析明文數(shù)據(jù)源大小對(duì)算法運(yùn)行時(shí)間的影響,該實(shí)驗(yàn)以數(shù)據(jù)源的大?。╧B)為橫坐標(biāo),算法運(yùn)行時(shí)間(ms)為縱坐標(biāo),繪制了利用輕量型AES加密算法和AES加密算法對(duì)不同大小的數(shù)據(jù)源執(zhí)行加密和解密過程中算法運(yùn)行時(shí)間的對(duì)比圖,如圖12所示。
圖12 算法加密過程運(yùn)行時(shí)間
其中,輕量型AES加密算法和AES加密算法在執(zhí)行加密和解密過程中算法的運(yùn)行時(shí)間皆隨數(shù)據(jù)源大小的增加而上升,但由于輕量型AES加密算法減少了輪函數(shù)的循環(huán)次數(shù),使得每個(gè)數(shù)據(jù)源的加解密時(shí)間都有所縮短,并且在數(shù)據(jù)源小于40kB時(shí),輕量型AES加密算法和AES加密算法執(zhí)行加解密過程中所需要的運(yùn)行時(shí)間與數(shù)據(jù)源大小基本呈線性增長(zhǎng),在數(shù)據(jù)源大于40kB時(shí),受到處理器性能和資源的限制,輕量型AES加密算法和AES加密算法執(zhí)行加解密過程所需要的運(yùn)行時(shí)間皆有所增加。
如圖13所示,以數(shù)據(jù)源的大?。╧B)為橫坐標(biāo),算法運(yùn)行時(shí)間差(ms)為縱坐標(biāo),繪制了輕量型AES加密算法和AES加密算法在執(zhí)行加密過程和解密過程中算法運(yùn)行時(shí)間差。當(dāng)輸入的數(shù)據(jù)源越大時(shí),AES加密算法比輕量6型AES加密算法的運(yùn)行時(shí)間越長(zhǎng),二者的運(yùn)行時(shí)間差隨著數(shù)據(jù)源增大而加大。因此,與AES 加密算法相比,輕量型AES加密算法運(yùn)行速度有所提升。
圖13 算法加解密過程運(yùn)行時(shí)間差
針對(duì)AES加密算法研究應(yīng)用到球載微型嵌入式系統(tǒng)中難以平衡算法安全性和速度相互制約而引起的無法保證浮空器平臺(tái)數(shù)據(jù)實(shí)時(shí)回傳到地面監(jiān)控終端的問題,提出了一種基于輕量型AES加密算法的浮空器平臺(tái)數(shù)據(jù)安全傳輸方案。該方案通過對(duì)AES加密算法進(jìn)行改進(jìn)和優(yōu)化以保證能夠在算法安全性和速度之間取得平衡。一方面,將在執(zhí)行加密算法之前加入了字節(jié)填充和矩陣旋轉(zhuǎn)操作并且行移位變換改為列移位變換以增強(qiáng)算法的安全性;另一方面,減少算法中輪函數(shù)的循環(huán)次數(shù)以提高算法運(yùn)行速度,從而保證平臺(tái)數(shù)據(jù)能夠?qū)崿F(xiàn)實(shí)時(shí)傳輸。實(shí)驗(yàn)結(jié)果表明,該算法實(shí)現(xiàn)了不同大小數(shù)據(jù)源的穩(wěn)定可靠傳輸,數(shù)據(jù)傳輸完成率可達(dá)98%以上;相比于AES加密算法,該加密算法在保障數(shù)據(jù)安全傳輸?shù)耐瑫r(shí),加密速度提高了24.5%,解密速度提高了24.2%,有效地實(shí)現(xiàn)了浮空器平臺(tái)數(shù)據(jù)可靠、安全且快速傳輸。