馮永新,王 良,錢 博
(沈陽(yáng)理工大學(xué),沈陽(yáng) 110159)
近年來(lái),隨著無(wú)人機(jī)系統(tǒng)的發(fā)展,在無(wú)人機(jī)的通信過(guò)程中,保證其傳輸數(shù)據(jù)的完整性、可靠性愈發(fā)關(guān)鍵[1],就無(wú)人機(jī)數(shù)據(jù)鏈路而言,可分為上行鏈路和下行鏈路,其中,下行鏈路主要傳輸無(wú)人機(jī)自身狀態(tài)信息以及任務(wù)傳感器中的遙測(cè)數(shù)據(jù)[2]。由于無(wú)人機(jī)下行鏈路信息源繁多、需要傳輸?shù)男畔?shù)據(jù)量較大,無(wú)人機(jī)傳輸數(shù)據(jù)受到非合作方截獲、篡改的概率也在逐漸增大[3]。因此,保證無(wú)人機(jī)傳輸數(shù)據(jù)的安全性就變得越來(lái)越重要[4]。目前大多數(shù)無(wú)人機(jī)采用對(duì)傳輸數(shù)據(jù)加密的方式來(lái)保證其傳輸數(shù)據(jù)的安全性,防止數(shù)據(jù)泄密,常用的加密方式有DES、AES 等。通過(guò)加密可以提高數(shù)據(jù)可靠性,同時(shí)也可對(duì)無(wú)人機(jī)身份進(jìn)行簡(jiǎn)單認(rèn)證。但是,單純的加密缺乏對(duì)無(wú)人機(jī)所傳數(shù)據(jù)的完整性及真實(shí)性的認(rèn)證。
一個(gè)良好的Hash 函數(shù)具有單向性、抗弱碰撞性、雪崩性、抗強(qiáng)碰撞性,不同的輸入數(shù)據(jù)可以產(chǎn)生不同的消息摘要,同時(shí)無(wú)法通過(guò)消息摘要復(fù)原輸入數(shù)據(jù)。因此,可以利用Hash 函數(shù)的特點(diǎn),對(duì)數(shù)據(jù)的完整性進(jìn)行認(rèn)證[5-6]。然而,對(duì)于無(wú)人機(jī)通信而言,由于下行鏈路傳輸?shù)臄?shù)據(jù)量較大且隨機(jī)性較強(qiáng),直接將相關(guān)Hash 函數(shù)應(yīng)用在無(wú)人機(jī)通信系統(tǒng)時(shí),會(huì)影響整個(gè)系統(tǒng)的時(shí)效性及靈活性。為此,本文以Hash 函數(shù)中的SHA-1 算法為基礎(chǔ),對(duì)其進(jìn)行改進(jìn)研究,使其適用于無(wú)人機(jī)通信中的數(shù)據(jù)認(rèn)證。
Hash 函數(shù)也稱為雜湊函數(shù)或散列函數(shù),函數(shù)輸入為一可變長(zhǎng)度x,輸出為一固定長(zhǎng)度字符串,該字符串被稱為輸入x 的Hash 值或數(shù)據(jù)摘要(Message Digest)[7]。因?yàn)镠ash 函數(shù)是多對(duì)一函數(shù),不同的輸入可能對(duì)應(yīng)著相同的輸出,通過(guò)給定的輸入計(jì)算Hash 值是很容易的,但從Hash 值逆推輸入則很難,因此,也稱Hash 函數(shù)為單向Hash 函數(shù)。由于Hash函數(shù)具有單向性、抗沖突性以及映射分布均勻性和差分分布均勻性,因此,其在數(shù)據(jù)認(rèn)證方面有著廣泛的應(yīng)用[8]。
作為Hash 函數(shù)的一種,安全散列算法(Secure Hash Algorithm,SHA)是由MD5 發(fā)展而來(lái)[9]。以SHA-1 算法為例,其實(shí)現(xiàn)方式為:首先對(duì)輸入消息進(jìn)行補(bǔ)位及附加消息長(zhǎng)度,使其位數(shù)為512 的整數(shù)倍,然后將整個(gè)消息拆分為一個(gè)一個(gè)的512 位的數(shù)據(jù)塊,在求解消息摘要的過(guò)程中,需對(duì)每個(gè)512 位的數(shù)據(jù)塊進(jìn)行80 步運(yùn)算,每步運(yùn)算輸入32 位的字Wj,其中前16 個(gè)字W0,W1,…,W15為當(dāng)前數(shù)據(jù)塊中的數(shù)據(jù),對(duì)于W16~W79可通過(guò)式(1)計(jì)算得出[10]。在所有數(shù)據(jù)塊運(yùn)算完成后,可以得到一個(gè)160 位的消息摘要。
SHA-1 算法較為簡(jiǎn)單、易于實(shí)現(xiàn)。但是在對(duì)每個(gè)數(shù)據(jù)塊進(jìn)行運(yùn)算時(shí),只有W0~W15為數(shù)據(jù)塊的數(shù)據(jù)部分,W16~W79則是為了增加消息摘要散列性由式(1)計(jì)算得出[11]。對(duì)于SHA-1 算法的數(shù)據(jù)認(rèn)證,發(fā)送方將待發(fā)送數(shù)據(jù)與該數(shù)據(jù)經(jīng)過(guò)SHA-1 算法計(jì)算得到的消息摘要共同發(fā)送給接收方;接收方采用相同的SHA-1 算法計(jì)算接收數(shù)據(jù)的消息摘要,將其與接收到的消息摘要進(jìn)行對(duì)比,若消息摘要一致,即可證明所接收數(shù)據(jù)的完整性。
為保證無(wú)人機(jī)待傳輸數(shù)據(jù)的安全性和可靠性,將其對(duì)應(yīng)生成消息摘要,該消息摘要作為認(rèn)證數(shù)據(jù)與原待傳輸數(shù)據(jù)共同發(fā)送,經(jīng)加密、信道編碼、射頻處理后,經(jīng)信道發(fā)送至地面站;在地面站,對(duì)所接收的信號(hào)進(jìn)行解調(diào)、信道譯碼與解密后,即可得到原傳輸數(shù)據(jù)及其消息摘要。
地面站將獲得的原數(shù)據(jù)按相同數(shù)據(jù)認(rèn)證方法,計(jì)算生成新的消息摘要,并將接收獲得的消息摘要與其進(jìn)行一致性對(duì)比,即可完成真實(shí)性、完整性的判定。為進(jìn)一步提高認(rèn)證的效率及靈活性,可對(duì)待傳輸數(shù)據(jù)進(jìn)行分組處理,并對(duì)各分組對(duì)應(yīng)生成的消息摘要進(jìn)行摘要抽取,與此相對(duì)應(yīng),接收方也通過(guò)分組摘要進(jìn)行各分組傳輸數(shù)據(jù)的認(rèn)證。
為使SHA-1 算法更適用于無(wú)人機(jī)下行鏈路的數(shù)據(jù)認(rèn)證,使其對(duì)隨機(jī)性較大的無(wú)人機(jī)待傳輸數(shù)據(jù)進(jìn)行更好的計(jì)算,同時(shí)提高整個(gè)系統(tǒng)的時(shí)效性,需要對(duì)SHA-1 算法進(jìn)行改進(jìn),通過(guò)改進(jìn)后的算法計(jì)算無(wú)人機(jī)待發(fā)送數(shù)據(jù)的消息摘要,步驟如下:
Step1:輸入待傳輸數(shù)據(jù)并對(duì)其進(jìn)行分組及補(bǔ)位。設(shè)待傳輸數(shù)據(jù)為S,其數(shù)據(jù)位數(shù)為m,將其等分成n 組,每組N(m/n)位數(shù)據(jù),同時(shí)對(duì)各分組數(shù)據(jù)進(jìn)行補(bǔ)位,使得各分組數(shù)據(jù)補(bǔ)位后的總長(zhǎng)度L 為32的整數(shù)倍,在進(jìn)行補(bǔ)位時(shí),先在待補(bǔ)位數(shù)據(jù)后面補(bǔ)一個(gè)1,如果不滿足要求,再補(bǔ)0 直到滿足其長(zhǎng)度為32 的倍數(shù),分組后及補(bǔ)位后的數(shù)據(jù)表示為S={S1,S2,…,Sn}。
Step2:初始化中間變量A,B,C,D,E。初值設(shè)置與原算法相同,令A(yù)=H0,B=H1,C=H2,D=H3,E=H4,其中H0~H5值(十六進(jìn)制)如式(2)所示[12]。
Step3:計(jì)算各分組數(shù)據(jù)的消息摘要。將補(bǔ)位后單個(gè)分組中L 位數(shù)據(jù)以32 為單位進(jìn)行劃分W0,W1,…,Wt,其中循環(huán)次數(shù)t=L/32,對(duì)初始化后的中間變量執(zhí)行TEMP=Move(A,5)+ft(B,C,D)+E+Wt+Kt;E=D;D=C;C=Move(B,30);B=A;A=TEMP。計(jì)算中的邏輯函數(shù)ft和常數(shù)Kt值與原算法相同,如式(3)、式(4)所示[13]。
當(dāng)總的循環(huán)次數(shù)t>=80 時(shí),令t=t %80,即邏輯函數(shù)ft和常數(shù)Kt從0 開始依次參與運(yùn)算。
Step4:輸出分組消息摘要并進(jìn)行抽取處理。在計(jì)算完所有的Wi(1≤i≤t)后,令H0=H0+A,H1=H1+B,H2=H2+C,H3=H3+D,H4=H4+E,得到一個(gè)160 位的消息摘要Mi={H0H1H2H3H4},將其送入摘要抽取函數(shù)f(Mi,n)中進(jìn)行摘要抽取處理。摘要抽取函數(shù)如式(5)所示,抽取后的摘要為Mi'。進(jìn)一步判斷是否有未進(jìn)行摘要計(jì)算的分組數(shù)據(jù),若有,則跳轉(zhuǎn)至步驟Step2 中,否則執(zhí)行步驟Step5。
式(5)中M 為輸入的消息摘要,n 為數(shù)據(jù)分組數(shù),Mi'為抽取后的消息摘要。這里的抽取規(guī)則為抽取各分組消息摘要的前32 位。
Step5:輸出消息摘要。當(dāng)所有分組數(shù)據(jù)的消息摘要計(jì)算完成并抽取后,即可得到消息摘要{M1',M2',…,Mn'},將其與原待傳輸數(shù)據(jù)共同發(fā)送。
通過(guò)改進(jìn)后的SHA-1 算法計(jì)算無(wú)人機(jī)待傳輸數(shù)據(jù)的消息摘要原理圖如圖1 所示。
圖1 消息摘要生成原理
為驗(yàn)證基于改進(jìn)SHA-1 的數(shù)據(jù)認(rèn)證方法的有效性,在MATLAB 仿真環(huán)境下對(duì)無(wú)人機(jī)認(rèn)證系統(tǒng)進(jìn)行仿真驗(yàn)證。所選取的待傳輸數(shù)據(jù),如表1 所示。
表1 各分組的待傳輸數(shù)據(jù)
由表1 可知,無(wú)人機(jī)待傳輸數(shù)據(jù)為192 位,數(shù)據(jù)分組數(shù)為6 組,即每組32 位數(shù)據(jù),進(jìn)一步通過(guò)改進(jìn)后的SHA-1 算法對(duì)各分組數(shù)據(jù)的消息摘要進(jìn)行計(jì)算,如表2 所示。
表2 各分組的消息摘要
在此基礎(chǔ)上,根據(jù)摘要抽取函數(shù),對(duì)各個(gè)分組的消息摘要進(jìn)行抽取處理,得到用于對(duì)該分組進(jìn)行認(rèn)證的消息摘要,如表3 所示。
表3 各分組所抽取的消息摘要
最后將抽取處理后的消息摘要組合,作為最終的消息摘要。
進(jìn)一步,對(duì)改進(jìn)的SHA-1 算法性能進(jìn)行分析。計(jì)算摘要過(guò)程中TEMP=Move(A,5)+ft(B,C,D)+E+Wt+ Kt;E=D;D=C;C=Move(B,30);B=A;A=TEMP 所循環(huán)的次數(shù),為影響消息摘要計(jì)算所需時(shí)間的主要原因,而循環(huán)次數(shù)與處理后的輸入數(shù)據(jù)位數(shù)緊密相關(guān)(原SHA-1 算法處理后的輸入數(shù)據(jù)為經(jīng)過(guò)補(bǔ)位與補(bǔ)長(zhǎng)度后的數(shù)據(jù),改進(jìn)后算法輸入數(shù)據(jù)為補(bǔ)位后的數(shù)據(jù))。對(duì)于原SHA-1 算法而言,其循環(huán)次數(shù)t=(處理后的輸入數(shù)據(jù))/512×80,由于輸入數(shù)據(jù)是以512為單位進(jìn)行分組,因此,當(dāng)輸入數(shù)據(jù)在處理后的基礎(chǔ)上每增加1~512 位,循環(huán)次數(shù)需增加80 次;對(duì)于改進(jìn)后SHA-1 算法而言,其循環(huán)次數(shù)t=L/32(L 為補(bǔ)位后數(shù)據(jù)位數(shù)),由于輸入數(shù)據(jù)是以32 為單位進(jìn)行分組,因此,當(dāng)輸入數(shù)據(jù)在處理后的基礎(chǔ)上每增加1~32 位,循環(huán)次數(shù)僅增加1 次。設(shè)m 為待計(jì)算摘要的數(shù)據(jù)位數(shù),L1為SHA-1 算法補(bǔ)位及附加消息長(zhǎng)度的數(shù)據(jù)位數(shù),L2為改進(jìn)的SHA-1 算法補(bǔ)位的數(shù)據(jù)位數(shù),SHA-1 算法與改進(jìn)的SHA-1 算法相關(guān)特點(diǎn)對(duì)比,如表4 所示。
表4 兩種算法特點(diǎn)對(duì)比
由表4 可知,改進(jìn)的SHA-1 算法相較于原算法在輸入數(shù)據(jù)的處理上更加靈活,由于減少了計(jì)算摘要過(guò)程中的循環(huán)次數(shù),計(jì)算消息摘要所需時(shí)間也大幅減少。當(dāng)輸入數(shù)據(jù)的位數(shù)L<512 時(shí),改進(jìn)后算法在循環(huán)次數(shù)上比原算法減少了75%以上;當(dāng)L1=L2時(shí),改進(jìn)后算法在循環(huán)次數(shù)上比原算法減少了75%。
進(jìn)一步在MATLAB2015a 仿真環(huán)境下,對(duì)兩種算法計(jì)算消息摘要所需時(shí)間進(jìn)行仿真,其中硬件環(huán)境如下:處理器為Inter(R)Core(TM)i5-4590,安裝內(nèi)存(RAM)為4.00 GB,硬盤容量500 G,仿真結(jié)果如表5 所示。
表5 兩種算法計(jì)算摘要所需時(shí)間
由表5 可知,當(dāng)數(shù)據(jù)長(zhǎng)度較小時(shí),改進(jìn)的SHA-1 算法所需時(shí)間遠(yuǎn)小于原SHA-1 算法;當(dāng)數(shù)據(jù)量較大時(shí),原SHA-1 算法計(jì)算消息摘要所需時(shí)間為改進(jìn)后SHA-1 算法的6~7 倍。因此,改進(jìn)算法的時(shí)效性相較于原算法有較大的提升,提高了系統(tǒng)的整體運(yùn)行速度及靈活性,更適合無(wú)人機(jī)下行鏈路的數(shù)據(jù)認(rèn)證。
在此基礎(chǔ)上,在MATLAB 仿真環(huán)境下,對(duì)無(wú)人機(jī)下行鏈路認(rèn)證效果進(jìn)行仿真分析。仿真中的通信體制為抗干擾性能優(yōu)良、傳輸速率高的差分跳頻[14-15],其仿真參數(shù)如下:待傳輸數(shù)據(jù)為192 bit,跳速5 000 跳/s,工作頻段2.93 MHz~7.52 MHz,碼速率為10 kb/s,采樣頻率100 MHz,頻率集中的跳頻頻點(diǎn)數(shù)16 個(gè),跳頻頻點(diǎn)間隔為0.3 MHz,每個(gè)碼元內(nèi)的采樣點(diǎn)數(shù)為10 000,采樣持續(xù)時(shí)間為9.6 ms;加密部分采用DES 算法,信道編碼部分采用Turbo 碼編碼方式。進(jìn)一步利用寬帶噪聲信號(hào)對(duì)整個(gè)帶寬內(nèi)的信號(hào)進(jìn)行干擾,其中信噪比為-15.3 dB~-17.1 dB,仿真結(jié)果如圖2 所示。
在當(dāng)前信噪比下,對(duì)無(wú)人機(jī)傳輸數(shù)據(jù)認(rèn)證結(jié)果進(jìn)行仿真,仿真結(jié)果如圖3 所示。
由圖3 可知,當(dāng)信噪比大于-15.7 dB 時(shí),兩消息摘要完全相同,無(wú)人機(jī)傳輸數(shù)據(jù)均可實(shí)現(xiàn)認(rèn)證。進(jìn)一步,對(duì)信噪比為-15.9 dB~-16.5 dB 條件下的分組消息摘要認(rèn)證結(jié)果進(jìn)行仿真,仿真結(jié)果如圖4~圖7 所示。
圖2 DFH 調(diào)制誤碼率曲線
圖3 傳輸數(shù)據(jù)認(rèn)證結(jié)果
圖4 信噪比-15.9 dB 消息摘要認(rèn)證結(jié)果
圖5 信噪比-16.1 dB 消息摘要認(rèn)證結(jié)果
當(dāng)信噪比小于-15.9dB 時(shí),無(wú)人機(jī)傳輸數(shù)據(jù)未能進(jìn)行認(rèn)證。由圖3~圖7 可知,對(duì)于認(rèn)證失敗的傳輸數(shù)據(jù)而言,分組處理的消息摘要仍然可對(duì)部分分組成功的進(jìn)行認(rèn)證。在認(rèn)證性能上,進(jìn)行分組處理的消息摘要可以提高對(duì)無(wú)人機(jī)待傳輸數(shù)據(jù)認(rèn)證的認(rèn)證效率。
圖6 信噪比-16.3 dB 消息摘要認(rèn)證結(jié)果
圖7 信噪比-16.5 dB 消息摘要認(rèn)證結(jié)果
本文通過(guò)減少SHA-1 算法的循環(huán)次數(shù)對(duì)SHA-1 算法進(jìn)行改進(jìn),進(jìn)而提高該算法計(jì)算消息摘要的效率,使其更適合無(wú)人機(jī)下行鏈路的數(shù)據(jù)認(rèn)證;進(jìn)一步,通過(guò)改進(jìn)后的SHA-1 算法對(duì)分組后待傳輸數(shù)據(jù)的消息摘要進(jìn)行計(jì)算,同時(shí)對(duì)消息摘要進(jìn)行抽取處理,以提高系統(tǒng)時(shí)效性。在此基礎(chǔ)上,對(duì)基于改進(jìn)SHA-1 的無(wú)人機(jī)下行鏈路通信認(rèn)證性能進(jìn)行仿真,仿真結(jié)果表明,該方法可以對(duì)無(wú)人機(jī)待傳輸數(shù)據(jù)進(jìn)行有效認(rèn)證,同時(shí)提高了對(duì)待傳輸數(shù)據(jù)的認(rèn)證效率,為無(wú)人機(jī)安全通信發(fā)展提供理論借鑒。