窄带无线通信网络中协议控制的安全加固技术研究*

2020-06-08 10:09:32雷文虎户江民王均春谭淇文蒋元兵康宗绪
通信技术 2020年5期
关键词:压缩算法码字报文

雷文虎,户江民,王均春,谭淇文,蒋元兵,康宗绪

(1.重庆金美通信有限责任公司,重庆400030;2.中国人民解放军31006 部队,北京 100036)

0 引 言

在窄带无线通信网络中,通信节点之间主要使用微波、卫星、电台等窄带宽无线链路进行节点间互联;节点之间利用OSPF 协议、EIGRP 协议等交互路由;网管系统采用SNMPv2 协议对通信节点进行管理控制;上层业务系统基于通信网络提供的IP通道完成端到端的业务传输。

由于无线信道的开放性,虽然通信网络采用了各种无线信道加密手段,仍然存在信息泄密和被窃取的风险。因此,业务系统的报文在端到端传输前后一般都会在信源和信宿的应用层进行压缩和加密等处理,以保障报文的传输效率及安全性。

对于通信网络本身,当网络规模较大或者路由表数量较多时,网络内部会产生大量的协议控制报文。对于EIGRP 协议来说,标准的EIGRP 协议报文的内容部分一般采用TLV 格式封装,特别是其UPDATE 报文和QUERY 报文,这导致报文内容的重复度较高。对于OSPF 协议来说,标准的OSPF协议报文的内容部分主要也采用TLV 格式封装,特别是其DD 报文和LSU 报文,同样导致报文内容的重复度较高。此外,EIGRP 协议和OSPF 协议一般都采用明文方式传输,即便启用了MD5 验证功能,也只能增加信息交换的安全性,无法实现信息保密,同时会增加报文长度。利用网管系统对通信节点进行管理时,也会产生大量的SNMP 报文,在搜索网络拓扑和查询通信节点的路由表信息等操作时尤为明显;SNMP 报文的数据部分采用BER 编码规则进行封装,同样导致其内容重复度较高;某些查询设备基础信息的SNMP 报文甚至因为长度过长从而导致在超短波电台信道上传输失败。

针对上述问题,对窄带无线通信网络的协议控制报文的数据部分采用压缩和加密等技术处理,缩减报文长度,降低报文对无线信道的带宽占用,实现协议控制报文的安全加固,提升网络安全保密能力,具有较强的实用意义。

1 数据压缩技术

数据压缩技术[1]就是减少用于存储和传输信息的位的数目。数据压缩技术按照压缩前后信息量划分为无损数据压缩和有损数据压缩。无损压缩没有信息丢失,可根据压缩后的数据完全的恢复原来数据,它是一个可逆过程;有损数据压缩是在保真情形下移除数据的压缩编码技术,压缩后的数据不能完全的恢复为原来数据,它是一个不可逆过程。网络中传输的协议报文经过压缩和解压缩之后必须完全重现,需要采用无损压缩技术。常用的无损压缩方法有:时间编码(如游程编码)、哈夫曼编码、算术编码、基于字典编码(以LZ 码为代表)、Rice 算法等。本文选取基于字典编码的LZW 算法和LZJH 算法进行数据压缩处理。

1.1 LZW 压缩算法

LZW(Lempel-Ziv-Welch)压缩算法[2]由Terry Welch 在1984 年开发,是一种非常著名、基于字典的串表式无损压缩算法,支持流式解压缩,可以根据内存大小选择合适的最大字典串长。LZW 在压缩和解压缩阶段字典都是自动生成的,它不需要对数据源进行分析或者传输额外信息给解压方,因此压缩和解压缩不会产生大量的计算代价。

LZW 压缩算法的基本思想是建立一个串表,将输入字符串映射成定长的码字输出,通常码长设置为12 bit,也可设置为其它相应的长度。串表具有“前缀性”:假设任何一个字符串Str 和某一个字符C组成一个字符串StrC,若StrC 在串表中,则C 为Str 的扩展,Str 为C 的前缀。字符串表是动态生成的,编码前先将其初始化(通常初始化为ASCII 码的常用字符),使其包含所有可能的单个字符值。在压缩过程中,串表中不断产生压缩信息的新字符串,存储新字符串时也保存新字符串StrC 的前缀Str 相对应的码字。在解压缩过程中,程序可根据码字恢复出同样的字符串表,解出编码数据流。

1.2 LZJH 压缩算法

