APP下载

基于序列密码的北斗短报文加解密方法

2021-10-18鲁亚洲肖礼军向秋林

科技创新与应用 2021年29期
关键词:密文字符字节

鲁亚洲,肖礼军,年 维,向秋林

(贵阳永青仪电科技有限公司,贵州 贵阳550014)

1 项目应用背景

目前电力行业的数据通信主要依靠无线电台及通讯网络,而在偏远或复杂地形的位置难以实现全覆盖,北斗卫星导航系统(BeiDou Navigation Satellite System,BDS)是我国建立的拥有完全自主产权的全球卫星导航系统,具有导航定位、数据报文通信及标准授时等多项功能,是当前仅有的四大卫星导航系统之一。北斗卫星导航系统的建立从根本上改变了我国导航定位受制于人的局面,对于我们国家的经济发展以及国防现代化建设具有非同寻常的意义。

中国的卫星导航在卫星无线电测定业务(Radio De termination Satellite,RDSS)基础上起步,RDSS体制工作模式使用陈允芳院士提出的双星定位原理系统。在该系统中,用户无法通过与卫星直接通信进行距离测试、获取位置信息,需通过地面中心站联系导航定位卫星,地面中心站向用户发送询问信号,通过用户的应答实现。虽然需要一个额外的控制中心(Motor Control Center,MCC)进行用户终端与空间卫星之间的交互,但该体制通过用户应答的方式,获取定位以及距离的同时,也实现了向终端用户进行位置报告的功能,即北斗系统独有的短报文功能。因此北斗卫星导航系统RDSS同时具备定位和短报文通信功能,能够实行点对点通讯。

北斗卫星实现的短报文通信与无线电台及通讯网络相比,能够覆盖范围内的所有区域,没有通信盲区。同时基于卫星实现通信,更具有良好的远距离通信能力。随着北斗卫星导航系统覆盖亚太地区与全球服务的逐步实现,北斗短报文在交通运输、国土资源、卫星救援、海事通信等各个领域中应用越来越广泛。在实际救援中取得了重大成绩,在渔业方向因此获得救助的渔民超过了1万人。

2 国内外研究概况

2.1 北斗导航系统研究现状

我国的北斗卫星导航系统是其中唯一能够同时实现实时定位与简短报文通信的系统。北斗系统可为用户提供全天候高精度定位、精确授时与大范围、远距离实时短报文通信服务等。为改变卫星定位受制于人的状态,加强国防军事建设,促进国民经济发展,北斗卫星导航系统发展基于“三步走”的战略,计划从1994年到2020年分为三个发展阶段完成三代北斗系统。从2004年完成北斗一代空间段4颗静止轨道卫星(Geostationary Orbit Earth GEO)卫星组网开始,北斗卫星导航系统已经实现了从全国范围内到亚太地区的有源定位与短报文通信服务。于北京时间2018年12月27日,国务院新闻发布会宣布,北斗三号也正式开始提供全球服务。

北斗二代系统空间段中主要包含5颗GEO卫星、4颗中圆地球轨道卫星(Medium Earth Orbit,MEO)和5颗倾斜地球同步轨道卫星(Inclined Geo Synchronous orbit,IGSO)。由5颗静止轨道卫星GEO实现北斗短报文功能。从2000年北斗一代建设开始至2018年共发射12颗GEO,目前其中5颗已经退役,一颗在轨维护,2018年最新发送的一颗处于在轨测试阶段,现役短报文服务卫星是北斗二代中的5颗GEO卫星。北斗卫星包含的通信天线(Communication Antenna)主要用于实现短报文通信。

北斗短报文通信系统由于通信卫星位于静止轨道,所以仅需要两颗及以上卫星即可覆盖中国及周边地区。5颗GEO卫星均匀分布于亚太地区的赤道周围,分别定点于东经58.75度、84度、110.5度、140度和160度。在GEO卫星对应地球表面上,任意时刻看到的卫星位置都是相同的。北斗卫星的短报文通信功能允许用户与用户、用户与地面控制中心之间进行双向数据传输,整个系统由空间系统、地面控制中心及用户终端三部分组成。

北斗短报文传输过程中用户需传输的数据直接由终端机进行转发,没有进行安全加密措施,用户传输数据在用户、终端、卫星间的传递,均未采取任何安全加密措施,在北斗系统调制频率、信息传输格式等基本信息均未公开的情况下,这样的传输方式使得用户传输数据存在泄漏、篡改和被窃取的风险,具有安全隐患。为提供系统传输的安全性,保障用户数据安全性,本文设计采用序列密码加密机制对短报文系统中传输协议的部分内容进行算法加密操作,提高传输系统安全性的同时,保证加入加密后短报文系统的常规运行。

