SM4分组密码算法在RSSP-II铁路信号安全通信协议中的应用
2020-08-22王一民
左 林,刘 贞,王一民
(北京全路通信信号研究设计院集团有限公司,北京 100070)
1 RSSP-II安全通信协议简介
RSSP-II铁路安全通信协议规定了铁路信号安全设备之间通过封闭式网络或开放式网络进行安全相关信息交互的功能结构和协议,可广泛应用于高速铁路、城际铁路、城市轨道交通信号控制系统中。RSSP-II安全通信协议栈(以下简称协议栈)定义为一套跨平台、可移植、能实现RSSP-II安全通信协议功能的软件功能库[1-3],其安全等级为SIL4级。
协议栈采用分层结构,可分为安全层(Safety Function Module, SFM)、 非 安 全 层(Communication Function Module, CFM)。其中,非安全层不承担安全功能,主要实现协议栈与网络传输层(如TCP)之间的适配及冗余管理。安全层承担安全功能,处理经由非安全层传输的信息,并向应用提供可靠的信息。另外,为实现协议栈的可移植性,协议栈还提供了适配层,以适应不同的运行环境,如图1所示。
图1 协议栈分层结构示意图Fig.1 Protocol stack hierarchical structure diagram
根据EN 50159-2标准,对于一般的传输系统而言,所有可能的威胁包括重复、删除、插入、重排序、损坏、延迟和伪装。协议栈的安全层能对所有7种威胁提供全面的防护,例如通过添加序列号防护消息的重排序、删除、重复,通过三重时间戳(Triple Time Stamp, TTS)、执行周期(Execution Cycle, EC)等延迟防御技术防护消息的延迟,通过添加连接标识符(例如信源标识符和信宿标识符)防护消息的插入,通过加密解密技术防护消息的损坏和伪装等。
2 协议栈加密解密技术
近年来,信息安全受到越来越广泛的关注,加密解密技术成为研究的热门领域。目前,RSSP-II铁路安全通信协议标准规定的安全层加密解密技术具体做法是通过改进的三重DES(Triple Data Encryption Standard,3DES)算法对消息数据进行计算,进而得出8 Byte的消息验证码(Message Authentication Code, MAC),并将MAC添加至消息末尾,随消息一同传输[4-5]。当接收方收到消息时,根据消息数据再次计算出MAC,并与消息末尾附带的MAC进行比较。如果二者一致,则校验通过,如果二者不一致,则说明数据受到破坏,应进行相应的安全处理。
3DES算法源于数据加密标准(Data Encryption Standard, DES)。DES算法于 1977年成为美国联邦信息处理标准,是迄今为止世界上应用最为广泛和流行的一种分组加密算法。该算法的消息分组长度为64 bit,密钥长度为56 bit,通过初始置换、若干轮迭代运算和逆初始置换运算,最终得到密文。DES的解密和加密所使用的算法一样,但子密钥的使用顺序相反,调整子密钥的产生顺序就可实现DES算法的解密。
随着计算机技术的发展,计算机的处理能力显著提升,DES算法可在短时间内被破译,失去了加密的意义。因此,为了在现有设备上增强DES算法的健壮性,3DES算法被广泛采用。3DES算法的信息分组长度仍然是56 bit,但密钥长度是DES算法的3倍,达到168 bit。密钥长度的增加提高了破译难度,截止目前,3DES算法仍不能在短时间内被破译。
3 国产密码算法简介
虽然既有的3DES算法难以被破译,但仍存在以下两点不足。首先,安全层虽然通过3DES算法计算出消息数据的MAC并添加至消息末尾,但消息数据仍然以明文形式传输,容易被窃听。其次,3DES算法是国外提出的密码算法,其核心技术受制于人,加密技术中甚至可能会被放置后门,对国家安全构成严重威胁。
因此,采用国内自主研发的通讯加密算法对消息数据进行加密是十分必要的。这样不仅可以改变国内长期以来采用国际通用密码算法体系及相关标准的现状,从根本上摆脱对国外密码技术和产品的过度依赖,也能够实现信息安全自主可控,降低研发、维护等方面的成本,避免潜在的知识产权风险。
国产密码算法是经过国家密码局认定的国产商用密码算法,主要有SM2、SM3、SM4等算法,可分为非对称算法、哈希算法和对称算法等几类。其中,SM4分组密码算法是国内自主设计的分组对称密码算法,分组长度为128 bit,密钥长度也为128 bit。其加密算法与密钥扩展算法均采用非线性迭代结构,运算轮数均为32轮。数据解密和数据加密的算法结构相同,但是轮密钥的使用顺序相反,解密轮密钥是加密轮密钥的逆序[6-8]。
4 设计
为采用SM4分组密码算法替代协议栈既有的3DES算法,以计算消息数据的密文,软件设计的总体思路如下。
1)SM4分组密码算法与既有3DES算法共用非安全层和适配层,不改变协议栈的总体分层结构、定时器设计和调试设计,也不改变协议栈与应用软件之间的接口。
2)安全层增加独立的SM4分组密码算法模块,负责加密解密过程的具体实现,提供相应的接口。
3)安全层密钥管理模块增加SM4分组密码算法的配置接口函数,用户通过此接口函数将SM4分组密码算法的密钥提供给协议栈。密钥管理模块能对3DES算法的密钥和SM4分组密码算法的密钥进行管理,包括验证密钥的正确性、密钥是否过期等。
4)借鉴协议栈对3DES算法密钥的处理方式,在每次连接建立前,由连接双方各自产生一个4 Byte随机数并进行交互,利用该随机数和SM4分组密码算法,对SM4分组密码算法的密钥进行加密,使用加密后的密钥对用户数据进行加密和解密。
5)协议栈兼容3DES算法和SM4分组密码算法,针对两种算法做分支处理,根据连接发起方用户配置选择采用何种算法。如果选择采用SM4分组密码算法,协议栈数据格式如表1所示。
表1 采用SM4分组密码算法的协议栈数据格式Tab.1 Protocol stack data format using SM4 block cipher algorithm
除非安全层包头外,其他数据内容均使用SM4分组密码算法进行加密。用户数据明文由64位CRC加以保护,接收方收到密文并完成解密后,应对CRC进行校验。如校验失败,则丢弃数据,防护因传输误码等原因导致接收数据被改写的情形。由于SM4分组密码算法要求参与加密或者解密的数据分组长度必须是16 Byte的整数倍,因此数据末尾应根据数据长度相应补零。固定填写的0x7F指示数据结尾,用于接收方检查补零的数量。
由于连接发起方发送第一认证消息(AU1)时,尚未获取到连接响应方的随机数,因此AU1不加密,采用明文传输。另外,考虑到断开连接指示消息(DI)应被及时响应,因此DI消息也不加密,采用明文传输。
5 测试验证
为验证采用SM4分组密码算法后协议栈的功能,首先在PC机上进行了仿真测试。通信双方采用的密钥均为01 23 45 67 89 AB CD EF FE DC BA 98 76 54 32 10,发送方发送的明文数据也为01 23 45 67 89 AB CD EF FE DC BA 98 76 54 32 10。发送方的测试结果如图2所示,明文数据经过SM4分组密码算法加密,并添加了协议栈的包头之后,形成75 Byte的密文数据。
接收方的测试结果如图3所示,收到75 Byte的密文数据,再经过协议栈的解密处理,最终得到明文数据01 23 45 67 89 AB CD EF FE DC BA 98 76 54 32 10,与发送方发送的明文数据一致,证明SM4分组密码算法在安全通信协议中得到成功的运用。
此外,利用自主化自动列车防护系统(ATP)与自主化无线闭塞中心(RBC)进行了半实物验证。其中自主化RBC实物设备更新密钥配置文件和GSM-R单元软件,自主化ATP实物设备也更新密钥配置文件和RCC板程序,二者之间通信采用RSSP-II安全通信协议,使用SM4分组密码算法对数据进行加密解密。测试结果显示,RBC能够正常与车载ATP建立通信连接并控制列车运行,列车通过RBC管辖边界时也能顺利完成移交。
图2 发送方仿真测试结果Fig.2 Simulation test results of sender
图3 接收方仿真测试结果Fig.3 Simulation test results of receiver
6 结束语
提出采用中国国家标准SM4分组密码算法代替既有的3DES算法,应用于协议栈安全层,对传输数据进行加密和解密,并成功完成了仿真和半实物验证,可实现技术自主可控,并增强核心竞争力。未来,基于SM4分组密码算法的RSSP-II安全通信协议栈还将在CTCS-1级和CTCS-4级列控系统中得到更广泛的应用。