LZJH(Lempel-Ziv-Jeff-Heath)压缩算法[3]是一种基于代码库的、自适应的数据压缩算法,最初是为卫星工业中的IP 数据包压缩而开发的,ITU-T选择它作为建议V.44 的基础。LZJH 算法的压缩和解压缩数据的执行速度很好,在两个IP 数据报之间重设字典所花的时间也是微不足道的。

LZJH 压缩算法的基本思想是使用1024 个码字和一个1024 个输入的代码库,它足够压缩一个1500字节的帧,有1024 唯一的码字,一个对应一个代码库输入,在编码过程中这可以表示一个字节或多个字节串扩展。如果前256 个码字保留给一个8 比特字节所有可能的值,并且另外两个码字保留给控制字使用,那么串扩展得到的第一个码字是值258。

LZJH 在任何情况下不重复使用代码库输入。于是,相应于没有指定代码输入的码字可用作解码器的信号表示N 个字节串的扩展。这种扩展机理允许LZJH 把多个字节匹配字符串在数据中第二次出现时使用两个码字编码,第三次及以后再出现时使用一个码字编码相同的字符串。根据这种字符串扩展机理,在把字符串扩展到其最大有用长度过程中,LZJH实质上使用很少的代码库输入及其相应的码字。

2 数据传输加密技术

数据加密技术[4]是为提高信息系统和数据的安全性和保密性,防止秘密数据被外部破译而采用的主要技术手段之一,按照作用的不同可分为数据传输加密技术、数据存储加密技术、数据完整性的鉴别技术和密钥管理技术。

数据传输加密技术的目的是对传输中的数据流加密,防止被非法窃取、阅读和篡改,通常有线路加密与端-端加密两种。线路加密侧重在线路上而不考虑信源与信宿,是对保密信息通过各线路采用不同的加密密钥提供安全保护。端-端加密指信息由发送端自动加密,并且由TCP/IP进行数据包封装,然后作为不可阅读和不可识别的数据穿越网络,当这些信息到达目的地,将被自动重组、解密,而成为可读的数据。前文所述的无线信道加密手段即属于线路加密,业务系统报文加密处理即属于端-端加密。

数据传输加密技术历经单表代替、多表代替、置换、序列、分组密码、Merkle-Hellman 背包、LOKI91、Skipjack、RC4、RC5、MD5、Blowfish、Idea、RSA、AES、DES 等加密算法。当前比较流行的传输加密技术主要采用RSA 和DES 等算法。大部分加密算法加密后的内容会比原始内容更长,这是因为在加密过程中新增了额外的信息。

通过对压缩算法处理后的报文内容分析发现,压缩后的数据在很大程度上已经失去了数据的规律性,在不知道具体压缩算法的情况下,已经很难将数据进行还原。因此,为提高数据的安全性,在不增加报文长度以及尽量减少加解密耗时的前提下,本文选取置换加密(Permutation)算法对报文作进一步的加密处理。即把压缩后的字符编码重新排列,字符本身不变,但其位置改变了,同时将位置变换规则与数据部分长度相结合,以增加破解的难度。

3 安全加固技术实现

3.1 压缩算法的实现

对于LZW 压缩算法,参照Mark R. Nelson 于1989 年利用C 语言编写的LZW 文件压缩算法进行改进,使其适合于处理IP 报文数据内容,形成独立的LZW 算法功能模块,对外提供lzwCompressBuf和lzwExpandBuf 两个功能函数。lzwCompressBuf (unsigned char *inputBuf, int bufLen, unsigned char *outputBuf)函数通过inputBuf 指针接收原始数据,通过bufLen 获知数据长度,处理结束后将压缩数据放入outputBuf 指针所指的内存区,同时返回压缩后的数据长度;如果压缩后长度超过原始长度,则放弃压缩并返回0,外部调用据此作特殊 处 理。 lzwExpandBuf (unsigned char *srcBufPtr, int srcBufLen, unsigned char *dstBufPtr) 函 数 通 过srcBufPtr 指针接收压缩数据,通过srcBufLen 获知数据长度,处理结束后将还原数据放入dstBufPtr 指针所指的内存区,同时返回还原后的数据长度;如果因数据错误等原因导致解压缩失败,返回值为0表示异常。其中,BITS_LZW 宏定义的值原为12,经多次实验测试发现,当值为10 时可以取得更好的压缩效果。

