NDIS防火墙和流过滤技术在文件加密保护中的应用

2017-03-30 02:09林志盘
科技与创新 2016年22期
关键词:防火墙

林志盘

摘 要:计算机信息技术在给人们生活带来便利、提高信息利用率的同时,网络安全问题也日显突出。要想解决网络的安全问题,最首要的就是在网络运行中辅以相应的加密技术。阐述了NDIS中间层网络防火墙技术,详细分析了流过滤技术在文件加密保护中的应用以及具体实现算法,并介绍了TCP封包的修改。

关键词:防火墙;TCP;网络通讯;自动加密系统

中图分类号:TP393.08 文献标识码:A DOI:10.15913/j.cnki.kjycx.2016.22.110

随着网络应用领域的不断扩展,人们对信息的保密性要求不断提高,对网络安全性能提出了新要求。作为网络通讯安全的保障性技術,加密技术在网络通讯安全中起着至关重要的作用。加密技术作为常规的信息保密技术,实际为在网络通讯中运用密钥对文档进行加密传送,而信息接收者再对信息进行密钥解码读取信息的技术。只有正确解密的文档才能被正常浏览,因此,该技术能够有效保证信息的安全。基于此,本文开发了一套文件自动加密系统,其原理是利用Windows NDIS级别防火墙的原理对文件进行保护,采取明文存储、密文分发的方式。

1 NDIS中间层网络防火墙技术

NDIS是Network Driver Interface Specification的缩写,意为“网络驱动接口规范”。NDIS横跨了传输层、网络层和数据链路层,其作用是屏蔽了底层物理硬件的区别。

NDIS支持三种类型的驱动程序,包括MinIPort驱动程序、中间层驱动程序、Protocol驱动程序。本文采用中间层驱动程序。

1.1 NDIS的版本

NDIS版本从支持的操作系统看可以分为NDIS5.x和NDIS6.x。NDIS6.x与NDIS5.x有很大的不同,最重要的是NET_BUFFER替代了NDIS_PACKET。鉴于本系统运行的服务器是Win2008R2,因此,本文中提到的NDIS均指NDIS6.x。

1.2 NDIS6.0的数据结构

NDIS6.0中很重要的两个数据结构是NET_BUFFER_LIST和NET_BUFFER。一个NET_BUFFER_LIST结构指向的是一连串的NET_BUFFER,这些NET_BUFFER中保存的数据包内容属于同一个Stream。通过NET_BUFFER_NEXT_NB()可以获取下一个NET_BUFFER。

1.3 NDIS的相关函数

在NDIS中,截获下载数据包的关键函数是FilterSend NetBufferLists和FilterSendNetBufferListsComplete。在NDIS驱动安装成功之后,TCP报文就会在FilterSendNetBufferLists函数中以NBL的形式存在。对于NBL数据的处理,就位于这个函数中,而FilterSendNetBufferListsComplete的功能是将发送的结构和数据返还给Filter Driver。

2 流过滤技术以及具体实现算法

2.1 流过滤技术和包过滤技术

流过滤技术是在包过滤技术的基础上提出的。流过滤处理的基本单元是数据包,但并不仅限于数据包;包过滤技术关注的重点是网络层和传输层,根据这几个层次在单个数据包中的信息进行过滤,而流过滤注重的是应用层。本文利用流过滤原理对数据包中的应用层信息进行加密处理。

2.2 技术方案

本文以HTTP传输为例讲解流过滤技术在文件加密中的技术方案。HTTP走的协议为TCP报文,在流过滤方案中截获的封包是TCP包。处理流程如下:对截获的TCP报文进行分类处理→对1中筛选后的报文进行分析和再次筛选→对选中的报文记录该报文的源、目的IP和端口→对此连接的TCP包进行滞留,并接管此TCP连接→对滞留的数据包进行重组和加密→将加密后的数据还原,继续转发,并归还此TCP连接。

2.2.1 报文的分类

由于我们的目的是对HTTP下载携带的文件内容进行加密处理,所以,我们关注的重点是带有应用层数据的TCP报文。TCP报文首先可以分为带有应用层数据的和不带有应用层数据的。应用层无关报文主要是SYN、FIN、ACK等报文,用于TCP连接和可靠性传输。这类报文与我们的应用无关,直接转发即可。

2.2.2 报文的分析和筛选

带有应用层数据的TCP报文,我们可以进行定向的筛选,即以应用层协议关键词进行筛选。比如对于HTTP协议,应用层会有“HTTP”字样的关键词,并对HTTP分析。HTTP协议有POST、GET和应答。传输文件的关键数据包一般在2 00O字节的应答中,特征是transfe-Encoding的chunk类型(代表以chunk方式控制文件大小)以及filename中的扩展文件名来确定是否是加密需要的报文。

2.2.3 报文的滞留、重组和加密

文件加密根据算法需要加密4 096字节的数据,而TCP荷载数据的报文一般长度是1 514字节,所以,需要合并几个连续报文以得到4 096字节的内容。

