微过滤驱动中文件加密标识的实现*

2012-08-13 05:57陈金山
通信技术 2012年9期
关键词:加解密记事本文档

陈金山

(广州军事体育进修学院,广东 广州 510502)

0 引言

计算机的普及和信息化的推广应用,单位内部的各种文档:标书、报表、设计图纸等机密信息大量的以电子文档的形式存放在计算机中,为确保这些文档不被非法泄露,各类防止电子文档泄密的方法应运而生:如通过企业环境下的Web service安全技术来保障企业信息系统整体安全性、可靠性的思路[1],采用无盘工作站+信息中心设计模式实现涉密单位办公自动化的方案[2]等,但从内网安全角度及信息泄密案件来看,只要是明文文件在硬盘上保存,无论是访问控制、设备监控、安全审计等手段都无法从根源上彻底解决信息安全问题。一种有效的方法就是直接对信息的载体和源头终端的文档进行访问控制和加密[3]。随着文件系统过滤驱动技术的成熟,使用文件系统过滤驱动技术对重要文件进行透明加密已成为解决文件安全保护的重要技术手段[4-5],但是使用文件系统过滤驱动实现对文档动态透明加解密时,首先要解决动态透明加解密中区分加密文件与非加密文件的问题。一种方法是,在文件以外的地方保存这个信息。比如另建一个隐藏文件,保存当前目录下其他文件的加密标识。这种方法的缺点是文件移动、打包压缩或者通过网络发送后文件标识很容易丢失。最后可以得出一条结论:加密标识应该保存在文件本身。即是采用文档标识技术,把文档加密标识嵌入文档本身,避免由于文件的移动而造成加密标识丢失的可能性[6]。这样,问题就变成了:加密标识应该保存在文件内容的哪个部位?一种方法是将加密标识放在文件末尾[7-8],这种方法比较容易实现,但存在重大安全隐患。因为所谓的文件尾不是一个固定的位置,这个位置是随着文件的修改而不断改变的,一旦在改变中有什么变故(比如断电),则容易丢失这个尾部。目前没有什么好的办法可以确保这个尾部的安全。林海元等提出了基于LZW(Lempel-Ziv-Walch)压缩算法将加密标识嵌入文件头的方法[9]。加密标识嵌入文件头的好处是位置固定,后面文件的内容如何操作都不会影响它;坏处是实现困难。文献[9]的方法比一般的文件透明加解密过程多了个LZW压缩/解压缩处理,增加了系统资源的消耗。因为文件过滤驱动工作在系统核心态,所以这种方法所带来的问题是系统效率的明显下降。

本文提出一种基于微过滤驱动的加密标识嵌入文件头方法。即给文件增加一个4kB“隐藏”的文件头,然后对机密进程所有的文件操作都增加一个偏移设置,这样做的好处是文件加解密过程中几乎不增加系统资源消耗。

1 微过滤驱动的透明加解密原理

文件透明加解密是通过开发过滤驱动程序实现的。基于NT内核的Windows操作系统的驱动程序是采用分层的结构模型,在这种分层的结构下,I/O管理器所发出的每个I/O请求包(IRP)的处理分别经过各层驱动程序,直到某层驱动程序完成这个请求。因此,可以在I/O管理器与文件系统驱动之间插入过滤驱动,拦截和处理往返于上下层之间的I RP,从而实现文档的透明加解密。微过滤驱动主要通过拦截用户的文件创建/打开、读、写和关闭操作来实现数据的透明加解密,其中涉及到的拦截函数是:①注册主功能码IRP_MJ_CREATE的拦截函数PreCreate ( )和PostCreate ( );②注册主功能码IRP_MJ_WRITE的拦截函数PreWrite ( )和PostWrite ( );③注册主功能码 IRP_MJ_READ的拦截函数 PreRead( )和PostRead( );④注册主功能码IRP_MJ_CLEANUP的拦截函数PreCleanUp ( )和PostCleanUp ( )。

微过滤驱动的工作原理如图1所示。

2 文件加密标识的实现

当文档过滤驱动检测到机密进程试图打开一个新建的或者已存在的文档时,I/O管理器首先向文件系统驱动发出的都是IRP_MJ_CREATE IRP请求包,因此可以利用微过滤驱动技术在内核中截获IRP_MJ_CREATE操作,判断当前打开的是新建的文档还是已存在的文档,如果是新建的文档就申请一个新的密钥,把密钥、加密算法和密级信息等写入新的文档标识中,然后对文档标识加密,再把加密的文档标识嵌入新的文档中;如果是已存在的文档,就提取文档的文档标识,然后把文档标识加入加密表。

因为要对所有的机密进程隐藏文件的头部,则所有的文件操作都要增加一个偏移。下面以记事本为例说明文件加密标识实现过程中的关键技术。

2.1 隐藏文件头的偏移设置

