陳杰 熊曉將 陳亮亮 齊海銘
(中國空間技術研究院通信衛星事業部,北京 100094)
隨著我國通信衛星的出口,以東方紅四號平臺為代表的國產通信衛星逐漸邁向歐洲、美洲等成熟的運營商市場。成熟運營商對測控協議設計和運行管理提出了更為苛刻的要求,如衛星用戶對衛星測控系統的遙控功能應采用空間數據系統咨詢委員會(CCSDS)標準,同時要采用高級加密標準(AES)加密標準實現對遙控數據的安全保護。然而,國內衛星普遍采用脈沖編碼調制(PCM)遙控體制,加解密算法也是基于任務需求的專用算法,沒有基于某一個通用標準開展加解密系統設計。
隨著衛星復雜度和類型的增加,衛星任務的物理環境更為復雜,現行相關標準已無法完全支持新技術發展的要求,因此需要開展與CCSDS標準對標和國家相關標準制定的工作。而對于CCSDS安全協議標準,若有類似文獻[1]中的應用實例,即針對每種指令數據類型給出協議的任務配置數據及遙控流程,其易用性會大大提升。同時,隨著近些年CCSDS安全協議發展,目前CCSDS安全協議體系已較為完善,從總則[2]、協議[3]、算法[4]、密鑰管理[5]到擴展流程[6],已能夠全面支持衛星在軌應用。文獻[7]中對CCSDS空間數據鏈路安全協議[3]進行了詳細介紹,并且對該協議在國內空間任務中應用提出了若干建議,但對CCSDS空間數據鏈路安全協議的應用參考價值不大,無法指導安全協議系統的實際設計。文獻[8-9]中研究了加密認證算法應用于CCSDS分包遙控數據鏈路層的性能,并且基于OPNET仿真平臺,給出了性能分析,但僅僅給出了采用AES/SHA-256/GCM算法的數據加解密結果,同樣無法指導安全協議系統的實際設計。
本文針對國內衛星遙控數據安全保護和遙控體制國際化的需求,應用CCSDS空間數據鏈路安全協議,設計了一套遙控安全方案,并且針對該遙控安全方案給出了應用實例,針對該應用實例進行了定性仿真驗證分析,有助于CCSDS安全協議的應用和本地化,可為我國衛星遙控體制與國際接軌提供參考。
本文的遙控安全方案選擇在數據鏈路層實現數據保護機制,數據保護對象為傳送幀。由于數據鏈路層位于傳送層和信道編碼層之間,在數據鏈路層實施數據保護具有操作簡單的優點。因此,在安全協議的選擇上,本文遙控安全方案使用CCSDS空間數據鏈路安全協議[3]。在安全業務的選擇上,采用的安全業務為認證和加密認證,選用的算法為基于密文的消息認證碼(CMAC)[10]和Galois/計數器模式(GCM)[11],分別對應認證和加密認證業務。
空間數據鏈路安全協議的應用,重點在于其數據格式與算法的匹配。本文遙控安全方案選用CMAC和GCM分別作為認證和加密認證業務算法,針對這兩種安全業務的格式定制如圖1~3所示。表1為安全頭字段意義,對于認證業務,使用CMAC算法,在安全頭中不需要“初始向量”和“填充長度”數據域,因此安全頭長度為48 bit。安全尾(消息認證碼(MAC))的長度為128 bit。對加密認證業務使用GCM算法,通常采用簡單的加法計數器作為初始向量(IV),不需要設置單獨的防重放序列號,因此安全頭長度為112 bit。安全尾與認證業務的安全尾一致。

圖1 采用CMAC算法的安全頭Fig.1 Security header (CMAC algorithm)

圖2 安全尾Fig.2 Security trailer

圖3 采用GCM算法的安全頭Fig.3 Security header (GCM algorithm)
表1 安全頭字段意義
Table 1 Field meaning of security header