2.2 北斗短报文数据加密研究现状

国内部分研究人员针对导航系统数据提出了部分安全加密传输方式。上海交通大学的学生程翔等人基于北斗导航系统提出了数据安全加密方案,在这个过程中提供了导航信息来源认证、授权访问等安全状态服务。但所有信息进行相同操作,不具备足够的灵活性,使用公钥加密体制对整段导航信息进行加密计算负担大,针对越发小型化的终端而言开发成本也增大了。

3 数据传输结构

3.1 数据采集系统

电力数据采集系统主要由位移信号采集模块、沉降信号采集模块、应力信号采集模块、渗透压信号采集模块组成。位移信号采集模块,采集塔基地质位移信号并进行模数转换,发送包含位移信号的16进制字节流数据。沉降信号采集模块采集塔基地质沉降信号并进行模数转换,发送包含沉降信号的16进制字节流数据。应力信号采集模块,采集塔基钢筋混泥土中钢筋应力信号并进行模数转换,发送包含应力信号的16进制字节流数据。渗透压信号采集模块采集塔基地质地下水渗透压信号并进行模数转换,发送包含渗透压信号的16进制字节流数据。

3.2 数据处理传输系统结构

如图1所示,数据传输系统通过数据打包模块将收到的位移数据、沉降数据、应力数据、渗透压数据打包成4G数据包和北斗数据包;4G数据包和北斗数据包分别通过加密处理后经过通信切换模块选择4G网络或北斗网络进行发送。

图1 数据传输处理

4G数据包是大小小于1500字节的满足JSON标准的ASCII字符串,4G通信数据加密模块打包后的4G数据包进行加密获得加密4G数据包。加密4G数据包是使用对称加密算法,将原有的信息数据改变,由明文变成密文,加密4G数据包通过4G通信数据控制帧插入模块加上4G通信报文控制帧形成4G通信报文,以保证接收端可以正常收到4G加密数据包。4G通信报文是在加密4G数据包之前插入2字节固定帧头,4字节负载长度,负载长度指的是4G加密数据包字节数量;4G通信报文通过TCP数据打包模块打包成标准TCP通信报文帧送至互联网络上进行传输。

北斗数据包是大小小于1500的由ASCII字符串表示的16进制字节流,北斗数据包通过北斗通信数据加密模块加密成加密北斗数据包,加密北斗数据包使用对称加密算法,将原有的信息数据改变,由明文变成密文;加密北斗数据包通过北斗通信数据包模块分包成若干个大小为200字节的加密北斗数据包组;加密北斗数据包组在北斗通信数据控制字插入模块内被插入控制字,形成若干个北斗通信报文送至北斗网络中传输。北斗通信报文是在加密小包之前插入固定帧头,发信方ID,收信方地址,保密要求,回执标志,电文长度,在加密小包之后加入校验和,其中所述电文长度指的是加密小包的数据字节数量。

4 数据加解密技术

4.1 北斗短报文加密技术

北斗短报文是一个明文可读ASCII字符串,可表示为PT=PT1,PT2,PT3,……,PTn,其中n表示该北斗短报文的字符长度为n个字节,其中用PTi表示其中第i位明文字符,并且参数1≤i≤n。在所述北斗短报文明文中,所有字符均在北斗短报文协议有效字符集当中但不属于其中预留字符集,其中有效字符集可表示为C={C1,C2,……,Ce},其中e为有效字符集字符个数,C1到Ce其ASCII码值依次增大,C1的ASCII码值最小,Ce的ASCII码值最大;CR={CR1,CR2,…,CRf},其中f为预留字符集个数,有PTi∈C且PTiCR},在2017年9月29日发布的《道路运输车辆卫星定位系统北斗兼容卫星定位模块》第二部分中规定,北斗短报文通信有效字符共96个,其中预留字符8个,即e=96,f=8。

本文使用序列密码算法对北斗短报文明文中的每一个字节进行加密,加密步骤如图2所示,序列密码也称为流密码(Stream Cipher),它是对称密码算法的一种。序列密码具有实现简单、便于硬件实施、加解密处理速度快、没有或只有有限的错误传播等特点,因此在实际应用中,特别是专用或机密机构中保持着优势,典型的应用领域包括无线通信、外交通信。

图2

