岳 猛,鄒嘉旭,胡 玥,郭江鑫,薛佳萌,曾令金
(中國民航大學a.安全科學與工程學院;b.電子信息與自動化學院,天津 300300)
航空甚高頻(VHF, very high frequency)地面通信系統(tǒng)是航空器與地面控制中心進行信息交換的媒介,也是最重要的民航通信導航系統(tǒng)之一。飛機通信尋址與報告系統(tǒng)(ACARS,aircraft communicationaddressing and reporting system)是一種基于VHF 數(shù)據(jù)鏈的系統(tǒng)架構,其不僅使空地通訊擺脫了語音通信的局限,減輕了飛行員和地面人員的工作量,同時也保證了航空器和地面人員在雷達無法覆蓋地區(qū)的正常通信。ACARS技術經(jīng)過數(shù)十年的發(fā)展與完善,已被廣泛應用于氣象服務、位置報告、OOOI 狀態(tài)數(shù)據(jù)傳輸、發(fā)動機監(jiān)控等方面,成為航空器飛行安全的重要保障。
但ACARS 數(shù)據(jù)鏈本身存在安全方面的不足:報文的正文部分未經(jīng)過加密處理,若被截獲,專業(yè)人士經(jīng)過簡單處理便可獲知其中內(nèi)容;同時,由于缺少認證機制,導致通信雙方在空地通信過程中無法偵測到對報文的偽造、重放等攻擊。一旦ACARS 數(shù)據(jù)鏈被竊聽、篡改,將直接影響到飛行安全[1]。
使用傳統(tǒng)手段攻擊航空電子系統(tǒng)成本昂貴,所以空地數(shù)據(jù)鏈安全問題并未受到航空通信部門過多的重視。近年來,軟件定義無線電(SDR,software defined radio)技術的興起使得攻擊成本大幅度降低,數(shù)據(jù)鏈安全問題日益嚴峻。針對該問題:吳志軍等[2]提出在空地數(shù)據(jù)鏈中引入數(shù)字證書以解決實體認證問題;王劍等[3]提出使用國產(chǎn)分組密碼算法SM4 對ACARS 數(shù)據(jù)鏈報文正文部分進行加密;吳瀅等[4]在引入SM4 算法的基礎上,嘗試使用國產(chǎn)公鑰密碼算法SM2 對數(shù)據(jù)鏈正文進行非對稱加密,實驗結果表明,SM4 算法在加解密效率及載荷長度方面均顯著優(yōu)于SM2 算法。
由于單獨采用加密算法或認證方法均無法同時保證航空甚高頻通信的機密性、完整性和不可否認性,本研究將基于ACARS 數(shù)據(jù)鏈,以國產(chǎn)密碼算法為依托,在數(shù)據(jù)鏈報文處理的過程中引入對稱密碼算法、數(shù)字認證方法等密碼技術,從而提出一種使用國產(chǎn)密碼算法對航空甚高頻通信數(shù)據(jù)鏈進行完備的安全性優(yōu)化方案。該方案在不改變原有通信流程前提下可大幅提高航空甚高頻數(shù)據(jù)鏈安全性,保障了數(shù)據(jù)鏈安全服務的自主可控。
當前,ACARS 數(shù)據(jù)鏈多采用明文傳輸,數(shù)據(jù)泄露風險極大。一些航空公司為防止重要數(shù)據(jù)泄露,通常采用置換密碼等經(jīng)典密碼體制進行加密,但這種加密無法抵擋專業(yè)人士的攻擊。1974 年,IBM 公司提出DES 對稱密碼體制加密算法。對稱密碼體制具有密文載荷小等優(yōu)點,可在保持高加密效率的情況下,對于帶寬較為有限的ACARS 數(shù)據(jù)鏈具有非常高的可應用性。國家密碼管理局在2012 年發(fā)布了SM4 國產(chǎn)分組密碼標準,本研究將主要采用SM4 分組密碼對ACARS數(shù)據(jù)鏈進行加密。
考慮到ACARS 數(shù)據(jù)鏈傳輸速率低,不利于負載較大的信息傳輸,故需要對報文的正文部分降低載荷。
由于ACARS 數(shù)據(jù)鏈正文部分使用的字符采用美國信息交換標準代碼字符集(ASCII)低128 位中的非控制字符,且小寫英文字母并不常見于報文,因此,考慮將常用的64 個字符以6 bit 的形式進行負載轉(zhuǎn)碼[3],如表1 所示。經(jīng)過負載轉(zhuǎn)碼后,在保證ACARS 正文部分高可讀性的情況下,其有效載荷可降低25%。
表1 負載轉(zhuǎn)碼對照表Tab.1 Payload conversion set
SM4 分組密碼算法的分組長度為128 bit,即16 B,但經(jīng)過負載轉(zhuǎn)碼后的正文長度無法保證為16 B 的倍數(shù),為正常加密,還需要對其進行數(shù)據(jù)填充。
常用的數(shù)據(jù)填充算法包括ZeroPadding、PKCS7-Padding 以及PKCS5Padding 算法。鑒于ZeroPadding算法單純使用0 進行填充,當元數(shù)據(jù)尾部也為0 時,無法區(qū)分填充數(shù)據(jù),故不對該方法進行討論。
PKCS7Padding 算法對元數(shù)據(jù)按塊長度(block size)進行取模。當模為0 時,表示已經(jīng)對齊,需填充一段長度為塊長度,且每個字節(jié)均為該值的數(shù)據(jù);當模不為0 時,表示未對齊,需要填充一段長度為塊長度和模的差值,且每個字節(jié)均為該值的數(shù)據(jù)。這樣,在還原時就可以根據(jù)填充后數(shù)據(jù)的最后一個字節(jié)及該字節(jié)出現(xiàn)次數(shù)將元數(shù)據(jù)完整復現(xiàn)。
PKCS5Padding 算法是PKCS7Padding 算法的子集,塊大小固定為8 B,利用該算法即可將負載轉(zhuǎn)碼后的正文填充為適用于SM4 分組密碼算法的信息。
SM4 分組密碼算法是中國完全自主設計的分組對稱密碼算法,其密鑰長度和數(shù)據(jù)分組長度為16 B,密鑰擴展算法與加解密算法以字為單位,且采用32輪
非線性迭代進行運算。
1.3.1 參量產(chǎn)生
SM4 算法密鑰長度為128 bit,可表示為MK =(MK0,MK1,MK2,MK3),輪密鑰rk=(rk0,rk1,…,rk31)由密鑰擴展算法生成,需要系統(tǒng)參數(shù)FK=(FK0,F(xiàn)K1,F(xiàn)K2,F(xiàn)K3)和固定參數(shù)K=(CK0,CK1,…,CK31)參與運算。上述參數(shù)中,MKn和FKn(n=0,1,2,3)及rki和CKi(i=0,1,…,31)均為字,且字長均為32 bit。
1.3.2 輪函數(shù)F
輪函數(shù)F 可表示為
式中:Xi+4為每輪運算的輸出值和下一輪運算的輸入值;rki為第i 輪生成的輪密鑰;⊕符號為異或,其運算法則為p⊕q=(┐p∧q)∨(p∧┐q);T 為合成置換,由非線性變換τ 和線性變換L 復合形成,即T(·)=L(τ(·))。
非線性變換τ 中的S 盒是一種在分組密碼中用于置換運算的基本非線性結構,采用16 進制數(shù)據(jù)表示。由4 個并行的S 盒構成非線性變換,經(jīng)過非線性運算后的輸出值作為輸入值進入線性變換L,即
式中:B 為非線性變換τ 的輸出值;C 為B 經(jīng)過線性變換L 后的輸出值;<<為左移運算符,用于將一個數(shù)的各二進制位向左移若干位,經(jīng)過左移后,溢出的高位舍棄,空出的低位用0 填補。
1.3.3 密鑰擴展算法
根據(jù)已知的加密密鑰、系統(tǒng)參數(shù)和固定參數(shù)可生成輪密鑰rki,即
式中:Ki為中間參數(shù),初始參數(shù)(K0,K1,K2,K3)=(MK0⊕FK0,MK1⊕FK1,MK2⊕FK2,MK3⊕FK3)將其輸入到式(3)中進行32 次輪變換;T′將T 中的L 替換為L′,即
1.3.4 加解密算法
SM4 加密算法由32 輪迭代運算和1 次反序變換構成,其將明文按每組128 bit 進行分組,每組劃分為長度相等的4 部分,即X0,X1,X2,X3,并將其作為運算輸入。輸入明文是整數(shù)集,輸出密文(Y0,Y1,Y2,Y3)∈迭代運算由輪函數(shù)F完成;反序變換為最后一次迭代運算結果的逆序,可表示為
SM4 解密算法和加密算法具有相同的結構,逆向使用加密過程中的輪密鑰即可進行解密[5]。
ACARS 數(shù)據(jù)鏈由于缺少實體認證和消息認證的方式,無法檢測和抵擋數(shù)據(jù)偽造、數(shù)據(jù)重放及拒絕服務(DoS,denial of service)攻擊。將數(shù)字簽名和公鑰數(shù)字證書技術應用于數(shù)據(jù)鏈通信中,可在抵御上述攻擊的同時,還能保證數(shù)據(jù)鏈傳輸?shù)臋C密性、完整性和不可否認性,為空地通信安全提供有效保障。本研究將引入SM3 國產(chǎn)密碼雜湊算法以及SM2 國產(chǎn)橢圓曲線公鑰密碼算法實現(xiàn)ACARS 數(shù)據(jù)鏈的認證。
數(shù)字證書作為數(shù)字通信中標志各方身份信息的一種數(shù)字認證,是經(jīng)過可信證書頒發(fā)機構(CA,Certificate Authority)認證并使用該機構私鑰簽名生成的文件,其中包含了證書所有者的公鑰及相關信息。本研究使用的ACARS 數(shù)據(jù)鏈數(shù)字證書均遵循公鑰基礎設施(PKI,public key infrastructure)標準。
2.1.1 數(shù)字證書的頒發(fā)
數(shù)字證書申請過程如圖1 所示。
圖1 數(shù)字證書申請過程Fig.1 Application process of digital certificate
在建立ACARS 數(shù)據(jù)鏈會話之前,航空公司需要分別為地面站數(shù)據(jù)服務商(DSP,Datalink Service Provider)以及機載通信管理單元(CMU,communication management unit)設備生成密鑰對(私鑰和公鑰),并將航空公司實體信息、公鑰以及加密算法一起發(fā)送給CA以申請數(shù)字證書。
當CA 接收到申請請求后,會對請求信息進行審核。審核通過后,會根據(jù)公鑰和對應的實體信息制作符合X.509 標準的數(shù)字證書并返回給航空公司,同時將該數(shù)字證書及證書吊銷列表(CRL,certificate revocation list)一并存入證書庫中。航空公司收到CA 返回的數(shù)字證書后,開始監(jiān)聽地面和飛機以確認二者是否建立ACARS 數(shù)據(jù)鏈會話,一旦建立,航空公司便將私鑰和對方的數(shù)字證書分別發(fā)送給DSP 和CMU,便完成了數(shù)字證書頒發(fā)的整個流程。
2.1.2 數(shù)字證書的驗證
在航空公司傳送數(shù)字證書給雙方前,還要驗證證書是否仍然有效,需要進行以下幾個檢查步驟:①驗證證書中的CA 簽名是否正確;②驗證證書有效期并確定其是最新的;③根據(jù)數(shù)字證書擴展項中的CRL 地址,檢查證書是否被吊銷,或發(fā)送包含證書序列號的在線證書狀態(tài)請求包,以確認證書的有效性。
如果檢測均通過,可繼續(xù)建立空地安全會話;否則,航空公司將重復證書的頒發(fā)步驟。
當空地雙方均持有對方的有效數(shù)字證書后,意味著雙方已獲知對方的公鑰,利用非對稱密碼體制的特性,即可通過數(shù)字簽名構建安全會話。其中,上行報文簽名及驗證過程如圖2 所示,下行同理。
圖2 上行報文簽名及驗證過程Fig.2 Uplink message signature and verification process
2.2.1 生成簽名
使用SM2 算法生成簽名之前,需要進行預處理,即利用用戶身份標識ID、ID 比特長度ENTL,系統(tǒng)曲線參數(shù)a、b 身份標,基點xG、yG以及利用公鑰得出的xA、yA以獲取用戶的可辨別標識雜湊值,即
Z=SM3(ENTL‖ID‖a‖b‖xG‖yG‖xA‖xB),然后,經(jīng)過以下7 個步驟即可獲取消息M 的簽名:
(2)計算e=Hv(),其中e 為雜湊函數(shù)作用于M的輸出值,Hv是雜湊值長度為v 的密碼雜湊函數(shù),本研究使用v=256 bit 的SM3 密碼雜湊算法;
(3)產(chǎn)生隨機數(shù)k∈[1,n-1],其中n 為橢圓曲線基點G 的階,為素數(shù);
(4)計算(x1,y1)=kG,并將x1的數(shù)據(jù)類型轉(zhuǎn)化為整數(shù),其中x1和y1分別為首個橢圓曲線基點的橫坐標和縱坐標,由G 乘以隨機數(shù)k 獲得;
(5)計算第1 個整數(shù)r=(e+x1)mod n,若算得r=0 或r+k=0,則回到步驟(3),其中,r 為 中間變量;
(6)計算第2 個整數(shù)s=((1+d)-1·(k-r·d))mod n,若s=0,則回到步驟(3),其中,s 為 中間變量,d 是簽名者的私鑰;
(7)將計算得到的r 和s 轉(zhuǎn)化為字節(jié)串得(r,s),即為針對消息M 的簽名。
2.2.2 驗證簽名
驗證簽名需要以下6 個步驟:
(1)檢驗r∈[1,n-1]和s∈[1,n-1]是否成立,不成立則驗證失??;
(3)計算e=Hv(,Hv和生成簽名時一樣使用SM3密碼雜湊算法;
(4)將r 和s 轉(zhuǎn)化為整數(shù),并計算t=(r+s)mod n,若t=0,則驗證不通過,其中t 為中間參數(shù)。
(5)計算(x1,y1)=sG+tP,其中P 為簽名方公鑰;
(6)將x1轉(zhuǎn)化為整數(shù),并計算R=(e+x1)mod n,若R=r 條件成立,則通過驗證[6],其中R 為中間參數(shù)。
為驗證將上述內(nèi)容應用于空地數(shù)據(jù)鏈通信的合理性,本研究將對ACARS 數(shù)據(jù)鏈報文的加密和實體驗證進行軟硬件模擬,并針對有效載荷損失、報文處理效率和傳輸效率進行比對分析。
由于每次加密后的正文和對應的簽名值長度都存在差異,直接替換原有報文會導致無法區(qū)分兩部分內(nèi)容而導致驗證和解密失敗,所以需要重新設計ACARS數(shù)據(jù)鏈正文格式。ACARS 數(shù)據(jù)鏈正文限制在220 B內(nèi),單字節(jié)(8 bit)即可表示任意長度的正文,可使正文的前兩個字節(jié)分別存入加密后的數(shù)據(jù)長度和該數(shù)據(jù)對應的簽名值長度,從第3 個字節(jié)開始,存儲加密數(shù)據(jù)和簽名值。
根據(jù)ARINC 618[7]和ARINC 620[8]協(xié)議,當終端發(fā)送上行報文時,地面會將符合ARINC 620 規(guī)范的報文發(fā)送至DSP,DSP 將該報文轉(zhuǎn)化為ARINC 618 格式并發(fā)送至遠程地面接收站(RGS,remote ground station),并隨即向機載CMU 設備傳輸。下行報文傳輸是上行的逆過程[9]。
本實驗在該流程的基礎上,結合本研究所要達成的目標,對發(fā)送和接收過程進行相應改進,如圖3 所示,并據(jù)此構建了模擬環(huán)境。
圖3 模擬環(huán)境Fig.3 Simulation environment
軟件端模擬平臺使用Java 語言開發(fā),利用Swing框架搭建GUI 界面。整套實驗環(huán)境包含兩個獨立程序:地面站和機載CMU,通過TCP/IP 協(xié)議模擬報文的雙向傳輸。硬件端使用軟件定義無線電技術對報文進行調(diào)制解調(diào),并利用HackRF 設備進行模擬傳輸。
3.3.1 報文處理
在機載CMU 設備連接到DSP 之前,航空公司分別為CMU 和DSP 生成對應的密鑰對并申請數(shù)字證書,并確定雙方用于對稱加解密的密鑰,在建立地空數(shù)據(jù)鏈會話后分發(fā)給各設備。
處理原始報文時,首先,設備提取該報文有效載荷進行負載轉(zhuǎn)碼和填充,并通過SM4 分組密碼加密;其次,再利用私鑰對密文進行數(shù)字簽名得到簽名值;最后,按照3.1 節(jié)中所述格式整合成新的有效載荷進行原內(nèi)容替代。
當對方設備接收到報文后,首先從有效載荷提取出密文和簽名值進行驗證。如果驗證失敗,代表報文已遭到攻擊,直接拋棄該報文;如果驗證成功,根據(jù)建立會話時協(xié)議的對稱密鑰對密文進行解密并進行填充還原和轉(zhuǎn)碼還原,以得到原始明文。將以上過程進行簡化,可得報文處理流程如圖4 所示。
圖4 報文處理流程Fig.4 Message processing
3.3.2 可視化平臺實現(xiàn)
地面站包含了兩部分的模擬:航空公司和地面站DSP。航空公司可根據(jù)具體的地面站DSP 和CMU 設備信息進行證書申請,如圖5 所示。
圖5 模擬申請證書Fig.5 Simulation of certificate application
航空公司建立安全會話工作完成后,機載CMU設備即可和地面站DSP 進行連接和通信。發(fā)送方可以對待發(fā)送報文進行預覽如圖6 所示。接收方接收報文并將報文以ARINC620 協(xié)議規(guī)范的格式輸出,以方便終端用戶瀏覽關鍵信息,如圖7 所示。
圖6 報文預覽Fig.6 Message preview
圖7 報文接收及格式化輸出Fig.7 Message receiving and formatted output
當接收方檢測到報文被篡改或被重放時,彈出失敗警告,如圖8 所示,同時直接丟棄該報文。
圖8 驗證失敗警告Fig.8 Warning of validation failure
3.3.3 硬件模擬
在軟件模擬的基礎上,使用SDR 平臺模擬ACARS數(shù)據(jù)鏈報文的傳輸,基于GNU Radio的報文發(fā)送流程圖如圖9 所示。
圖9 報文發(fā)送流程圖Fig.9 Message transmission process
首先,讀取軟件生成的報文,由編碼器將該報文包裝成帶有標頭、訪問代碼以及前導數(shù)的數(shù)據(jù)包,并通過高斯最小頻移鍵控(GMSK,Gaussian filtered minimum shiftkeying)方式調(diào)制,通過HackRF 設備以131.450 MHz頻率將該數(shù)據(jù)包輸出。
報文接收是報文發(fā)送的逆過程,其流程如圖10所示。在通過GMSK 解調(diào)并解碼出數(shù)據(jù)后,以二進制存儲在文件中。由腳本對該二進制文件進行處理并得到ACARS 報文。經(jīng)過實體認證和解密,最后進行報文打印,報文內(nèi)容打印如圖11 所示。
圖10 報文接收的流程圖Fig.10 Message receiving process
圖11 報文內(nèi)容打印Fig.11 Printing message content
為了檢驗處理效率及經(jīng)過處理后的有效載荷損耗,對不同長度的報文正文進行多次測試。同時,引入公鑰加密算法進行比對,結果如表2 所示。
通過表2 可以看出,利用SM4 分組密碼進行加密時,當原始正文長度較短時,處理后的正文長度相對較大。隨著原始正文長度的增長,原始正文長度與處理后的正文長度差距逐漸縮小。當處理后的正文長度即將達到最大載荷(220 B)限制時,可承載的原始信息可達到190 B,損耗僅為13%。使用SM2 公鑰密碼算法對報文進行相同處理時,在原始載荷很短的情況下,處理后的數(shù)據(jù)也超過了正文長度限制,需拆分成多個報文進行傳輸,無法對單一報文的安全性起到保障性作用。
表2 效率測試Tab.2 Efficiency test
效率方面,對于不同長度的正文,其轉(zhuǎn)碼加密時間、簽名時間以及解密、轉(zhuǎn)碼時間較為穩(wěn)定,分別保持在0.216~0.236 s,0.002~0.003 s 和0.266~0.285 s,報文處理效率不會明顯降低。
綜合以上實驗分析,充分說明了相較于明文傳輸,將SM4 分組密碼算法和數(shù)字簽名技術引入ACARS 數(shù)據(jù)鏈,在可接受效率損失下,空地通信的安全性有了較大幅度提升。
本研究基于ACARS 報文對航空甚高頻數(shù)據(jù)鏈暴露出的安全性問題進行探究并提出相應的解決方案。通過引入國產(chǎn)商用密碼算法,保障了數(shù)據(jù)鏈安全通信服務的自主可控。在不改變原有數(shù)據(jù)鏈通信流程的情況下,應用對稱加密算法和數(shù)字認證技術處理有效載荷,大幅提高了航空甚高頻數(shù)據(jù)鏈的安全性,同時未造成系統(tǒng)效率的降低。
但是,本研究僅考慮了針對單報文的安全機制,對于ACARS 這種傳輸速率低的數(shù)據(jù)鏈,會給信道帶來巨大負擔。因此,所提出的技術還無法完全應用于航空甚高頻領域。下一步研究將提出一種基于安全套接字層協(xié)議的方法,即在建立信道前完成認證、協(xié)商操作,建立安全信道后可直接傳輸經(jīng)密鑰協(xié)商對稱加密后的密文,其長度和原始報文長度大致相同,可解決研究存在的不足。