吳海濤 史青海 梅 彬 聶文明
(中國直升機設(shè)計研究所,天津 300000)
自從飛機問世以來,飛行參數(shù)記錄器應需要而生。隨著需求的不斷完善,飛行參數(shù)記錄器涵蓋的變量由最初的十幾個衍生到現(xiàn)在的幾千個。目前,飛行參數(shù)記錄器的主要功能包括5個方面:試飛期間的排故、飛行品質(zhì)的測試、輔助地勤人員維保、飛機事故原因調(diào)查、地面模擬器設(shè)計改進。隨著自動駕駛技術(shù)的不斷發(fā)展,有效地降低飛行員的駕駛負擔,在軍用飛機領(lǐng)域,飛控系統(tǒng)已經(jīng)逐漸發(fā)展為飛管系統(tǒng),以美軍F-35為例,先進的飛管系統(tǒng)顯著地提升了整機的戰(zhàn)斗力。迫于飛管系統(tǒng)的技術(shù)成熟度相對較低,尚未在民航客機中推廣。飛管系統(tǒng)技術(shù)的不斷完善依賴于大量的飛行數(shù)據(jù)支撐,由于此類數(shù)據(jù)的敏感性,因此對于飛行參數(shù)記錄器的數(shù)據(jù)安全性提出了新的要求。
已有的針對飛行參數(shù)記錄器的研究更多的是關(guān)注數(shù)據(jù)的后期使用。有學者研究制訂飛參判據(jù)的方法,對其存儲的數(shù)據(jù)進行自動判讀,提高處理效率,更好地發(fā)揮其在地勤維護中的應用[1]。有學者針對飛參中數(shù)據(jù)存儲和使用問題,提出了基于Hbase數(shù)據(jù)庫的分布式存儲架構(gòu),實現(xiàn)了對飛行參數(shù)的列存儲和對擴展檢索需求的高效支持,提高了飛行數(shù)據(jù)的訪問效率[2]。有學者提出一種基于改進支持向量數(shù)據(jù)描述(SVDD)的數(shù)據(jù)新異檢測方法,通過啟發(fā)式的約減SVDD核矩陣尺寸加快了SVDD的運算速度,而后研究了飛參數(shù)據(jù)中參數(shù)采樣率不統(tǒng)一條件下樣本生成的問題,測試表明該方法能準確檢測出飛參數(shù)據(jù)中的異常[3]。有學者提出了一種基于樣本分位數(shù)的數(shù)據(jù)異常值檢測算法來提高數(shù)據(jù)處理精度,通過設(shè)置時間序列窗口對記錄的飛參數(shù)據(jù)進行遍歷檢測,然后對每個窗口內(nèi)的數(shù)據(jù)進行樣本分位數(shù)提取,并將提取的樣本分位數(shù)組成的時間序列與原始飛參記錄數(shù)據(jù)進行對比,實現(xiàn)飛參數(shù)據(jù)異常值檢測[4]。有工程人員為充分挖掘飛參數(shù)據(jù)在航空飛行器監(jiān)控及故障診斷中的應用價值,對利用飛參數(shù)據(jù)進行航空飛行器狀態(tài)監(jiān)控和檢測維護的方法進行了研究,并提出閾值法、比較法和關(guān)聯(lián)法3種飛參數(shù)據(jù)處理方法[5]。
在網(wǎng)絡(luò)數(shù)據(jù)傳輸中,數(shù)據(jù)加密技術(shù)已經(jīng)較為成熟,在量子計算機尚未推廣應用之前,已有的加密算法可以滿足工業(yè)的安全需求[6-8]。針對飛行參數(shù)記錄器數(shù)據(jù)加密的需求,文中提出一種基于AES加密算法的工程化實現(xiàn)方式,測試證明該方法無論是在電腦端還是微處理器中均可正常運行。
高級加密標準AES(Advanced Encryption Standard)又稱Rijndael加密法,是美國聯(lián)邦政府采用的一種區(qū)塊加密標準。與數(shù)據(jù)加密標準DES(Data Encryption Standard)不同,AES采用的是置換-組合架構(gòu),而不是Feistel架構(gòu)。硬件運行AES算法只占用很少的存儲器空間,且軟件實現(xiàn)簡單,可以快速地完成加解密[9-11]。
AES加密是基于一個4×4的字節(jié)矩陣進行的,其初始值是一個明文塊,字節(jié)矩陣中的一個元素對應明文塊中的一個字節(jié)。因此在加密之前要先將整個明文拆分成n個明文塊:M1、M2、M3、…Mn,每一個明文塊就是一個4×4的字節(jié)矩陣。針對每個明文塊進行相同的加密運算,便可生成n個密文塊:C1、C2、C3、…Cn,如圖1所示。
圖1 AES加密結(jié)構(gòu)
按照密鑰的長度區(qū)分,AES加密算法包括AES-128、AES-192、AES-256三種,涉及運算過程中塊的大小、密鑰的長度以及迭代計算的次數(shù),文中以AES-128進行說明,對應的塊大小為128位,密鑰長度為128位,迭代次數(shù)為10輪。AES-128加解密過程如圖2所示。
圖2 AES加解密流程
在加密過程中進行的字節(jié)代換操作可以視作為查表的過程。AES算法預先定義了一個16×16的S盒狀態(tài)矩陣,按照M1中一個字節(jié)的高4位作為行值,低4位作為列值,取出S盒中對應的元素作為輸出,代替M1中的明文字節(jié)。解密過程中的逆字節(jié)代換與之類似,只不過將S盒換為逆S盒。AES加密過程中的行移位是一個左循環(huán)移位操作,在密鑰長度為128位,M1的第0行左移0字節(jié),第1行左移1字節(jié),第2行左移2字節(jié),第3行左移3字節(jié)。解密過程中的逆行移位是將前述的左移位變?yōu)橛乙莆?。加密過程中的輪密鑰加是將M1中的數(shù)據(jù)與128位密鑰進行逐位異或運算,也可以看成是字逐位異或的結(jié)果或者字節(jié)異或的結(jié)果。解密過程的輪密鑰加與之相同。
列混合運算是通過M1與固定矩陣相乘完成的,其加密計算公式如下。
在運算過程中應該注意矩陣元素的乘法和加法都是在基于GF(2^8)有限域內(nèi)的二元運算,并不是常規(guī)意義上的乘法與加法。在此有限域內(nèi),二元運算的加法等價于兩個字節(jié)的異或。以8位的二進制數(shù)為例,在有限域內(nèi)的乘十六進制數(shù)02等價于該二進制數(shù)左移1位,同時低位補0,如果高位溢出則還需要與二進制數(shù)00011011進行異或運算,如果未溢出則不必進行異或運算。在解密過程中的逆列混合計算與列混合計算方式相同,只是替換了固定矩陣,其計算式如下。
為了測試AES加密算法在電腦端與微處理器端的運行效果,將加密算法使用C語言進行編譯。如前所述,在進行AES加密以及解密運算之前需產(chǎn)生S盒以及各循環(huán)中輪密鑰加對應的密鑰,逆S盒產(chǎn)生方式與之類似。行移位、字節(jié)代換以及輪密鑰加運算代碼實現(xiàn)簡單,各功能代碼如下:
在AES加密過程中,由于列混合運算要求在有限域內(nèi)完成,其計算較為復雜,采用三層循環(huán)結(jié)構(gòu)實現(xiàn)其功能,代碼如下:
選取飛行參數(shù)記錄器一條記錄中的空速、俯仰角、橫滾角、航向角進行測試,假設(shè)此4個變量均為單精度浮點數(shù),分別取值為120.64、10.13、20.36和1.23。密鑰設(shè)定為十六進制數(shù):00112233445566778899AABBCCDDE EFF,測試結(jié)果如表1所示。
表1 飛行參數(shù)記錄器測試結(jié)果
同樣的,選取TI產(chǎn)MSP430系列微處理器進行前述步驟測試,亦可得到如表1所示的測試結(jié)果。測試表明,加密程序有效,加密后得到的十進制數(shù)與原始數(shù)據(jù)相差甚遠,無任何物理意義,經(jīng)解密后的十進制數(shù)據(jù)與原始數(shù)據(jù)相同。
文中提出一種基于AES加密理論的飛行參數(shù)記錄器的加密方法,明文經(jīng)過分塊、字節(jié)代換、行移位、列混合以及輪密鑰加等運算后得到相應的密文。加密與解密流程在電腦端與微處理器上均進行了測試,效果符合預期。工作人員在保護好密鑰的前提下,任何人在獲取密文后也難以進行破解,為飛行參數(shù)記錄器數(shù)據(jù)的安全性提供了強有力的保護措施,為后續(xù)推廣應用奠定了基礎(chǔ)。