APP下载

基于SM9标识密码的北斗安全传输协议研究

2020-04-02吴克河陈鸿祥

计算机与现代化 2020年2期
关键词:分包报文密钥

吴克河,陈鸿祥,李 为

(华北电力大学控制与计算机工程学院,北京 102206)

0 引 言

北斗卫星导航系统是中国正在研究与完善的继GPS和格洛纳斯之后的精准的全球卫星定位系统[1]。截止到目前已成功发射46颗北斗卫星,预计至2020年底全面完成北斗三号系统建设,全面建成后,北斗三号系统将实现全球短报文通信、国际搜救,以及覆盖中国和周边地区的星基增强和精密单点定位服务能力,空间信号精度将优于0.5 m。北斗系统已广泛应用于车辆运输、电力安全、农林渔业、水文监测等领域。我国已经建成包括620万辆营运车辆、3万辆邮政和快递车辆、2900余座海上导航设施在内的车辆监测管理系统[2]。对于北斗的广泛应用,在通信导航中通信安全极为重要,为此需要设计一种确保北斗数据安全传输的安全协议。

此次采用的是SM9标识密码非对称加密算法,非对称加密算法使用时通信双方的密钥都不一样,密钥便于管理,数据的保密性和数据的完整性得以保障。

1 关键技术

1.1 国密算法

国密算法因为其安全性和难以破解性,应用于各个涉密行业,其中SM1应用于硬件级对称加解密,SM2和SM9主要用于身份认证与密钥协商认证和非对称数据加密,2种算法中均用到了SM3杂凑算法。

1.1.1 SM2椭圆曲线非对称算法

SM2为非对称加密,基于ECC。该算法已公开。由于该算法基于ECC,故其签名速度与密钥生成速度都快于RSA[3-6]。

1.1.2 SM3杂凑算法

SM3是一种哈希算法,其算法本质是给数据加一个固定长度的指纹,这个固定指纹长度为256 bit,用于密码应用中的数字签名和验证、消息认证码的生成与验证以及随机数的生成[7-8]。

1.1.3 SM9标识密码算法

SM9标识密码将设备的标识作为公钥,省略了交换数字证书和公钥过程,使得安全系统变得易于部署和管理[9]。

1.2 北斗通信特点

北斗通信容量大小有限制,民用通信报文长度控制在78.5 Byte以内,即较长的数据包传输需要分包[10]。

北斗传输频率为单卡每分钟传输一次,在业务频繁的情况下,一般采用多卡。

北斗系统最大的特色在于有源定位和全覆盖通信服务,有利于偏远地区无4G信号地区的数据传输[11]。

2 安全通信协议

2.1 通用结构

密钥协商和数据加密等过程的数据帧通用结构如表1所示。

表1 数据帧通用格式

名称长度/Byte说明报文类型1表示数据通信子类型1表示具体设备发送报文总长度1报文内容总长度设备ID4设备的唯一标识校验字节11对数据进行逐个字节异或操作结果,用于检测解密后数据的验证校验字节21对加密数据进行逐个字节异或操作结果,用于检测解密前数据的验证数据长度1实际报文真实长度数据包类型1数据包类型(0:单包;1:分包1;2:分包2…)报文内容n加密数据

2.2 分包机制

由于北斗传输一帧有最大长度78 Byte限制[12],而加密算法用到的SM1报文最大长度要控制在64 Byte以内,且长度要为16的倍数,不足部分就要进行填充,在业务报文传输过程中,发送方业务报文长度大于64 Byte时,就需要将业务报文进行分包处理,分包序号按分包1、分包2以此类推。由于北斗短报文通信缺少通信回执,发送频率1分钟一次,若采用TCP/IP传输模式设定重传机制,必定会占用业务发送频道导致业务发送出错,所以本文采用北斗多卡机传输,每个数据包发送2次,最大程度保证数据的完整性,接收方根据报文总长度计算数据包的数量,只有接收到数据包类型从1到总数量的数据包才可进行组包并解密上传解析,如图1所示。

图1 发送流程图

2.3 通信流程

安全通信协议主要有2个通信流程,分别是身份认证密钥协商和加密通信流程。首先要确认北斗通信信号是否满足正常使用强度,若满足,双方就进行相应的身份识别和密钥传输对换,双方通过验证签名成功和密钥对换得到通信的加密密钥。如果在身份认证密钥交换协商流程中出现不满足条件的情况,此次协商流程应该退出,整个安全通信协议的通信流程如图2所示。

图2 安全通信协议的通信流程

2.3.1 身份认证密钥交换协商

该安全通信协议可以选择双方唯一设备标识密码和由KGC产生的私钥进行多次信息传输,生成一个双方承认的安全密钥。该安全密钥可作为协商通过后的加密通信的加密密钥[13-15]。以下步骤中图和文字中出现的符号说明见表2。