对于LZJH 压缩算法,参照ITU_T_V.44[5]的数据压缩程序建议的压缩算法说明,采用C 语言进行编码实现,形成独立的LZJH 算法功能模块,对外提供lzjhCompressBuf 和lzjhExpandBuf 两个功能函数。lzjhCompressBuf(unsigned char *inBuf, int inBufLen)函数通过inBuf 指针接收原始数据,通过inBufLen 获知数据长度,处理结束后将压缩数据放入inBuf 指针所指的内存区,同时返回压缩后的数据长度;如果压缩后长度超过原始长度,则放弃压缩并返回0,外部调用据此作特殊处理。lzjhExpandBuf(unsigned char *inBuf, int inBufLen, int maxLen)函数通过inBuf 指针接收压缩数据,通过inBufLen 获知数据长度,通过maxLen 获知解压后的最大允许长度(即inBuf 开辟的内存区长度)以防止内存溢出,处理结束后将还原数据放入inBuf指针所指的内存区,同时返回还原后的数据长度;如果因数据错误或长度超长等原因导致解压缩失败,返回值为0 表示异常。其中,单字符占用最大比特数取值为8,首个可用码字取值为4,最大字符串长度取值为255,码字最大比特数取值为11,最大字典项数量取值为1525。

3.2 置换加密算法的实现

采用C语言进行编码实现,形成独立的Permutation Encrypt 算法功能模块,对外提供PermuteBuf 功能 函 数。PermuteBuf(unsigned char * inputBuf, int bufLen)函数通过inputBuf 指针接收原始数据,通过bufLen 获知数据长度,结合数据长度设定不同的数据置换规则。规则示例见表1。

同时,数据置换规则支持以格式化的配置文件方式进行加载,必要时可更换规则配置文件。

3.3 协议控制报文安全加固实现

测试环境下的窄带无线通信网络中的路由交换设备采用Vxworks 操作系统,因此本文选用Tornado IDE 作为技术研究验证的集成开发环境,并基于Vxworks 网络协议栈进行开发实现。

表1 数据置换规则

路由交换设备的TCP/IP 协议栈内部相关协议模块之间的关系如图1 所示。对于EIGRP 协议和OSPF 协议来说,生成的协议报文都会送到IP 协议栈的ipProto.c 文件中的ipOutput 函数进行处理后再通过交换网络从对于接口发送出去;从各接口收到的协议报文也都会通过交换网络送到IP 协议栈的ip_input.c 文件中的ipintr 函数进行处理后再被分派给相应的协议入口处理函数。对于SNMP 协议来说,设备生成的SNMP 报文经由UDP 模块处理后也会送给IP 协议栈的ipOutput 函数进行处理后再通过交换网络从相应的接口发送出去。

图1 路由交换设备内部相关协议模块关系

由此可见,可在路由交换设备TCP/IP 协议栈的IP 模块对协议控制报文进行安全加固处理,具体实施方法如图2 所示。路由交换设备可以通过配置选择压缩算法,也可结合压缩报文特征动态选择压缩算法,源端设备进行压缩加密并在报文中携带上压缩算法标识;目的端设备收到报文后根据携带的压缩算法标识进行解密解压缩处理,实现压缩算法的差异化。

图2 路由交换设备协议控制报文安全加固处理

对路由交换设备的协议报文进行特征分析发现,EIGRP 协议报文的特征包括:iphead.proto=88,iphead.id=0,iphead.tos=0;OSPF 协议报文的特征包 括:iphead.proto=89,iphead.id=0,iphead.tos=0; SNMP 协议报文的特征包括:iphead.proto=17, iphead.tos=0,udphead.dport=161/162。根据以上特征在ipOutput 函数中增加发送报文识别功能,并对协议报文首先进行压缩处理再进行加密处理。在处理过程中,需要对报文首部的长度、ID、TOS、校验和等字段同步进行调整,压缩调整对比如图3 所示。同样地,结合被调整字段特征在ipintr 函数中增加接收报文识别功能,并对协议报文首先进行解密处理再进行解压缩处理。

