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

上传人:吴起龙 文档编号:1580118 上传时间:2018-12-25 格式:DOC 页数:7 大小:16.90KB
返回 下载 相关 举报
NDIS防火墙和流过滤技术在文件加密保护中的应用.doc_第1页
第1页 / 共7页
NDIS防火墙和流过滤技术在文件加密保护中的应用.doc_第2页
第2页 / 共7页
NDIS防火墙和流过滤技术在文件加密保护中的应用.doc_第3页
第3页 / 共7页
亲,该文档总共7页,到这儿已超出免费预览范围,如果喜欢就下载吧!
资源描述

《NDIS防火墙和流过滤技术在文件加密保护中的应用.doc》由会员分享,可在线阅读,更多相关《NDIS防火墙和流过滤技术在文件加密保护中的应用.doc(7页珍藏版)》请在三一文库上搜索。

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

2、ork 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。

3、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报文就会在FilterSend

4、NetBufferLists函数中以NBL的形式存在。对于NBL数据的处理,就位于这个函数中,而FilterSendNetBufferListsComplete的功能是将发送的结构和数据返还给Filter Driver。 2 流过滤技术以及具体实现算法 2.1 流过滤技术和包过滤技术 流过滤技术是在包过滤技术的基础上提出的。流过滤处理的基本单元是数据包,但并不仅限于数据包;包过滤技术关注的重点是网络层和传输层,根据这几个层次在单个数据包中的信息进行过滤,而流过滤注重的是应用层。本文利用流过滤原理对数据包中的应用层信息进行加密处理。 2.2 技术方案 本文以HTTP传输为例讲解流过滤技术在文件加

5、密中的技术方案。HTTP走的协议为TCP报文,在流过滤方案中截获的封包是TCP包。处理流程如下:对截获的TCP报文进行分类处理对1中筛选后的报文进行分析和再次筛选对选中的报文记录该报文的源、目的IP和端口对此连接的TCP包进行滞留,并接管此TCP连接对滞留的数据包进行重组和加密将加密后的数据还原,继续转发,并归还此TCP连接。 2.2.1 报文的分类 由于我们的目的是对HTTP下载携带的文件内容进行加密处理,所以,我们关注的重点是带有应用层数据的TCP报文。TCP报文首先可以分为带有应用层数据的和不带有应用层数据的。应用层无关报文主要是SYN、FIN、ACK等报文,用于TCP连接和可靠性传输。

6、这类报文与我们的应用无关,直接转发即可。 2.2.2 报文的分析和筛选 2.2.3 报文的滞留、重组和加密 文件加密根据算法需要加密4 096字节的数据,而TCP荷载数据的报文一般长度是1 514字节,所以,需要合并几个连续报文以得到4 096字节的内容。 由于采用网络传输,TCP报文很有可能是乱序的,所以,需要根据TCP的序列号对TCP报文进行重组。TCP包的下一序列号=序列号+数据长度。这里的数据长度是指传输的数据大小,不包括ethernet、IP、TCP报头的长度。 为了重组报文,需要维护两个队列,即顺序队列和乱序队列。 2.2.3.1 顺序队列 截获一个新的报文后,判断顺序队列是否为空

7、。如果为空,则判断报文的序列号是否等于startseq,是则插入顺序队列,否则按照升序插入到乱序队列;如果顺序队列不为空,则判断当前序列号是否等于顺序队列结尾的序列号加上数据长度,是则插入顺序队列结尾,否则按照升序插入乱序队列。 2.2.3.2 乱序队列 首先判断乱序队列开始的TCP序列号与顺序队列结尾报文的下一序列号的大小关系。如果相同,则将乱序队列的开始报文插入顺序队列的结尾;如果前者大于后者,则本轮处理结束;如果前者小于后者,则直接丢弃该报文。 保活包括以下2方面的内容:发送端。对于TCP连接,系统将报文滞留,发送端得不到报的回应势必会影响连接。因此,我们需要?巫俺山邮斩讼蚍投朔?ack

8、回应。Ack数据报文的序列号等于当前TCP的确认号,确认号在顺序队列中为空时,等于startseq;否则,其等于顺序队列结尾报文的下一序列号。接收端。从截获第一个需要重组的报文起,需要每隔一段时间向接收端发送ack报文以保证连接。此报文的序列号等于startseq,确认号与所有滞留重组的TCP报文确认号相等。 2.2.4 报文的加密 根据SMS4加密算法的特性,加密的最小数据单位为16字节,因此,结合实际应用,本系统采用一次性截获全部4 096字节的内容,然后加密。 在数据报文滞留排序好之后,定位数据位置。为了能够恢复原有的数据包,需要用指针链表对数据位置进行记录,以便将加密后的内容拷贝回去。

9、 指针链表元素的数据结构主要记录2点,即指针和长度。对于每一个被放入顺序队列中的TCP包,均分配一个指针链表元素,记录下数据所在的起始地址以及数据实际长度,并对数据长度进行累加。当顺序表中的实际数据长度大于等于4 096字节时,将数据拷贝出来,调用加密接口对4 096字节的内容加密,然后根据指针链表中的元素将数据拷贝回去之后,对TCP数据包重新计算校验和,最终转发。 3 TCP封包的修改 对于一个TCP报文而言,如果其所负载的数据被修改,就需要重新计算校验和,否则数据包不会被正常接收。TCP数据封包所涉及的校验和分为IP校验和TCP校验和。TCP校验和覆盖了TCP首部和TCP数据,而IP首部中

10、的校验和只覆盖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协议的特点对文件进行还原加密,以起到保护文件的作用。

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 其他


经营许可证编号:宁ICP备18001539号-1