本文中根据北斗短文的长度n使用序列密码算法生成长度大于或等于北斗短报文字节长度的密钥流,密钥流表示为:KS=KS1,KS2,……KSi,……KSJ;其中J为加密密钥流的字节长度,并且J≥n,其中用KSi表示其中第i位密钥数据,本文将其称为子密钥。

利用密钥流对北斗短报文明文PT中的每一个字节进行加密,北斗短报文明文字符串PT中第i位的任意字符PTi,加密步骤为:

使用如下步骤加密循环对PTi进行加密:

(1)获取除数K,除数K满足1<(256/K)<96且K为整数,在本文中在K满足(256/K)<96时,K越小越好;

(2)对子密钥KSi运算,获取加密子密钥NKSi,NKSi=KSi/K,其中NKSi和KSi为整数,该运算用KSi除以除数K做取整操作;

(3)利用获取到的第i位加密子密钥NKSi与第i位的北斗短报文明文字符PTi生成暂定加密字符TCTi,具体方式为,将第i位加密子密钥NKSi和北斗短报文明文第i位字符PTi的ASCII码值相加得到加密ASCII码值TCTiA,若TCTiA>C96A时,TCTiA=KSi+PTiA-C96A+C1A-1,若TCTiA的值小于等于C96A,则TCTiA就使用该结果值,查询ASCII码表根据TCTiA值获取暂定加密字符TCTi,其中下标A表示该参数为该字符的ASCII码值;

(4)判断暂定加密字符TCTi是否属于北斗短报文有效字符集内,即TCTi满足TCTi∈C且TCTiCR;

(5)若暂定加密字符TCTi满足TCTi∈C且TCTiCR,则判定该字符为北斗短报文明文第i位明文字符PTi的加密字符CTi;

(6)若暂定加密字符TCTi不满足TCTi∈C且TCTiCR,则将暂定加密字符TCTi的ASCII码值TCTiA值在加上NKSi,得到的新值赋给TCTiA,若TCTiA>C96A时,TCTiA=TCTiA-C96A+C1A-1,若TCTiA的值小于等于C96A,则TCTiA就使用该结果值,根据新的TACiA查询ASCII码表获取新的暂定加密字符TCTi,之后重复步骤(4)。

在上述加密过程中,NKSi小于96的条件并且有效字符为96,因此该运算必定会得到一个加密字符TCTi满足条件TCTi∈C且TCTiCR,不存在加密失败的情况。

经过上述步骤1-6可得到任意第i位北斗短报文明文字符PTi所对应的密文字符CTi,经过n次循环,可将n位长度的北斗短报文明文PT转换成n位长度的北斗短报文密文CT,表示为CT=CT1,CT2,CT3,……,CTn后,其中用CTi表示其中第i位密文字符。对于任意的CTi都有CTi∈C且PTiCR}。

4.2 北斗短报文密文解密技术

获取北斗短报文密文后,根据待解密的北斗短报文密文长度n,使用序列密码算法生成长度大于或等于北斗短报文字节长度的密钥流,与加密参数一样,用KS表示密钥流,KSi表示其中第I位子密钥。

利用密钥流对北斗短报文密文CT中的每一个字节进行解密,对于北斗短报文密文字符串CT中的第i位的任意字符CTi,如图3所示,使用如下加密循环对CTi进行解密:

图3

(1)获取除数K,K与加密时使用的K值应相同;

(2)对子密钥KSi运算获取加密子密钥NKSi,NKSi=KSi/K,其中NKSi和KSi为整数,该运算用KSi除以除数K做取整操作;

(3)利用获取到的第i位加密子密钥NKSi与第i位的北斗短报文密文字符CTi生成暂定解密字符TPTi,具体方式如下,将北斗短报文密文第i位加密字符CTiA减去第i位加密子密钥NKSi得到解密TPTiA,若TPTiA小于C1A的值,TPTiA=C96-(C1-(CTi-NKSI))+1,若TPTiA大于C1A则TPTiA就使用该结果值,查询ASCII码表根据TPTiA值获取暂定解密字符TPTi;

(4)判断暂定解密字符TPTi是否属于北斗短报文有效字符集内,即TPTi满足TPTi∈C且TCTiCR;

(5)若暂定解密字符TPTi满足TPTi∈C且TCTiCR,则判定该字符为北斗短报文密文第i位密文字符CTi的解密字符PTi;

(6)若暂定解密字符TPTi满足TPTi∈C且TCTiCR,则将暂定解密字符TPTiA减去NKSi,得到的新值赋给TPTi,若TPTiA小于C1A的值,TPTiA=C96-(C1-TPTiA)+1,若TPTiA大于C1A则TPTiA就使用该结果值,根据新的TPTiA查询ASCII码表获取新的暂定解密字符TPTi,之后重复步骤(4)。