对于EIGRP 协议报文和OSPF 协议报文,处理流程基本相同,将协议报文首部和内容部分作为整体进行压缩。发报文时,采用压缩算法对协议报文进行压缩;利用IP 首部的TOS 字段来标识该报文是否被压缩及其压缩算法;利用IP 首部的ID 字段来保存报文的原始长度;采用置换加密算法对压缩内容进行加密;重新计算IP 首部的校验和。接收报文时,利用IP 首部的TOS 字段来判断该报文是否被压缩及其压缩算法;采用置换加密算法对压缩内容进行解密;采用压缩算法对协议报文进行解压缩;利用解压缩的协议报文内容长度与IP 首部的ID 字段比对,判断协议报文的正确性;恢复协议报文的IP 首部的长度、ID、TOS、校验和等字段。

对于SNMP 协议报文,保留其UDP 首部,仅对其内容部分进行压缩。发报文时,采用压缩算法对内容部分进行压缩;调整SNMP 报文的IP 首部的长度字段,但是不调整UDP 首部的长度字段;利用IP 首部的TOS 字段来标识该报文是否被压缩及其压缩方法;采用置换加密算法对压缩内容进行加密;重新计算IP 首部的校验和。当SNMP 协议报文到达网络管理系统所接入的路由交换设备时对压缩内容进行恢复,利用IP 首部的TOS 字段来判断该报文是否被压缩及其压缩算法;采用置换加密算法对压缩内容进行解密;采用压缩算法对内容部分进行解压缩;利用解压缩的SNMP 报文内容长度与UDP 首部的长度字段比对,判断SNMP 报文的正确性;调整SNMP 报文的IP 首部的长度字段。

图3 协议报文压缩调整对比

如果报文在传输途中被篡改或者发生了错误,在数据的解压缩过程将会失败报错,该报文将被直接丢弃,同时该事件可被识别出来并记录下来。如此,即可在上层协议控制模块无感的情况下,完成协议控制报文的安全加固处理。

4 测试结果与分析

在试验环境下采用7 台路由交换设备搭建了如图4 所示的网络拓扑以模拟窄带无线通信网络, R1~R6 之间的直接连接采用ETH 接口互连,R6 与R7 之间采用超短波电台链路互连,网络管理系统采用ETH 接口与R1 互连。由于是对上层的协议报文压缩加密效果进行测试验证,采用ETH 链路代替无线链路并不会对最终结果引起偏差。

在路由交换设备中对报文的压缩加密耗时及解密解压缩耗时分别进行了长时间的打印统计,发现各种协议控制报文的处理耗时均不到1tick,路由交互及网络管理与之前效果一样,说明压缩加密功能对设备的CPU 处理性能几乎没有影响。

图4 试验环境网络拓扑

表2 协议控制报文数据压缩效果统计

对协议报文的数据压缩效果进行了大量统计分析,得到平均结果如表2 所示。可见,对于长度较短的报文,压缩效果并不明显;报文长度越长压缩效果越好,对于EIGRP 协议的UPDATE、QUERY报文和OPSF 协议的DD、LSU 报文的压缩效果尤为明显;LZJH 算法的压缩效果普遍优于LZW 算法。

采用加密算法动态变化和置换规则动态变化相结合的手段,能进一步增强数据保密能力。采用Wireshark、Ethereal 等工具软件对路由交换设备之间的协议控制报文进行抓包统计分析,报文数据部分杂乱无规律可循。

启用协议控制报文压缩加密功能后,所有的SNMP管控报文均能在超短波电台信道上成功传输,极大地减少了电台接口的传输分片处理次数。

5 结 语

利用数据压缩和加密相结合的手段对窄带无线通信网络的协议控制报文的数据部分进行安全加固技术处理,可在不影响网络和设备原有性能的情况下大幅度缩减协议控制报文的传输长度,有效降低协议控制报文对无线信道的带宽占用,提升通信网络协议控制报文的传输效率和安全保密能力,增强网络的内生安全。后续可以继续开展对OLSR、AODV 等路由协议的安全加固研究与试验。

猜你喜欢
压缩算法码字报文
基于J1939 协议多包报文的时序研究及应用
汽车电器(2022年9期)2022-11-07 02:16:24
CTCS-2级报文数据管理需求分析和实现
基于参数识别的轨道电路监测数据压缩算法研究
浅析反驳类报文要点
中国外汇(2019年11期)2019-08-27 02:06:30
放 下
扬子江诗刊(2018年1期)2018-11-13 12:23:04
数据链系统中软扩频码的优选及应用
放下
扬子江(2018年1期)2018-01-26 02:04:06
更正声明
电讯技术(2017年4期)2017-04-16 04:16:03
ATS与列车通信报文分析
PMU数据预处理及压缩算法