要对记事本隐藏文件头,首先是隐藏文件的大小。为此需要处理一系列的查询请求(IRP的主功能号为 IRP_MJ_QUERY_INFORMATION),这些查询请求用记事本来查询文件的大小。在查询得到结果之后,在文件过滤驱动中修改这个结果,减去文件头的大小。这样在记事本看来,文件的大小就不包含文件头了。如果记事本试图重新设置加密文件的大小,也必须有针对性地做出特殊的改变。但是和查询请求不同的是,查询的修改是在请求完成之后,在完成结果中修改;而设置请求则是在请求完成之前,直接修改请求。比如记事本如果试图把文件大小设置为1KB,由于增加了4KB的文件头,实际上文件应该被设置为5KB。也就是说,应该加上隐藏文件头的大小,对文件的读/写当前偏移的设置也是如此。

文件过滤驱动处理中有几个请求会涉及文件的大小和文件读/写当前偏移,对记事本而言需要处理好下列函数:FileAllInformation、 FileAllocation Information、FileValidDataLengthInformation、File StandardInformation、FileEndOfFileInformation、File PositionInformation。

下面是FileEndOfFileInformation函数的处理,其他函数的处理可参考有关WDK开发文档。

FileEndOfFileInformation函数处理的代码如下:

2.2 隐藏文件头的读/写偏移

由于在文件头嵌入了4KB的加密标识,所以当记事本试图读取文件位置偏移0~512字节时,实际上应该读取的是从0+4KB到512+4KB范围的内容。也就是说,对所有的读/写操作,必须增加一个位置偏移。而且无论读/写,都是要在请求完成之前进行操作。读操作代码如下:

3 结果与性能分析

性能测试的环境是:Windows XP操作系统,酷睿E6300处理器,2G内存,7200转SATA硬盘。采用硬盘速度测试软件DiskBench在相同的环境下对一个相同大小的文件进行10次相同条件的测试对比,得出的平均速度结果如表1所示。

表1 文件读写时间测试

从测试结果可以看出,在文件透明加解密系统启动后,文件的读写速度略有下降,但相比较其提供的安全性能,这点速度损失是可以接受的。

4 结语

基于微过滤驱动模型的文件透明加解密系统为Windows文件系统的安全保护提供了一个有效的解决方案。给文件增加一个4KB“隐藏”的文件头实现的加密标记自动嵌入文件头的方法,克服了加密标记嵌入文件尾可能存在的重大安全隐患,同时又避免了嵌入文件头时增加过多的资源消耗,达到了预期的效果。这种加密标记嵌入技术为文件透明加解密系统提供了一种更好的文件加密识别方案,不仅可以应用于微过滤驱动的文件透明加解密系统,还可以应用于其他文件安全保护系统中[10],具有广阔的应用前景。

[1] 许玲.企业信息系统中的Web Service安全[J].电信技术,2011,44 (05):48-51.

[2] 彭展,李密.可信办公自动化系统设计[J].信息安全与通信保密,2012(04):61-63.

[3] 沈玮,王雷,陈佳捷. 基于文件系统过滤驱动的加密系统设计与实现[J].计算机工程,2009,35(20):157-159.

[4] 周峰,凌捷,黄万民,等.基于文件系统过滤驱动的透明加解密技术实现[J].广东工业大学学报,2010,27(03):68-71.

[5] 刘伟,胡平. 基于文件系统过滤驱动的文件加密系统设计[J].微电子学与计算机,2009,26(04):114-117.

[6] 黎计仲,凌捷,黄万民,等.微过滤驱动在终端文档安全保护中的应用[J].计算机工程与设计,2011,32(07):2245-2248.

[7] 毛锐. 透明加密文件系统模型的研究与实现[D].大连:大连理工大学,2008.

[8] 徐翔. 文件保护系统中透明加解密技术的设计与实现[D].北京:北京化工大学,2009.

[9] 林海元,吕丽民. 基于无损压缩算法的文件加密标记的实现[J].浙江工业大学学报,2010,38(04):430-432.

[10] 孙莹莹,郑扣根. 基于微过滤驱动的文件监控系统[J].计算机应用,2010,30(11):3115-3117.

[11] 夏辉,张尧弼. 移动存储介质安全防护系统设计[J]. 通信技术,2008,41(09):153-155.

[12] 徐月美,芮苏仙.移动代理服务器安全性研究[J].通信技术,2003(09):109-111.

猜你喜欢
加解密记事本文档
浅谈Matlab与Word文档的应用接口
做个树懒记事本
有人一声不吭向你扔了个文档
小狗记事本
PDF中隐私数据的保护方法
Word文档 高效分合有高招
土拨鼠的记事本
电子取证中常见数据加解密理论与方法研究
Persistence of the reproductive toxicity of chlorpiryphos-ethyl in male Wistar rat
网络数据传输的加解密系统研究