经过上述步骤1-6可得到任意第i位北斗短报文密文字符CTi所对应的明字符PTi,经过n次循环,可将n位长度的北斗短报文密文CT装换成n位长度的北斗短报文明文CT。

5 测试分析

为验证解密过程的可行性,本次测试采用长度为3的北斗短报文明文,北斗短报文表示为PT=0,A,o,北斗短报文明文中所有字符都满足关系{x|x∈C且xCR},所述该短报文明文不包含预留字符CR且所有字符都属于C,其中n=3,将该北斗短报文经过以下步骤进行加密:

(1)选用RC4算法获取密钥流,RC4是一种对称密码算法,它属于对称密码算法中的序列密码(streamcipher,也称为流密码),它是可变密钥长度,面向字节操作的流密码。具体过程为:先初始化状态向量S,之后初始密钥长度任意,对状态向量S进行置换操作,生成长度为北斗短报文PT长度为n的密钥流KS=KS1,KS2,……,KSn;对应长度为3的北斗短报文明文,生成长度为3的密钥流KS=03h,46h,3Fh;其中h代表该数据为16进制。

(2)利用密钥流KS将北斗短报文明文PT中的每一字节加密。

a.获取K值,在本次测试中K值取3;

b.对子密钥KSi运算获取加密子密钥NKSi,NKSi=KSi/3,其中NKSi和KSi为整数,该运算用KSi除以除数K做取整操作。如实施步骤2所示密钥,则NKS2=23,NKS3=21;

c.利用加密子密钥KSi和PTi生成加密字符CTi,在本实施中,如对明文字符PT2运算得到TCT2A=71,根据加密所述方法得到加密备选字符TCT2=‘X’,对明文字符PT3运算得到TCT3A=36,根据加密所述方法得到加密备选字符TCT3=‘$’;

d.在本次测试中暂定加密字符TCT2满足TCT2∈C且TCTiCR,北斗明文字符PT2所对应的密文字符为‘X’;

e.暂定加密字符TCT3不满足TCT3∈C且TCTiCR,按照加密方法重新生成加密字符,TCT3=‘9’。

根据上述加密方法,可得上述北斗短报文明文PT=0,A,n所对应的密文为CT=1,X,9。

上述步骤中生成的密文为CT=1,X,9,先对其进行解密:(1)获取与加密选用的RC4算法获取密钥流,生成长度为北斗短报文PT长度为3的密钥流KS=03h,46h,3Fh;(2)利用密钥流KS将北斗短报文明文CT中的每一字解密:a.获取K值,根据约定,K值与上述加密K值保持相同中取3;b.对子密钥KSi运算获取加密子密钥NKSi,NKSi=KSi/3,其中NKSi和KSi为整数,该运算用KSi除以除数K做取整操作。如实施步骤2所示密钥,则NKS2=23,NKS3=21;c.利用加密子密钥KSi和CTi生成明文字符PTi,在本实施中,如对密文字符CT2运算得到TPT2A=65,根据解密所述方法得到解密备选字符TPT2=‘A’,对密文字符CT3运算得到TPT3A=36,根据加密所述方法得到解密备选字符TCT3=‘$’;d.在上述实例中暂定解密字符TPT2满足TCT2∈C且TCTiCR,北斗明文字符PT2所对应的密文字符为‘A’;e.暂定解密字符TPT3不满足TCT3∈C且TCTiCR,按照解密方法所述的重新生成解密字符,TCT3=‘0’。

经过上述步骤解密后,可得上述北斗短报文密文CT=1,X,9所对应的明文为PT=0,A,o。

6 结束语

本文论述了基于序列密码的加解密的北斗短报文安全通信,本文设计的北斗短报文加解密方法,已经成功运用在北斗导航电力行业,对北斗的电力工程设备集成中,设备获取的电力行业电力信息数据具有稳定、安全可靠的特点,并为电力地理信息大数据应用分析研究做了铺垫。

猜你喜欢

密文字符字节
一种支持动态更新的可排名密文搜索方案
No.8 字节跳动将推出独立出口电商APP
基于模糊数学的通信网络密文信息差错恢复
基于网络报文流量的协议密文分析方法
论高级用字阶段汉字系统选择字符的几个原则
密钥共享下跨用户密文数据去重挖掘方法*
字符代表几
一种USB接口字符液晶控制器设计
图片轻松变身ASCⅡ艺术画
No.10 “字节跳动手机”要来了?