唐利锋,崔 阳,刘晓瑞,刘希红
(1.上海航天电子有限公司,上海 201821;2.中国科学院 微小卫星创新研究院,上海 201210)
在进行航天器的遥控系统设计以及任务实施过程中,星地通信链路安全保护尤为关键。由于空间链路具有开放传输网络属性,空间数据系统广泛存在被侦听、重传、伪造数据信息的安全隐患。为应对空间任务的安全需求,国际空间数据系统咨询委员会(Consultative Committee for Space Data Systems,CCSDS)提出了各类型航天任务的安全保证体系框架,开发定制了系列空间数据系统数据标准化文件[1-4]。
在实际应用中,军用航天任务执行过程一般包含高战略价值敏感信息的数据传输,安全需求等级较高。保护的措施包括:遥控数据加密、完整性判别、认证数据来源和授权访问。而对于民用航天任务,如商业通信卫星、气象卫星、遥感卫星等,一般只需要进行遥控数据完整性判别、数据来源认定。近年来,基于CCSDS 体制,发展了将不同密码学算法应用于分包遥控的加密认证的研究方向[5-8],但均停留在安全框架设计及算法性能分析与相互结果比较上,无法指导系统的工程设计。且对于单认证体制下的分包遥控系统详尽实施策略研究鲜有论文涉及。
本文针对单认证体制的分包遥控[9-10],对系统处理数据的流程进行分析。基于空间数据链路安全(Space Data Link Security,SDLS)协议,确定了的认证保护实施的范围,并对遥控数据传输控制进行了设计。考虑民商用航天器通信的安全需求以及认证算法的功能,设计运用了集成密码结构的增强型(Message Digest-5,MD5)算法对星载遥控通信进行认证保护,通过设计安全关联(Security Association,SA)管理机制,保证星载遥控认证保护工作的有效运行。
在CCSDS 分层模型中的数据链路协议层中,设计有一个额外的安全子层,作为一个功能实体,实现SDLS 协议,如图1 所示。SDLS 协议结合了相应的数据结构,在空间数据链路协议传送帧中,为基于字节的用户数据提供了认证/加密认证服务的标准方法。该协议可作为各型号航天任务空间链路数据通信的标准,减少了安全解决方案的重复设计,有助于通用商业化的开发实现。
图1 CCSDS 分层模型与SDLS 所处位置Fig.1 Location of SDLS in CCSDS layered model
当进行星地链路通信时,需要发送方与接收方统一数据保护模式、密码通信参数。SA 定义了单向信息传递、数据认证算法体制、数据完整性确认、重放攻击识别的服务。地面测控中心与航天器在进行安全通信前,预先确定SA,使SA 关联特定密钥及使用该密钥的虚拟信道(Virtual Channel,VC),并切换SA 状态至运行状态,实现SA 星地同步。VC 是一种按数据特性和传输要求使多数据源分享同一物理信道的传输控制及动态调度机制,通过帧头识别码进行标识。SA 一旦被定义,则用于认证的算法、参数及操作方式在SA 生存周期内保持不变。
SDLS 协议在“安全导头(Security Header)”和“安全尾部(Trailer)”之间封装传送帧的应用数据,“安全导头”和“尾部”包含了接收端用于消息验证的必要参数。“安全导头”和“安全尾部”的格式定义如图2 所示。其中,“安全导头”包含安全参数标志(Security Parameter Index,SPI)、初向量(Initialisation Vector,IV)、防重放序列号(Serial Number,SN)和填充块。“尾部”为验证码(Message Authentication Code,MAC)。除SPI 外,SDLS 中其他数据域为变长可选,其长度取决于SA 所设定的算法和功能。SPI 长度为2 byte,用于唯一标识传送帧所采用的SA。
图2 SDLS 协议中“安全导头”和“安全尾部”Fig.2 Security header and trailer in SDLS protocol
为了保证遥控数据的可靠传送,CCSDS设计了遥控通信操作程序(Communication Operation Procedure,COP)规约,实现发送端和接收端同步操作的闭环。其中在发送端执行的帧操作步骤称为帧操作程序(Frame Operation Procedure,FOP),其组织遥控帧发送队列;在接收端执行的帧接收及汇报机制称为帧接收和汇报机制(Frame Acceptance and Reporting Mechanism,FARM),FARM 识别接收到的数据帧结构中的“帧序列号”,是否匹配星上更新的帧序列计数,如果匹配,则接受并处理该数据帧,否则不予接收。同时FARM 经由星地遥测下行链路,定时通过命令链路控制字(Command Link Control Word,CLCW)[10]反馈接收状态信息。FOP识别CLCW 结构数据信息,若有遥控数据帧未被接受,则从FARM 所更新的帧序列号开始重新启动发送操作[11],上述过程形成一个完整的闭环,COP 闭环操作过程如图3 所示。COP 机制保证了遥控数据准确并且按序在有噪信道中传输。
图3 COP 过程Fig.3 COP process
为了数据保护机制能保护命令操作步骤中的COP 标志(AD 类型帧数据格式中的“通过标志”与“控制命令标志”),阻止敌方对上述标志发起攻击,引起服务拒绝,本文设计进行数据保护的范围如图4所示,对“帧头”域、“安全导头”域、“传送帧数据”域作为一个整体进行认证保护,认证输出的验证码填入“安全尾”域。
图4 基于SDLS 协议遥控传送帧及其保护范围Fig.4 TC frame format based on SDLS protocol and its protection scope
由于分包遥控系统中的COP 闭环机制与认证闭环机制之间相互独立,故在数据链路层开展认证操作时,认证重传循环内嵌COP 重传循环,可能引起COP 循环与认证循环发生冲突,造成通信的死锁[12-13]。所以本文在VC 帧业务与FARM 操作之间进行认证操作[14]。
地面控制侧,在数据链路层进行组帧,并按需求进行传输帧的认证,后输入至“FOP 帧传输控制模块”进行数据帧的传输控制。“FOP 帧传输控制模块”中建立遥控传输帧队列,并按照帧序列号进行先后排序。“FOP 帧传输控制模块”同时接收星上下传的帧安全报告(Frame Safety Report,FSR)与CLCW,其中通过FSR 判读星上传输帧的认证状态,而FSR 被包装为均匀等间隔“源包”,当收到FSR 时,按照帧序列号进行认证数据帧的重新传送。当收到定时CLCW,即判读星上帧接收状态,通过CLCW 中包含的当前接收帧序列号删除地面侧FOP 队列中已发送成功的帧。
星上侧,对接收到的遥控命令帧/数据帧进行认证后,通过FSR 向地面控制端汇报帧认证信息,仅有认证通过后,才将遥控帧传送至“FARM 帧传输控制模块”,“FARM 帧传输控制模块”发出反馈CLCW,汇报航天器终端的遥控帧接收状态,该CLCW 作为下行遥测帧的“操作控制域数据”,通过特定VC 定时下传。上述设计避免循环冲突引发的进程死锁,传输控制流程设计如图5 所示。
图5 传输控制流程设计Fig.5 Design of transmission control flow
遥控认证指令、认证数据的帧数据格式见表1。为有效进行SA 的管理,预防SA 运行过程中的操作丢失,设计两层SPI 结构见表2。
表1 遥控认证指令、认证数据帧格式Tab.1 Authentication command and authentication data frame format of TC
表2 层次SPI 结构模型Tab.2 Hierarchical structure model of SPI
“IV”设计为地面测控中心生成的随机数注入,用以扩大认证计算结果的非线性度,避免星载遥控在生命周期内,由于相同指令码/数据多次重复发送而带来的攻击。“SN”设计为“时间序列码段”,为防重放攻击所设计,由测控中心管理设备组织时间信息。格式见表3,星上判断每次上传的认证指令/数据帧中的“时间序列码段”,要求后一帧的“时间序列码段”必须大于前一帧的“时间序列码段”。如果后一帧的“时间序列码段”小于或者等于前一帧的“时间序列码段”,认为是重放攻击,遥控认证模块忽略该次遥控帧,并在下行遥测帧对应“重放”标识位中进行标示。
表3 时间序列格式设计Tab.3 Format of the time series bit
“MAC”为地面运控站使用认证算法计算输出的认证值,嵌入在传送帧中,传送给航天器。依据上节分析,认证运算区域设计为:帧主导头、安全导头、帧数据域、认证密钥。其中,“认证密钥”不参与传输,为星上预存。只有星上遥控认证软件计算的“MAC 值”与上传数据帧的“MAC 值”比对一致时,认证正确,该帧被接收。
不同航天器任务复杂度不同,星上信宿(分系统或设备)对星地链路数据传输的保护形式和要求不一样,数据保护算法的挂钩密钥也可能随时进行变更。对于长生命周期的航天器而言,切换个别信宿的数据保护模式及参数、星地密钥传输的保护并可靠管理等是亟需解决的问题。SA 管理机制的设计,可为解决上述问题提供了一套可靠方案。
设计通过将PDU[4]嵌入SDLS 协议中的数据域中,实现数据保护,用以覆盖SA 的管理要素,并且可以实现密钥管理的标识识别,地面站通过传递PDU 至航天器终端来实现星载SA 状态的动态切换。PDU 传递帧格式如图6 所示,其中,安全导头中SPI 取值为表2“层次SPI 结构模型”中的1 层中数值,对SDLS 协议数据单元进行传递。
图6 基于SDLS 的PDU 传递帧格式设计Fig.6 Format of PDU transfer frame based on SDLS
常态下,航天器内部预加载SA 及与其相关联密钥、数据保护认证算法(见表4),通过关联VC 的SA 启动命令以及SA 停止命令实现遥控数据的握手传递。
由于认证保护算法的强度要求,而定期对SA挂钩密钥进行更迭时,可通过SA 密钥关联/解关联PDU 命令予以实现,如图7 所示。在应急态下,当需要实现星地密钥传递,以及之后的密钥关联变更等需求时,通过表4 中的PDU 指令对SA 管理模式进行切换,如图8 所示。
表4 SA 管理PDU 定义Tab.4 PDU design for SA management
图7 SA 管理常态状态模型Fig.7 Normal state model of SA management
图8 SA 管理应急状态模型Fig.8 Emergency state model of SA management
对遥控数据保护控制的密钥结构进行两层设计,见表5。在航天器任务实施前,“主密钥”以及部分“会话密钥”预加载在星载可编程只读存储器(Programmable Read-Only Memory,PROM)中。常态下,考虑到认证算法保护强度要求,定期会对运行中的“会话密钥”进行“去活”处理,执行过程如图9 所示。当处于应急状态时,星地需要实现会话密钥的传递,则PDU 密钥上注指令、PDU 密钥激活指令被执行,执行过程如图10 所示,相关密钥管理PDU 定义见表6。
表6 密钥管理PDU 定义Tab.6 PDU design for key management
图9 密钥生存常态周期模型Fig.9 Normal cycle model of key life
图10 密钥生存应急周期模型Fig.10 Emergency cycle model of key life
表5 密钥结构模型Tab.5 Key structure model
航天器任务的性质决定了测控系统对通信保护强度的需求,涉及任务自身的保密要求和开展任务的周期。
某航天器测控系统具有如下典型要求:任务期内,要求敌方穷举攻击的成功概率不大于Pr,最小上行遥控帧的码长为L(含认证尾码),上行遥控码速率为Cr,任务周期为T,遥控认证尾码长设为N,则对所有遥控认证尾码完成一次穷举攻击所需时间为2N·L/Cr。假设在任务周期内敌方持续对该航天器进行穷举攻击,要满足其攻击的成功概率T·Cr/(2N·L)≤Pr,则消息认证尾码的长度应满足N≥log2(T·Cr/(Pr·L))[15]。当设计航天器寿命周期为10 a,遥控上行码速率为2 000 bit/s时,最小遥控帧长为440 bit。经理论计算,使其穷举攻击的成功概率≤10-28的消息认证码的长度设计至少为124 bit。本文设计消息认证码的长度为128 bit,穷举攻击的成功概率≤10-31。
需要注意的是,在工程实践中,普遍通过综合平衡任务的安全强度需求与为满足该需求所建立的系统软硬件开销,合理制定数据保护机制。事实上,由于星载遥控具有特定的协议格式,即便敌方对认证保护算法进行的穷举攻击,理论上能找到特定的碰撞实例,也基本无法被航天器识别且动作。
以Key 作为输入密钥,长度320 bit,M为输入帧信息(遥控帧主导头+安全导头+帧数据域)。
1)在Key 后面填充0,得到512 bit 的Key1。
2)将Key1 和掩码字符串(MASK1)进行异或运算得到Key_c1。其中,MASK1 的构成:遥控帧安全导头中初向量IV 前48 bit 重复10 次+初向量IV前32 bit,共512 bit。
3)将M与Key_c1 进行拼接,输入至MD5 算法模块进行运算,输出散列值HV,长度128 bit。
4)将Key1 和掩码字符串(MASK2)进行异或运算得到Key_c2。其中,MASK2 的构成:遥控帧安全导头中初向量IV 后48 bit 重复10 次+初向量IV 后32 bit,共512 bit。
5)把HV 与Key_c2 进行拼接,输入至MD5 算法模块再进行运算,输出散列值HV1,长度128 bit,作为最终的遥控认证码。其中,MD5 算法是一种密码散列函数,其主要步骤如下[16]:
步骤1数据填充及长度扩展。首先对输入数据块进行填充补位,满足最终位数对512 求模结果为448。实现过程为在数据块后填充长度为1 bit 的“1”,其后全部填充“0”。之后继续填充表示原始数据长度的64 bit 的长度值,至最终数据长度为512 的整数倍。
步骤2消息分组。以512 bit 为单位,将输入数据进行划分,形成数据块Block0,…,BlockN。将每一个数据块划分为16 个小组M0,…,M15,每个小组32 bit。
步骤3数据处理。将步骤2 中每个Block 数据块的处理过程划分为4 轮,每轮16 步,每步的执行如图11所示。其 中a、b、c、d为32 bit 链接变量并进行初值设置(初值记为A、B、C、D);Mj为上述Block 数据块中划分的数据小组,32 bit 数据;ti(i=0,1,…,16)为设定的 不同的常 量;操作函数(Round1、Round2、Round3、Round4)分别由“与”“或”“非”逻辑组成的逻辑函数,第1 轮采用Round1函数、第2 轮采用Round2函数、第3 轮采用Round3函数、第4 轮采用Round4函数,≪k为循环左移k位。
图11 MD5 的一个执行过程Fig.11 An execution process of MD5
经过64 步处理后的a、b、c、d链接变量再与初始设定值(A、B、C、D)进行逻辑加,最终得到新的链接变量值,该链接变量继续作为下一个Block 数据块处理的初始链接变量,依次计算,当所有数据处理完成,将最终得到的链接变量进行顺序级联并输出,即为MD5 计算模块的输出值。
4 轮操作如下:
以下是每轮操作中用到的4 个非线性函数(每轮1 个):
式中:“⊕”为“异或运算”;“V”为“或运算”;“^”为“与运算”;“-”为“取反运算”。
某卫星综合电子的遥控认证系统采用上述方案,其地面侧基本认证业务流程如图12 所示,星上侧流程相反。硬件平台基于反熔丝FPGA(现场可编程门阵列,使用AX2000)+PROM(用于预存密钥)。实现了SA 管理调度、密钥管理调度、遥控指令/数据的认证保护,具备重放鉴别、认证错误鉴别功能,程序算法的核心参数见表7,相关测试性能见表8。
表7 AX2000 平台算法核心参数Tab.7 Core parameters of the algorithm running on the AX2000 platform
表8 试验性能表Tab.8 Test performance table
图12 上行遥控认证业务流程Fig.12 TC authentication business process
本文基于CCSDS 分包遥控系统的层次结构、SDLS 协议模式,设计了遥控认证帧格式结构、保护范围。同时,针对上行遥控的认证保护机制与CCSDS 空间遥控链路COP-1 传输控制协议之间存在“闭锁”风险,设计了COP 传送控制流程。此外,对SA 结构和运行管理机制进行了设计,对密钥结构和运行管理机制进行了设计,运用了集成密钥结构的增强型MD5 算法对星载遥控认证保护进行了算法实现。上述方案具备遥控数据完整性鉴别、来源合法性鉴别、防“重放攻击”、防“流量分析”攻击等性能,可实现“认证算法的动态维护”“密钥生存控制”“认证参数的星地维护”等功能,满足民用航天器遥控单认证体制的任务需要。