【 摘 要 】 针对单缓冲技术在过滤驱动透明加解密中存在的缺陷和不足,本文提出采用双缓冲机制,在内核态创建两个缓冲区,授权程序访问解密缓冲区数据,非授权程序访问非解密缓冲区数据,两者互不影响。首先对文件系统过滤驱动和双缓冲技术进行理论研究,然后提出了系统的设计思想,建立设计方案,进行实现和应用。通过测试结果表明,该系统对透明加解密系统性能和兼容性有很大提升。
【 关键词 】 双缓冲;文件系统;过滤驱动;透明加解密
【 中图分类号 】 tp316.86 【 文献标识码 】 a
1 引言
随着计算机技术的飞速发展,企业的办公也趋向于信息化,机密信息大量取代纸质文档以电子文档方式存在,从而对文档的加密保护显得更加重要。透明加解密因为其在不改变用户习惯的情况下强制自动完成加解密的特点,受到企业和用户的青睐。传统的透明加解密技术采用单缓冲技术,这样为了适应授权和非授权程序对加密文件访问的控制,需要频繁清除缓冲数据以转换数据状态,降低了缓冲的利用效率,也会引起一些兼容性问题。保护企业机密信息的安全,基于双缓冲的过滤驱动技术实现文档保护是本文研究的重点问题。
2 文件系统过滤驱动工作原理
文件系统过滤驱动程序是存储管理子系统的一个组件,为用户提供在持久性介质上存贮和读取功能,它附着在文件系统上。windows nt系统通过i/o管理器对用户的读写等操作以irp的形式发送给文件系统驱动,而当过滤驱动程序存在时,则在文件系统驱动接受irp前拦截此irp,根据需求处理这些irp,从而为文件系统提供新的功能。
基于windows nt内核操作系统的文件过滤驱动模型如图1所示。
windows nt文件系统过滤驱动是一个拦截到一些已有的软件模块的请求的中间层驱动,它把自己附着在其他驱动之上,在请求到达目标之前拦截请求,它用于不改变底层设备驱动或者用户程序而增加设备的新功能。
由于过滤驱动在设备对象栈最顶端,i/o管理器在发送操作请求到目标设备对象之前, 会和过滤驱动通过irp的形式进行交互,过滤驱动会在irp到达文件系统前拦截到它。处理完后,过滤驱动把下一层驱动栈位置记录在irp中,并将其返回给i/o管理器。i/o管理器支持分层驱动程序模型,irp从i/o管理器出发依次从相应的设备栈的栈顶向下传递,直到底层驱动将irp处理完后,将irp返回给i/o管理器。最后i/o管理器将irp处理结果向上提交给请求进程,并释放掉irp申请的资源。
3 文件缓冲管理器工作原理
3.1 缓冲管理器工作原理
windowsnt缓冲管理器是nt执行体的一个独一无二的组件,和虚拟内存管理器紧密相关。缓冲管理器执行文件数据的“预读”。由于对被缓冲文件的所有i/o请求都通过缓冲管理器,缓冲管理器能够保存文件数据访问模式的轨迹,使操作系统能更快响应应用程序对数据的读写。
缓冲管理器负责将可利用的主存空间分割成缓冲区,缓冲区是与页面同等大小的区域,磁盘块的内容可以传送到缓冲区中。windows nt系统的文件系统和缓冲管理器之间是相互调用的关系,双向沟通。缓冲管理器提供一些调用给文件系统,文件系统注册回调函数给缓冲管理器,而且缓冲管理器会发irp给文件系统处理。如图2实线箭头所示,当应用程序第一次发出读取某个文件的irp后,文件缓冲管理器会将文件数据读取在文件系统缓冲区中,然后用户态进程将文件数据拷贝到自己的地址空间中。当用户态进程完成对数据的操作后,文件数据将被写回文件系统缓冲区。
3.2 双缓冲技术
windows缓冲管理器无论同时被几个应用程序打开,都只分配一个缓冲区。传统的加密系统采用单缓冲技术,既应用程序访问加密文件时,文件在缓冲区内解密,但是如果应用程序未加密时,需要先清空缓冲区再读入未解密数据,由此可见使用单缓冲效率不高,同时会带来兼容性问题。
对于过滤驱动的透明加密系统,如果引入双缓冲技术,使加密文件被授权程序访问时,创建一个缓冲区供其访问,在缓冲区内将加密文件数据解密;而加密文件被非授权程序访问时,加密文件数据不被解密,而是将密文数据构建一个缓冲区供其访问。一个文件建立两个缓冲区,且这两个缓冲区内容互不影响,从而实现文件系统和缓冲管理器协同工作。
4 基于双缓冲的过滤驱动技术研究
4.1 设计目标
基于双缓冲
过滤驱动系统的设计目标是希望解决安全性与效率性的矛盾,即在保证信息数据安全的同时,能保证信息数据使用时的效率。具体目标为几点:①对授权程序生成文件时自动加密,并且加密不需人工执行由计算机运行;②被加密的文件在授权计算机打开时,此时被解密,并且解密过程由计算机自动执行,文档使用者无需干预;③被加密的文件在非授权的情况下打开时,系统报错、显示乱码或者以其他方式阻止文件内容被传播。
4.2 系统体系结构
本系统有应用层部分和内核层部分组成,其中内核层驱动模块是整个系统的核心部分。
如图3所示,内核驱动模块由初始化模块、fast i/o处理模块、预处理模块、进程识别模块、透明加解密模块和缓冲管理模块组成。各个模块间紧密联系,实现基于双缓冲的过滤驱动透明加解密功能,其中模块具体功能有几种。
①初始化模块:设置内核驱动所需要的配置文件,为其他模块提供初始化工作。驱动程序的入口函数为driverentry,主要是对驱动程序进行初始化,它是由系统进程所调用的。该函数原型为:
ntstatus driverentry (in pdriver_object pdriverobject,
in punicode_string pregistrypath )。 ②fast io处理模块:nt下fast io是一套i/o管理器与device driver通信的另外一套api。在进行基于irp为基础的接口调用前,i/o管理器会尝试使用fast io接口来加速各种io操作。此模块用于处理上层通过快速i/o访问缓冲的请求。
③预处理模块:在文件过滤irp mj_ read, irp_ mj_ write的irp操作时,获取文件对象所对应的文件路径,通过策略匹配等操作来鉴别操作的文件是否需要加解密并存入文件上下文结构中以备后面的文件操作处理。
④进程识别模块:用于识别和管理授权进程。
⑤透明加解密模块:在驱动需要写数据和双缓冲管理模块需要从磁盘解密时,对传来的数据通过加解密算法实现透明加解密功能。
⑥缓冲管理模块:构建双缓冲,解决系统缓冲不可控,又解决了频繁读写磁盘的效率问题。在文件首次打开请求被截获时为文件分配一个缓冲结构,然后将指针存入对应的hash结构体中。双缓冲为文件提供明文和密文两个缓冲,通过缓冲管理器模块来维护双缓冲结构,通过它与磁盘交互,在irp请求对应的派遣函数针对双缓冲去操作,根据进程是否授权调度相应的缓冲区供进程读取。双缓冲处理流程如图4所示。
4.3 系统分析与评价
系统采取内核层的文件过滤驱动实现透明加解密,运行于内核态,安全性及可靠性都较高。由于驱动工作在系统底层,对于用户而言无需改变其使用习惯,就已经透明的完成了数据的加解密操作,即数据在内存中为明文在磁盘上始终是密文,那么即使数据被非法拷贝和窃取,则得到的也只是乱码,从而保证了数据的安全性。
系统采用双缓冲,为授权程序提供明文缓冲区,为非授权程序提供密文缓冲区,二者互不干扰,同单缓冲相比,系统解决了拒绝读写和频繁刷缓冲的问题,同时这些操作仍然工作在内核层,用户也无需干预,既保证了安全性又提高了效率,使用更加方便。
5 结束语
本文基于双缓冲技术实现了文件系统过滤驱动的透明加解密。windows缓冲管理器和文件系统机制为双缓冲的建立和管理提供了便利,同时采用了透明加密(文件产生自动加密,文件打开自动解密),解决了传统的“钩子”技术和单缓冲过滤驱动存在的兼容性问题,也能防止企业内部人员主动数据泄密行为,给企业机密资料带来了彻底的安全防护,具有良好的应用价值。
但是,文件系统是个复杂的系统,实现文件系统的过滤驱动和加解密更需要多种理论和技术的支持,通过双缓冲来实现这些功能更需要不断地探索。随着对文件系统的研究和深入,必然会出现更多的问题和要求,还需要大量而艰巨的工作来完善。
参考文献
[1] 瞿进,李清宝,白燕,魏珉等.文件过滤驱动在网络安全终端中的应用[j].计算机应用,2007,3.
[2] 李亚楠.基于文件系统过滤驱动技术的数据安全系统[d].山东大学,2009.
[3] 敖磊. 基于vxworks嵌入式数据库管理系统的设计与实现[d].东北大学,2009.
[4] 刘晗.基于双缓冲过滤驱动的透明加密系统研究与实现[d].重庆大学,2010.
[5] rajeev nagar,tony mason.windows nt文件系统内幕[m].o’reilly pres
ss,1997.
[6] 张宝剑,李晓辉,郑一毫.基于身份认证和过滤驱动的文件加密系统设计[j].河南科技大学学报,2011.
基金项目:
国家科技型中小企业创新基金项目《电子文档安全管理系统研发》( 09c26215202488)。
作者简介:
陈炜(1987-),男,贵州大学研究生;主要研究方向:信息安全、密码学等。
曹斌,研究员,贵州铝镁设计院;主要研究方向:通信网络与信息安全(加密、文档保护、访问控制、审计、攻击源地址追踪等),计算机网络技术(流程管理及控制、智能通信、服务网站等)和数字与通信。