字段名稱字段意義SPI用于標志安全關聯(SA)的索引IV對于應用加密認證業務的系統而言,可作為計數器序列號包含防重放序列號,用于防重放攻擊填充長度算法處理中填充字節的總長度,為字節的整數倍
1.2.1 SA管理
SA的概念來自互聯網安全協議(IPSec),是2個應用IPSec系統(主機、路由器)間的一個單向邏輯連接,是安全策略的具象化和實例化,它給出了保護通信的具體細節。在空間通信應用中,需要對其進行修改,以適應空間通信的特點。在CCSDS空間數據鏈路安全協議[3]中指出,發送端和接收端都必須創建1個SA,在SA使用前將其和密鑰進行關聯,并激活密鑰。多個SA的參數可以在衛星發射前進行靜態定義。如果需要,SA的參數也可以動態創建,甚至在其他SA生效時也可以創建。SA間的激活狀態切換機制在應用層進行實現,協商SA參數屬于應用層的功能。
針對上述需求,本文遙控安全方案選用下述SA管理業務[6],實現SA的在軌管理工作。①啟動SA(SA Start):開始使用信道上特定的SA;②停止SA(SA Stop):停止使用信道上特定的SA;③密鑰更新(SA Rekey):在激活SA之前將密鑰與SA相關聯;④SA到期(SA Expire):將原密鑰與原SA去關聯;⑤新建SA(SA Create):根據業務用戶提供的參數初始化SA;⑥刪除SA(SA Delete):完整刪除1個SA;⑦設置防重放計數器(SA SetARC):根據業務用戶提供的值初始化SA的防重放序列號;⑧設置防重放窗口(SA SetARCW):根據業務用戶提供的值初始化SA的防重放窗口;⑨查詢SA狀態(SA Status):查詢SA當前狀態。
本文遙控安全方案選取SA的4種狀態,即無SA狀態(NULL)、未與密鑰關聯狀態(Unkeyed)、與密鑰關聯狀態(Keyed)及SA運行狀態(Operational)。從圖4中可以看到,通過SA管理指令,即可實現SA狀態的轉換,其中“設置防重放計數器”、“設置防重放窗口”、“查詢SA狀態”3項SA管理業務不會引起SA狀態的轉換。

圖4 安全關聯管理的狀態模型Fig.4 State model for security association management
1.2.2 算法管理
本文遙控安全方案采用的CMAC和GCM均為對稱密碼算法,即星地使用的密鑰相同。針對CMAC算法,對于一段需要被驗證的消息M,有2種操作,如圖5所示。AES-K是帶密鑰K的AES算法。消息M被分成M_1,M_2,…,M_n,除了M_n,前面每塊長度等于128 bit。最后一塊M_n的長度,不大于128 bit。K1是圖5(a)所用子密鑰;K2是圖5(b)所用子密鑰。K1和K2由子密鑰生成算法生成。如果輸入消息塊的尺寸等于128 bit的整數倍,最后的塊將和K1異或;否則,最后的塊將被填補10∧i(表示“1”后補i個“0”),使其長度等于128 bit,然后和K2異或。上述過程的結果將是最后加密操作的輸入。CMAC的輸出T(即安全尾)為整個輸入消息M提供了數據完整性。星上的解密過程就是將安全尾重算一遍,比較計算結果是否與收到的安全尾結果一致:一致,則通過驗證;否則,驗證無效。CMAC算法詳見文獻[10]。


圖5 CMAC算法流程
針對GCM算法,同樣需要將明文P按照128 bit分組,用n和u表示明文總長度為(n-1)×128+u,1≤u≤128。即明文由一系列的n組數據組成,最后一組數據長度為u,其他長度均為128 bit。這些明文數據塊記為P1,P2,P3,…,Pn-1,Pn。密文C的數據塊記為C1,C2,C3,…,Cn-1,Cn。Pn和Cn的長度均為u。附加鑒別數據A的數據塊記為A1,A2,…,Am-1,Am。Am長度為v,A總長度為(m-1)×128+v,1≤v≤128。這里附加鑒別數據的含義是需要用于進行認證但不需要進行加密的數據。CIPHK是帶密鑰K的AES算法。inc是遞增函數;J0為IV|0311,表示IV和0311(即31個“0”與1個“1”級聯組成的比特序列)級聯;MSBt為截取某序列最左邊t個比特的序列;[len(·)]64為返回64 bit的數據串長度;GCTRK和GHASHH為特殊函數,GCTRK表示AES計數器模式運算,GHASHH表示加密哈希函數運算,2個函數的定義詳見文獻[11]。
按照圖6(a)所示的流程,即可完成數據加密認證。按照圖6(b)所示的流程,即可完成數據的解密認證。比較計算得到的T′與收到的T的字符串:一致,通過驗證;否則,驗證無效。GCM算法詳見文獻[11]。


圖6 GCM算法流程
1.2.3 密鑰管理
本文遙控安全方案對密鑰進行分層控制[5],分為主密鑰和會話密鑰。其中,主密鑰為最高等級密鑰,一般在衛星發射前通過安全信道固化在衛星存儲器中。主密鑰又可進一步細化為密鑰加密密鑰,用于加密或加密認證會話密鑰,或者用于會話密鑰的生成,或者用于加密或加密認證指定的星上加解密單元指令和流程。會話密鑰,又稱為數據加密密鑰,為最低等級密鑰,用于保護衛星的通信信道,實現加密、認證或其他類型業務。
對于密鑰生命周期,選取如下4個狀態[12]。①預激活態(Pre-Activation):剛生成的密鑰應處于預激活態;②激活態(Active):進入激活態的密鑰應開始其工作生命周期;③去激活態(Deactivated):密鑰已處于其工作生命周期的終點,但未被毀壞;④毀壞態(Destroyed):密鑰已處于其工作生命周期的終點,且被毀壞。針對上述密鑰生命周期,采用如圖7所示的密鑰管理業務。