表2 安全通信协议符号说明

符号说明KDF(Z,klen)生成会话密钥Ks签名主私钥Ppub-s签名主公钥dsX设备X签名私钥Ke加密主私钥Ppub-e加密主公钥deX设备X加密私钥IDX设备X的IDRx加法循环群中的元素SX(Y)用X对Y进行SM9算法的签名运算EX(Y)9用X对Y进行SM9算法的加密运算EX(Y)1用X对Y进行SM1算法的加密运算

身份识别与密钥交换协商的传输流程如图3所示。

图3 身份认证与密钥协商

设设备A和B协商获得密钥数据的长度为klen比特,主动(发起)方为设备A,从动(响应)方为设备B[16]。要使设备A和设备B同步产生相同的会话密钥。

密钥交换协商步骤:

Step1对RA进行SM3算法的杂凑值计算,并将结果使用dsA作为签名私钥进行SM9算法的签名运算,生成A=SdsA(H(RA)),将A发送到设备B。

Step2使用deA作为加密密钥,通过SM9算法加密随机数RA,生成B=EdeA(RA)9,将B发送到设备B。

Step3设备B对接收的数据A使用IDA进行SM9算法非对称解密操作得到明文的随机数RA并用B通过SM9算法的验签操作验证设备A产生的随机数RA和设备A的身份。之后设备B产生随机数RB,对RB进行SM3算法的杂凑值计算[18],并将结果进行SM9算法的签名运算,生成C=SdsB(H(RB)),将C发送到设备A。

Step4使用deB作为加密密钥,通过SM9算法加密随机数RB,生成D=EdeB(RB),将D发送到设备A。

Step5验证RA属于G1是否成立,若不成立则协商失败;若成立,计算SKB=KDF(IDA‖IDB‖RA‖RB‖e(RA, deB)‖e(Ppub_e,P2)RA‖e(RA, deB)RA, klen),并将SKB发送给设备A。

Step6设备A对接收的数据B使用IDB进行SM9算法非对称解密操作得到明文的随机数RB并用D通过SM9算法的验签操作验证设备B产生的随机数RB和设备B的身份[19]。同时计算SKA=KDF(IDA‖IDB‖RA‖RB‖e(Ppub_e,P2)RB‖e(RB, deA)‖e(RB, deA)RB, klen),判断SKA是否与SKB相同,如果相同,则发送SKA到设备B,否则协商失败。

Step7设备B判断SKB是否与SKA相同,若相同,则身份认证与密钥协商完成。

密钥协商过程完成后,设备A和设备B都识别了对方身份,并拥有相同的会话密钥,后续的业务通信的加密密钥就可以使用上述所得到的会话密钥,相比于使用SM2完成协商认证,SM9不需要在通信中使用双方证书的传递,减少非业务报文对北斗发送频率的影响,大大提高北斗协商认证效率。

2.3.2 加密通信

由2.3.1节身份认证与密钥协商得到会话密钥SKA(SKB),之后业务通信使用SM1对称加密算法,通过硬件级芯片对数据进行加密,加密流程如图4所示。

图4 加密流程

身份认证与密钥协商生成会话密钥后,加密流程分为3步:

Step1设备A将要发送的DATA_A检查数据长度是否为16的倍数,若不是将它的数据长度填充为16的倍数,DATA_A使用SKA作为加密密钥使用SM1加密,生成ESKA(DATA_A)1,加密成功后检查数据长度是否大于64 Byte,如果是,则进行分包处理,并发送。如果不是,直接发送。

Step2设备B接收到设备A发来的数据,先根据包类型判断是否有分包,如果有分包,则等待所有包到达并组成原始数据帧格式,使用SM1进行解密,如果没有,直接进行解密,并进行数据完整性校验,如果失败,则舍弃该数据并消除会话密钥,要求重新协商。如果成功,设备B将要发送的DATA_B检查数据长度是否为16的倍数,若不是将它的数据长度填充为16的倍数,DATA_B使用SKB作为加密密钥使用SM1加密,生成ESKB(DATA_B)1,加密成功后检查数据长度是否大于64 Byte,如果是,则进行分包处理,并发送。如果不是,直接发送。

Step3设备A接收到设备B发来的数据,先根据包类型判断是否有分包,如果有分包,则等待所有包到达并组成原始数据帧格式,使用SM1进行解密,如果没有,直接进行解密,并进行数据完整性校验,如果失败,则舍弃该数据并消除会话密钥,要求重新协商。如果成功,则整个加密流程成功。

在整个业务报文传输过程中一直重复以上3个步骤,保证设备A与设备B的北斗数据安全传输。

2.4 协议分析

本文设计的为一种采用无证书型密钥协商方式的安全通信协议,使用SM9标识密码通过双方唯一标识ID来实现通信双方的双向身份认证。