由于采用网络传输,TCP报文很有可能是乱序的,所以,需要根据TCP的序列号对TCP报文进行重组。TCP包的下一序列号=序列号+数据长度。这里的数据长度是指传输的数据大小,不包括ethernet、IP、TCP报头的长度。

为了重组报文,需要维护两个队列,即顺序队列和乱序队列。

2.2.3.1 顺序队列

截获一个新的报文后,判断顺序队列是否为空。如果为空,则判断报文的序列号是否等于startseq,是则插入顺序队列,否则按照升序插入到乱序队列;如果顺序队列不为空,则判断当前序列号是否等于顺序队列结尾的序列号加上数据长度,是则插入顺序队列结尾,否则按照升序插入乱序队列。

2.2.3.2 乱序队列

首先判断乱序队列开始的TCP序列号与顺序队列结尾报文的下一序列号的大小关系。如果相同,则将乱序队列的开始报文插入顺序队列的结尾;如果前者大于后者,则本轮处理结束;如果前者小于后者,则直接丢弃该报文。

保活包括以下2方面的内容:①发送端。对于TCP连接,系统将报文滞留,发送端得不到报的回应势必会影响连接。因此,我们需要偽装成接收端向发送端发送ack回应。Ack数据报文的序列号等于当前TCP的确认号,确认号在顺序队列中为空时,等于startseq;否则,其等于顺序队列结尾报文的下一序列号。②接收端。从截获第一个需要重组的报文起,需要每隔一段时间向接收端发送ack报文以保证连接。此报文的序列号等于startseq,确认号与所有滞留重组的TCP报文确认号相等。

2.2.4 报文的加密

根据SMS4加密算法的特性,加密的最小数据单位为16字节,因此,结合实际应用,本系统采用一次性截获全部4 096字节的内容,然后加密。

在数据报文滞留排序好之后,定位数据位置。为了能够恢复原有的数据包,需要用指针链表对数据位置进行记录,以便将加密后的内容拷贝回去。

指针链表元素的数据结构主要记录2点,即指针和长度。对于每一个被放入顺序队列中的TCP包,均分配一个指针链表元素,记录下数据所在的起始地址以及数据实际长度,并对数据长度进行累加。当顺序表中的实际数据长度大于等于4 096字节时,将数据拷贝出来,调用加密接口对4 096字节的内容加密,然后根据指针链表中的元素将数据拷贝回去之后,对TCP数据包重新计算校验和,最终转发。

3 TCP封包的修改

对于一个TCP报文而言,如果其所负载的数据被修改,就需要重新计算校验和,否则数据包不会被正常接收。TCP数据封包所涉及的校验和分为IP校验和TCP校验和。TCP校验和覆盖了TCP首部和TCP数据,而IP首部中的校验和只覆盖IP的首部,不覆盖IP数据报中的任何数据。

TCP首部校验和计算包括3部分,即TCP首部+TCP数据+TCP伪首部。

伪首部是为了增加TCP校验和的检错能力,比如检查TCP报文是否收错了(目的IP地址)、传输层协议是否选对了(传输层协议号)等。伪首部来自IP首部。

TCP校验和的大致方法如下:①把伪首部、TCP报头、TCP数据分为16位的字,如果总长度为奇数个字节,则在最后增添一个位都为0的字节;②把TCP报头中的校验和字段置为0;③用反码相加法累加所有的16位字(进位也要累加)。

以上结果即作为TCP的校验和。如果TCP包长度改变,还要对IP报头重新计算校验和。

4 结束语

综上所述,加密技术是解决网络安全问题的手段之一,在当前的网络运行中应用是十分普遍的。本文开发了一套文件自动加密系统,该系统根据防火墙和流过滤的原理,对从文件服务器下载的文件进行加密保护,主要用到的技术有NDIS驱动级防火墙技术和SMS4加密算法技术,可针对TCP/IP协议的特点对经过NDIS驱动的TCP报文进行分类过滤,并根据HTTP协议的特点对文件进行还原加密,以起到保护文件的作用。

参考文献

[1]朱闻亚.数据加密技术在计算机网络安全中的应用价值研究[J].制造业自动化,2012(04).

[2]牛景锐.防火墙与加密技术在网络安全中的应用[J].硅谷,2013(11).

[3]马利,梁红杰.计算机网络安全中的防火墙技术应用研究[J].电脑知识与技术,2014(14).

〔编辑:张思楠〕

猜你喜欢
防火墙
简单高效 玩转Windows 10防火墙设置
一张图看懂民间借贷“防火墙”
防火墙技术在网络安全应用中的现状与发展趋势
防火墙技术在网络安全应用中的现状与发展趋势
防火墙技术在网络安全应用中的现状与发展趋势
H3C高端防火墙成功竞标广东电信
防火墙选购必读
新手设置Windows Vista自带防火墙
探析网络安全与防范技术
防火墙技术对网络安全的影响