天津航天中為數(shù)據(jù)系統(tǒng)科技有限公司 張志科 楊 晨 張曉君
為了解決無人機(jī)數(shù)據(jù)鏈傳輸過程中的數(shù)據(jù)安全問題,采用AES算法對數(shù)據(jù)進(jìn)行加解密。加解密采用單獨(dú)板卡設(shè)計(jì),介紹了AES加密四種變換和密鑰擴(kuò)展算法在FPGA上的實(shí)現(xiàn)方法,并根據(jù)無人機(jī)數(shù)據(jù)鏈數(shù)據(jù)幀格式的特點(diǎn),設(shè)計(jì)了一種適合無人機(jī)數(shù)據(jù)鏈數(shù)據(jù)幀特點(diǎn)的AES加解密方案,最后在上位機(jī)上編寫自收發(fā)測試軟件,搭建系統(tǒng)回環(huán)測試環(huán)境,在明態(tài)和密態(tài)下進(jìn)行對比。系統(tǒng)測試結(jié)果表明,加解密過程運(yùn)行穩(wěn)定,由加解密帶來的系統(tǒng)延時(shí)只占數(shù)據(jù)鏈本身延時(shí)的3%。
無人機(jī)數(shù)據(jù)鏈?zhǔn)菍?shí)現(xiàn)無人機(jī)與地面站之間雙向傳輸信息的無線通信系統(tǒng), 主要完成機(jī)載視頻的實(shí)時(shí)下傳、載荷控制及狀態(tài)回報(bào)和遙控遙測信息的分發(fā)。目前無人機(jī)與地面站的數(shù)據(jù)通信大多以明文形式傳輸,一旦數(shù)據(jù)鏈通信體制被人了解,就可以很輕松的共享無人機(jī)飛行數(shù)據(jù),甚至劫持無人機(jī),使我們不得不關(guān)注無人機(jī)數(shù)據(jù)鏈數(shù)據(jù)安全問題。在數(shù)據(jù)編碼調(diào)制之前對數(shù)據(jù)進(jìn)行加密,可有效防止數(shù)據(jù)鏈數(shù)據(jù)被截獲和篡改,即使被截獲,截獲者也無法在可見的時(shí)間內(nèi)將其破譯。
針對數(shù)據(jù)鏈的加密研究很早已經(jīng)開始,張興凱等人總結(jié)了無人機(jī)信息傳輸系統(tǒng)的體系結(jié)構(gòu)和特點(diǎn),采用一種混合加密體制實(shí)現(xiàn)了對無人機(jī)上行數(shù)據(jù)鏈加密;張興凱等人在無人機(jī)遙控指令加密方式的研究中設(shè)計(jì)了一種基于序列密碼的一次一密加密方案;王劍等人設(shè)計(jì)了一種基于國密SM4算法的ACARS數(shù)據(jù)鏈信息的加密方案,實(shí)現(xiàn)了對報(bào)文的加密;胡子杰等人提出一種針對民用無人機(jī)的遙控?cái)?shù)據(jù)保護(hù)方法,并從安全性和實(shí)現(xiàn)性方面對AES、PRESENT和RC4這3種加密算法的可行性進(jìn)行了分析,得出AES算法易實(shí)現(xiàn)、安全性高。上述研究都是對上行遙控低速數(shù)據(jù)的加密方案,而對下行視頻和載荷等高速復(fù)合數(shù)據(jù)的加密有些力不從心,并且沒有對加解密系統(tǒng)引入的延時(shí)進(jìn)行分析,本文提出一種基于AES算法的無人機(jī)數(shù)據(jù)鏈加密方案,該方案可實(shí)現(xiàn)對上行遙控和下行復(fù)合數(shù)據(jù)加密,并且加密速率快、安全性高,系統(tǒng)延時(shí)只增加3%。
無人機(jī)數(shù)據(jù)鏈的數(shù)據(jù)以幀的形式傳輸,數(shù)據(jù)幀的幀頭、幀長在一般是確定不變的,所以分組密碼十分適合無人機(jī)數(shù)據(jù)加密;在分組密碼中Rijndael算法以其安全性、速度性能、實(shí)現(xiàn)的方便實(shí)用性、通用性和靈活性被選為AES標(biāo)準(zhǔn)(高級加密標(biāo)準(zhǔn)),并被廣泛應(yīng)用。
無人機(jī)數(shù)據(jù)鏈分為地面終端和機(jī)載終端,地面終端完成上行遙控幀的加密和下行復(fù)合幀的解密,機(jī)載終端完成上行遙控幀的解密和下行復(fù)合幀的加密。加解密框圖如圖1所示。
圖1 加解密框圖
加解密采用單獨(dú)的板卡設(shè)計(jì),增強(qiáng)通用性;AES算法在加解密板的FPGA上采用verilog語言實(shí)現(xiàn),加密向量、密鑰和S盒存放在加解密板的flash中,可定期修改,保證安全性;加解密板和收發(fā)終端之間采用LVDS接口進(jìn)行數(shù)據(jù)交互,目前無人機(jī)數(shù)據(jù)鏈數(shù)據(jù)速率一般在64M以下,LVDS接口足以滿足無人機(jī)數(shù)據(jù)鏈速率的要求。加解密板原理框圖如圖2所示。
圖2 加解密板框圖
AES是一種基于替換和置換的迭代對稱密鑰分組加密算法。置換是數(shù)據(jù)的重新排列,而替換是用一個(gè)單元數(shù)據(jù)替換另一個(gè)。AES使用了幾種不同的技術(shù)來實(shí)現(xiàn)置換和替換,包括:字節(jié)替換(SubBytes),行移位(ShiftRows),列混合(MixColumn),密鑰加(AddRoundKey),這種替換、置換和迭代算法十分適合FPGA實(shí)現(xiàn)。AES的數(shù)據(jù)和密鑰分組長度可分為128bits、129bits和256bits,本設(shè)計(jì)中選擇128bits。AES128算法中數(shù)據(jù)和密鑰都可以看作是一個(gè)以字節(jié)為單位的4X4的矩陣,經(jīng)過10輪變換后得到密文數(shù)據(jù)。
(1)字節(jié)替換(SubBytes)
字節(jié)替換是一種非線性的變換,也稱為S盒變換,將數(shù)據(jù)以查表方式替換為S盒中的數(shù)據(jù)。S盒的設(shè)計(jì)是AES安全性中很重要的一環(huán),它的強(qiáng)度決定了AES加密算法的強(qiáng)度。許多學(xué)者對AES算法的改進(jìn)主要體現(xiàn)在S盒算法的研究上,本設(shè)計(jì)中不討論S盒的生成,但為了適應(yīng)后續(xù)S盒技術(shù)的升級,將S盒存放在flash中,可根據(jù)S盒技術(shù)的最新研究成果修改AES算法所使用的S盒,而不必修改程序。每次上電后,將S盒數(shù)據(jù)從flash中讀出,在加密過程中進(jìn)行字節(jié)替換,S盒變換過程如圖3所示。
圖3 字節(jié)替換
(2)行移位(ShiftRows)
在行循環(huán)移位變換中,AES128算法第一行不變,第二行循環(huán)移位1個(gè)字節(jié),第三行循環(huán)移位2個(gè)字節(jié),第四行循環(huán)移位3個(gè)字節(jié),生成新的矩陣。
(3)行移位(ShiftRows)
列混合運(yùn)算在數(shù)學(xué)上可以看作是數(shù)據(jù)矩陣a(x)的每一列與多項(xiàng)式矩陣c(x)的乘法,結(jié)果對x4+1取模,即:b(x)=c(x) * a(x)(mod x4+1);
矩陣展開:
由上式可以看出,與02相乘相當(dāng)于左移1位,矩陣乘法可以拆分為加法、異或和移位運(yùn)算。
(4)密鑰加(AddRoundKey)
輪密鑰加是將種子密鑰擴(kuò)展出的密鑰與數(shù)據(jù)矩陣按位異或,無特殊變換。
可以看出AES四種變換的實(shí)質(zhì)就是簡單的查表、移位、相加和異或運(yùn)算,易于FPGA實(shí)現(xiàn)。
在AES128中,種子密鑰為一個(gè)4X4矩陣,記作ω[0:3],ω[0]為第一列,密鑰擴(kuò)展就是將矩陣ω?cái)U(kuò)展40個(gè)新列,構(gòu)成4X44的擴(kuò)展密鑰矩陣,擴(kuò)展矩陣按照以下方式遞歸產(chǎn)生:
其中T變換,由三種變換組成:字節(jié)循環(huán)移位、字節(jié)替換和輪常量異或:
(1)字節(jié)循環(huán)移位:將ω[i-1]中的4個(gè)字節(jié)循環(huán)移位1個(gè)字節(jié),即將[b0,b1,b2,b3]變換為[b1,b2,b3,b0]。
(2)字節(jié)替換:字節(jié)循環(huán)移位后的結(jié)果使用S盒進(jìn)行字節(jié)替換。
(3)輪常量異或:將前兩步的結(jié)果同輪常量Rcon[j]進(jìn)行異或,j表示輪數(shù)。
表1 輪常量Rcon[j]
可見,密鑰擴(kuò)展算法也是一些簡單的移位、替換和異或,易于FPGA實(shí)現(xiàn)。
為解決無人機(jī)數(shù)據(jù)鏈數(shù)據(jù)安全問題,發(fā)送端在數(shù)據(jù)發(fā)送之前對數(shù)據(jù)采用AES算法加密,接收端接收到數(shù)據(jù)后再對數(shù)據(jù)進(jìn)行解密,實(shí)現(xiàn)數(shù)據(jù)加密傳輸。無人機(jī)數(shù)據(jù)鏈數(shù)據(jù)以幀的形式進(jìn)行數(shù)據(jù)傳輸,接收端需要通過幀頭和幀長進(jìn)行數(shù)據(jù)同步,所以無人機(jī)數(shù)據(jù)鏈的AES加密要做到以下幾點(diǎn):
(1)數(shù)據(jù)幀的幀頭不加密,且可以適應(yīng)不同幀頭;(2)數(shù)據(jù)傳輸中不能傳輸密鑰,保證安全性;(3)每個(gè)數(shù)據(jù)幀使用不同的密鑰加密;(4)可對幀長不是128bits幀數(shù)倍的數(shù)據(jù)幀加密,且不增加數(shù)據(jù)量;(5)低延時(shí)。
為滿足無人機(jī)數(shù)據(jù)鏈數(shù)據(jù)加密需求,需對無人機(jī)數(shù)據(jù)鏈幀格式作詳細(xì)定義。無人機(jī)數(shù)據(jù)鏈數(shù)據(jù)幀包括:幀頭、密鑰同步字和待加解密數(shù)據(jù)三部分。幀頭的內(nèi)容和長度一般固定;密鑰同步字長度固定,在固定位置存放加密向量編號、密鑰編號和待加解密數(shù)據(jù)的長度。幀長存放在密鑰同步字中兼容不同幀長的數(shù)據(jù)格式,加密向量和密鑰存放在加解密板的flash中,在數(shù)據(jù)鏈中只傳輸編號,保證安全性。在本設(shè)計(jì)中,flash中存放著256組加密向量和密鑰,每幀隨機(jī)取一組加密向量和密鑰對數(shù)據(jù)進(jìn)行加密,保證每幀使用不同的密鑰加密。
無人機(jī)收發(fā)終端和加解密板之間的也是以幀的形式進(jìn)行數(shù)據(jù)交互,由圖1所示,收發(fā)終端和加解密板之間每個(gè)通道有6對LVDS線,收發(fā)各3對,發(fā)送和接收的3對LVDS線分別傳輸:時(shí)鐘、幀頭指示和數(shù)據(jù),數(shù)據(jù)傳輸幀格式如圖4所示。
圖4 數(shù)據(jù)傳輸格式
時(shí)鐘以固定的速率不間斷發(fā)送;幀頭指示拉高標(biāo)識此時(shí)的數(shù)據(jù)為幀頭,表示加解密板不需要加密的數(shù)據(jù),以便接收端做數(shù)據(jù)同步和數(shù)據(jù)提??;密鑰同步字是加解密板要解析的內(nèi)容,加解密板從中提取加密向量的編號、密鑰的編號和待加解密數(shù)據(jù)長度,對數(shù)據(jù)數(shù)據(jù)進(jìn)行加密。最后將幀頭、密鑰同步字和加解密數(shù)據(jù)發(fā)送給收發(fā)終端,完成加解密。
采用AES算法的輸出反饋模式(OFB)對數(shù)據(jù)進(jìn)行加解密,可有效解決待加解密數(shù)據(jù)不是128幀數(shù)倍的問題,該模式下加密和解密過程相同。
加解密板提取待加密向量編號、密鑰編號和待加解密數(shù)據(jù)長度后,開始對數(shù)據(jù)進(jìn)行加解密,加密過程如圖5所示。
圖5 AES加密過程
由圖5所示,加解密板收到加密向量編號和密鑰編號后,開始生成向量密文;AES實(shí)際是對加密向量進(jìn)行加密,加密生成向量密文,待加密分組數(shù)據(jù)和向量密文進(jìn)行異或后輸出密文數(shù)據(jù);本設(shè)計(jì)中每組加密向量生成一組向量密文后,加密向量向左循環(huán)移位1bit,保證每幀中不同分組數(shù)據(jù)異或的向量密文不同;對于最后不是128bits幀數(shù)倍的分組數(shù)據(jù)根據(jù)待加密數(shù)據(jù)長度,將后面超出部分舍棄,保證加密不增加數(shù)據(jù)量,實(shí)現(xiàn)幀長自適應(yīng)。
解密的過程和加密過程是相同,接收端根據(jù)加密向量編號和密文編號生成與發(fā)送端相同的向量密文,再和密文數(shù)據(jù)異或,即可得到明文數(shù)據(jù)。
系統(tǒng)測試基于一套上行速率為51.2Kbps的無人機(jī)數(shù)據(jù)鏈,上位機(jī)模擬無人機(jī)遙控?cái)?shù)據(jù),遙控?cái)?shù)據(jù)幀長為128B,每幀數(shù)據(jù)中包含幀計(jì)數(shù)和CRC校驗(yàn),在上位機(jī)上編寫自收發(fā)測試軟件,測試軟件通過UART接口將遙控?cái)?shù)據(jù)發(fā)送給地面終端,并記錄遙控?cái)?shù)據(jù)幀發(fā)送時(shí)間,地面終端通過無線將數(shù)據(jù)發(fā)送給機(jī)載終端,然后機(jī)載終端接收到遙控?cái)?shù)據(jù)后再通過UART接口發(fā)送給上位機(jī)的測試軟件,上位機(jī)接收到完整遙控?cái)?shù)據(jù)幀后通過幀計(jì)數(shù)和CRC校驗(yàn)判斷遙控幀的連續(xù)性和正確性,并通過幀計(jì)數(shù)記錄接收到遙控幀的時(shí)間,與發(fā)送時(shí)間對比得出系統(tǒng)延時(shí),完成回環(huán)測試環(huán)境,測試軟件統(tǒng)計(jì)發(fā)送幀數(shù)、接收幀數(shù)、誤碼率和延時(shí),測試系統(tǒng)框圖如圖6所示。
圖6 系統(tǒng)測試框圖
在明態(tài)和密態(tài)下分別測試15萬幀數(shù)據(jù),在明態(tài)下測試軟件統(tǒng)計(jì)15萬幀遙控?cái)?shù)據(jù)的誤碼率和平均延時(shí),密態(tài)下測試軟件同樣統(tǒng)計(jì)15萬幀遙控?cái)?shù)據(jù)的誤碼率和平均延時(shí),通過明態(tài)平均延時(shí)和密態(tài)平均延時(shí)對比得出由于加解密帶來的系統(tǒng)延時(shí),測試結(jié)果如圖7、8所示,明態(tài)和密態(tài)結(jié)果對比見表2所示。
表2 測試結(jié)果分析
圖7 明態(tài)測試結(jié)果
圖8 密態(tài)測試結(jié)果
由測試結(jié)果,15萬數(shù)據(jù)誤幀率為0%,平均延時(shí)密態(tài)比明態(tài)增加1.017ms,測試結(jié)果表明,加解密運(yùn)行穩(wěn)定,由加解密過程帶來的延時(shí)占系統(tǒng)延時(shí)不到3%。
結(jié)論:本設(shè)計(jì)首先討論了AES四種變換和密鑰擴(kuò)展算法的結(jié)構(gòu)特點(diǎn),經(jīng)分析AES算法結(jié)構(gòu)簡單,非常適合在FPGA上實(shí)現(xiàn);然后詳細(xì)討論了無人機(jī)數(shù)據(jù)鏈數(shù)據(jù)特點(diǎn),根據(jù)無人機(jī)數(shù)據(jù)鏈的數(shù)據(jù)特點(diǎn),提出無人機(jī)數(shù)據(jù)加密的要求;最后根據(jù)無人機(jī)數(shù)據(jù)鏈數(shù)據(jù)加密要求,設(shè)計(jì)了一種基于AES的無人機(jī)數(shù)據(jù)鏈數(shù)據(jù)加密方案。本設(shè)計(jì)中解決了無人機(jī)數(shù)據(jù)鏈數(shù)據(jù)幀長不是128bits整數(shù)倍,加密不增加數(shù)據(jù)量和低延時(shí)等問題;加密向量和密鑰存放在flash中,數(shù)據(jù)幀中只傳輸編號,保證安全性,并實(shí)現(xiàn)一次一密;S盒存放在flash中,可以隨著S盒技術(shù)的進(jìn)步升級S盒,而不必修改FPGA程序,增強(qiáng)通用性。本設(shè)計(jì)經(jīng)過長時(shí)間拷機(jī)測試,加解密運(yùn)行穩(wěn)定,延時(shí)滿足無人機(jī)數(shù)據(jù)鏈數(shù)據(jù)要求。