圖7 密鑰生命周期Fig.7 Cryptographic key lifecycle
實現密鑰生命周期的管理包括以下幾個方面。①無線密鑰更新(OTAR):將新會話密鑰從發起者安全傳送至接收者;②激活密鑰(Key Activation):激活通信兩端的密鑰,使密鑰處于激活態,可用于加解密操作;③去激活密鑰(Key Deactivation);去激活通信兩端的密鑰,使密鑰處于去激活態,不可用于加解密操作;④毀壞密鑰(Key Destruction):刪除通信兩端的密鑰;⑤密鑰認證(Key Verification):對接收端的處于激活態的會話密鑰進行認證。
本文遙控安全方案可由計算機和目標機搭建的驗證系統,基于典型應用場景進行驗證,其中計算機模擬地面站,目標機模擬目標衛星的遙控單元,各設備均配置本文設計的遙控安全協議。驗證系統配置3層密鑰進行控制,即主密鑰、密鑰加密密鑰和會話密鑰。其中:主密鑰用于傳送密鑰加密密鑰和應急恢復;密鑰加密密鑰用于傳送會話密鑰;會話密鑰用于上傳日常指令和數據。
驗證系統設置如下4個SA用于衛星在軌操作。①SA1:key用作主密鑰,采用加密認證業務,SPI為0x0001,MAP63;②SA2:key用作密鑰加密密鑰,采用加密認證業務,SPI為0x0002,MAP1;③SA3:key用作會話密鑰,采用認證業務,SPI為0x0003,MAP2;④SA4:key用作會話密鑰,采用認證業務,SPI為0x0004,MAP0。其中:SA1的所有信息存儲在目標機的Flash中;SA2~SA4的所有信息存儲或創建在目標機的靜態隨機存取存儲器(SRAM)中。另外,SA3用于數據注入,而SA4用于直接指令。
以上述驗證系統環境為基礎,設計主控計算機向目標機上注遙控指令的實例。這里考慮2種應用場景:①對衛星進行日常操作,包括數據上注和指令上注,對數據/指令認證后上傳衛星,見圖8;②對衛星進行應急操作,包括密鑰上注,對密鑰加密認證后上傳衛星,見圖9。

注:CRC為循環冗余校驗;M(X)為CRC編碼中輸入的數據塊,G(X)為生成多項式,L(X)為預置多項式。圖8 發送端遙控認證業務Fig.8 TC authentication operation of sending end

圖9 發送端遙控加密認證業務Fig.9 TC authenticated encryption operation of sending end
對于場景①,發送端的數據/指令流轉過程如下,接收端的數據/指令流轉過程相反。
(1)用戶數據/指令進行包封裝;
(2)根據用戶數據/指令類型選擇SA,按照本文設計的安全協議進行認證載荷封裝;
(3)將認證載荷及密鑰送入CMAC算法,得到安全尾;
(4)按照遙控數據鏈路協議進行傳送幀封裝;
(5)將傳送幀送入編碼子層進行BCH(63,56)編碼后,組成通信傳送單元(CLTU)送入物理層傳輸。
對于場景②,發送端的數據/指令流轉過程如下,接收端的數據/指令流轉過程相反。
(1)用戶數據/指令進行包封裝;
(2)根據用戶數據/指令類型選擇SA,按照本文設計的安全協議進行認證載荷封裝;
(3)將認證載荷、IV、加密載荷、密鑰送入GCM算法,得到密文和安全尾;
(4)按照遙控數據鏈路協議進行傳送幀封裝;
(5)將傳送幀送入編碼子層進行BCH(63,56)編碼后,組成CLTU送入物理層傳輸。
從上述2個應用場景的驗證中可以看到:本文遙控安全方案能夠實現衛星在軌正常操作和應急操作,同時具備衛星在軌安全關聯和密鑰管理能力。該方案側重于協議和功能的實現與驗證,但受限于當前驗證系統的資源和軟件實現的復雜度,還無法支持性能測試,因此僅從定性角度進行了驗證和分析,沒有定量試驗結果展示。
從本文遙控安全方案的應用效果來看,主要有以下優點。①通過SA管理,可以使遙控數據安全保護機制更為靈活,既可以建立不同SA與虛擬信道的關系,針對不同遙控數據實現不同的安全業務,又完全不影響原有數據的保護策略,可顯著提高遙控安全系統的靈活性、可擴展性。②利用密鑰分層結構,可以保護密鑰強度,延長密鑰生命周期;同時,也可實現密鑰在軌靈活管理,將更多的自主權交給衛星用戶,提升衛星的好用易用性。
在遙控體制與國際接軌的背景下,本文在調研CCSDS測控協議體系的基礎上,針對不同的遙控安全業務,分別設計了定制遙控幀格式、安全關聯、算法管理及密鑰管理業務,并在地面驗證系統中通過2個典型應用場景仿真驗證了該方案具備在軌保護遙控數據安全的可行性。后續將繼續完善地面驗證系統,并在地面驗證系統中進行定量仿真驗證分析,為我國測控體制與國際接軌提供支持。