1)相比于用SM2完成协商认证,SM9不需要在通信中使用双方证书的传递,减少非业务报文对北斗发送频率的影响,大大提高北斗多模块与网关之间协商认证效率。

2)拥有基于SM9标志密码提供的强身份认证以及对等鉴别功能[20-25]。

3)利用SM3杂凑算法对数据进行处理,保证了数据的完整性。

4)数据通信采用SM1对称加密算法在加密芯片上实现硬件级加密,保证数据的保密性。

5)采用分包机制保证传输数据的长度符合北斗传输的规定,最大程度地保证数据传输过程中的安全性。

3 测试与验证

本实验应用层的仿真在Linux 64位操作系统的CLion开发平台下,采用C语言实现本文提出的基于SM9标识密码的北斗安全传输协议。

3.1 测试拓扑

该测试由于有分包以及身份认证和密钥协商,对北斗频率要求比较高,所以设备2侧都采用北斗多卡机(4卡)来保证业务通信的正常。测试拓扑如图5所示。

图5 测试拓扑

3.2 结果与展示

模拟设备A与设备B通信协商分别如图6和图7所示。

图6 设备A通信结果

图7 设备B通信结果

设备A生成:

RA:(0x7C 0xBA 0x5B 0x19 0x06 0x9E 0xE6 0x6A 0xA7 0x9D 0x49 0x04 0x13 0xD1 0x18 0x46 0xB9 0xBA 0x76 0xDD 0x22 0x56 0x7F 0x80 0x9C 0xF2 0x3B 0x6D 0x96 0x4B 0xB2 0x65, 0xA9 0x76 0x0C 0x99 0xCB 0x6F 0x70 0x63 0x43 0xFE 0xD0 0x56 0x37 0x08 0x58 0x64 0x95 0x8D 0x6C 0x90 0x90 0x2A 0xBA 0x7D 0x40 0x5F 0xBE 0xDF 0x7B 0x78 0x15 0x99)

设备B生成:

RB:(0x86 0x1E 0x91 0x48 0x5F 0xB7 0x62 0x3D 0x27 0x94 0xF4 0x95 0x03 0x1A 0x35 0x59 0x8B 0x49 0x3B 0xD4 0x5B 0xE3 0x78 0x13 0xAB 0xC7 0x10 0xFC 0xC1 0xF3 0x44 0x820x32 0xD9 0x06 0xA4 0x69 0xEB 0xC1 0x21 0x6A 0x80 0x2A 0x70 0x52 0xD5 0x61 0x7C 0xD4 0x30 0xFB 0x56 0xFB 0xA7 0x29 0xD4 0x1D 0x9B 0xD6 0x68 0xE9 0xEB 0x96 0x00)

然后进行身份认证和密钥协商,得到会话密钥:

SKA=SKB=0xC5 0xC1 0x3A 0x8F 0x59 0xA9 0x7C 0xDE 0xAE 0x64 0xF1 0x6A 0x22 0x72 0xA9 0xE7

得到会话密钥后,设备A的DATA_A,长度为126,进行分包(包1长度为64,包2长度为62),由于包2长度不满64,在后面进行0x08 0x00的报文填充,并用SKA进行SM1加密发送。

设备B得到密文且得到分组的2个包,进行包重组并用SKB进行SM1解密,得到原始数据DATA_A。设备B的DATA_B长度为36,长度不满64,进行报文填充,并用SKB进行SM1加密发送。

设备A得到密文,用SKA进行SM1解密,得到原始数据DATA_B。

3.3 运行分析

北斗通信中通信频次的考虑极为重要,此次采用北斗4卡机,频次应为15 s/次,在多终端应用中,网关频次占用过多,会导致一些终端长时间处于协商过程中,发生业务故障,该协议采用SM9标识密码算法相较于采用SM2协商认证的北斗通信,每次协商过程中会减少2次各自证书的传递,大大减少了未认证终端的数量,在提高业务通信成功率的同时保证了数据安全完整。

4 结束语

本文主要介绍了国密算法,针对北斗通信的特点设计了一种安全可靠的加密通信协议,论述了SM9标识密码算法在北斗安全通信中的优势,为北斗通信中多个设备协商认证、加密传输提供了安全可靠的思路,同时保证了业务报文信息的真实性和不可抵赖性。

猜你喜欢

分包报文密钥
基于J1939 协议多包报文的时序研究及应用
幻中邂逅之金色密钥
密码系统中密钥的状态与保护*
CTCS-2级报文数据管理需求分析和实现
浅析反驳类报文要点
TPM 2.0密钥迁移协议研究
如何加强施工分包安全管理
一种对称密钥的密钥管理方法及系统
建筑业劳务分包制研究:现状及其展望
ATS与列车通信报文分析