Windows下文件过滤驱动技术
2016-12-21徐国栋朱亮
徐国栋,朱亮
Windows下文件过滤驱动技术
徐国栋,朱亮
Windows文件过滤驱动在不改变复杂的文件系统基础上,可方便地扩展I/O子系统的功能。在深入研究了文件过滤驱动技术基础上,结合安全加密技术与权限控制技术,实现了一个安全、易用、管理方便的安全文件系统。
文件过滤驱动;I/O请求包;基于角色的访问控制
0 引言
随着企事业单位的快速发展,电子文档为企事业单位承载了越来越多的重要信息。而由于电子文档的容易散播性,导致企事业单位的重要资料很容易被非法获取、篡改、乃至无序传播等,这使得企事业单位所做的大量工作付之东流,严重危害了自身的利益。特别是棱镜门事件后,文档安全的重要性也日益受到重视。文件安全管理就是为了提高电子文档数据的安全性和保密性、防止秘密数据被意外、或非法获取所采用的技术手段。
密码学是信息系统安全的核心,它是研究密码系统和通信安全的一门学科[1]。密码学的基本功能是提供保密性,使非授权者无法获悉消息的内容。
1 文件过滤驱动
Windows的I/O管理器是一个可扩展的结构,通过开发过滤驱动程序可以扩展I/O子系统的功能。 I/O管理器支持分层驱动程序模型,每个I/O请求包(IRP,I/O request package)的处理分别经过各层驱动程序,直到某层驱动程序完成这个请求[2]。
1.1 过滤驱动程序
过滤驱动工作在系统驱动层和应用层之间,透明地截取发往低级驱动程序设备对象的请求,低级驱动程序的用户完全不知道它们的请求被过滤器驱动程序预处理和截取了。使用过滤器驱动程序可以实现以下几种主要功能:
允许修改已有驱动程序在某些方面的行为,而不必重写整个驱动程序。
可以更加容易地隐藏低级驱动程序的限制。
允许把诸如压缩、加密等新特征添加到设备上,而不必修改基本的设备驱动程序或者使用设备的程序。
1.2 文件系统过滤驱动
文件系统是负责为用户建立、存入、读出、修改、转储文件,控制文件的存取与撤销。文件系统过滤驱动工作模式如图1所示:
图1 文件过滤驱动工作模型
作为一种内核态中间层驱动,只需对下层的文件系统驱动作相应的功能扩展,加密粒度灵活、可靠性强、效率高、易于扩展。
2 文件安全保护
借助于Windows的可安装文件系统IFS,Installable File System设备驱动程序开发工具DDK,Device Development Kit),即可以对Windows I/O 的子系统进行方便的扩展,实现一个文件加密过滤驱动程序。此程序有如下特点:
不改变现有Windows的操作习惯。
拦截所有用户写请求:在加密文档写入磁盘前加密数据,保证存储在磁盘的都是加密数据。
拦截所有用户读请求:在加密文档数据返回给用户前解密数据,保证应用程序看到的是明文数据。
2.1 Create例程中判断是否需要加解密
Windows文件系统通过Create(IRP_MJ_CREATE)例程来创建或打开文件。文件创建/打开时,Windows系统会创建一个FILE_OBJECT对象来表示此文件,根据此FILE_OBJECT来获取文件相关的信息并判断是否需要加密。
所有需要加/解密的文件都通过一个加密集合来维护[3],当前打开的文件如果已在集合中,则肯定需要对其加/解密;否则:
新建的文件(打开标记为FILE_CREATED、FILE_OVERWRITTEN或FILE_SUPERSEDED者,都认定为新建),则根据设定的规则判断是否需要对其加/解密。
打开的文件,则先获取其加/解密标志(与文件关联的加/解密相关信息);如果有,则对其加/解密。
2.2 Write例程中加密
Windows的写操作在Write(IRP_MJ_WRITE)例程中捕获。当写请求(IRP)到达时,先获取FILE_OBJECT对象,来判断是否为加密文件。非加密文件直接放行(Pass Through)即可;即使是加密文件,也不是所有的写操作都需要加密,只有在真实数据要写入到磁盘时(标记位为IRP_NOCACHE,且数据长度大于零)才需要加密。
对于要加密数据的写请求,在IRP传递到下一层前以及完成后,都需要进行处理:
在IRP传递到下层前,需要对数据进行加密:
申请非分页内存(设为缓冲区N),用于存放加密后的数据。
用缓冲区N来替换IRP中原来的UserBuff(设为缓冲区O)。
在IRP完成后,要做清理:
把IRP中的UserBuff设回为缓冲区O。
释放前面申请的缓冲区N。
加密数据一定要存放在新申请的缓冲区中去,不能对原有缓冲区中的内容进行修改。
2.3 Read例程中解密
Windows的读操作可在Read(IRP_MJ_READ)例程中捕获。当写读请求(IRP)到达时,先获取FILE_OBJECT对象,来判断是否为加密文件。非加密文件直接放行(Pass Through)即可;即使是加密文件,也不是所有的读操作都需要解密,只有在真实从磁盘中读取数据时(标记位为IRP_NOCACHE,且数据长度大于零)才需要解密。
对于要解密数据的读请求,在IRP传递到下一层前以及完成后,都需要进行处理:
在IRP传递到下层前,需要重设缓冲区:
申请非分页内存(设为缓冲区N),用于存放读取到的加密数据。
用缓冲区N来替换IRP中原来的UserBuff(设为缓冲区O)。
在IRP完成后,对数据进行解密:
把读取到的加密数据解密到缓冲区O中。
把IRP中的UserBuff设回为缓冲区O。
释放前面申请的缓冲区N。
2.4 其他例程操作
除了上面与加解密直接相关的例程外,还有其他一些例程需要处理,本文就不详述了:
在Close例程(IRP_MJ_CLOSE)处理与文件关闭相关操作。
在SetInformation例程(IRP_MJ_SET_INFORMA -TION)处理重命名、删除等相关操作。
在QueryInformation例程(IRP_MJ_QUERY_IN -FORMATION)中处理各种与获取文件信息相关的操作
2.5 文件密钥管理
为保证安全并方便管理,笔者使用对称算法来加密文件内容,使用非对称算法来保护对称算法的密钥[4],此方案有如下优势:
使用对称加密算法对文件内容进行加密,来提高效率与安全性。
每个文件使用独立的密钥,进一步提升其安全性。
使用非对称算法对文件密钥进行加密保护,在保证安全的同时简化了密钥管理。
3 文件权限管理
企业电子文档数量巨大且有不同程度的信息敏感度每个用户有不同的访问需求,使得其安全管理非常复杂。
基于角色的访问控制将权限与角色联系起来,在系统中根据应用的需要为不同的工作岗位创建相应的角色同时根据用户职责指派合适的角色,用户通过所指派的角色获得相应的权限[5],实现对文件的访问如图2所示:
图2 访问控制模型
这样,整个访问控制过程就分成两个部分,即访问权限与角色相关联,角色再与用户关联,从而实现了用户与访问权限的逻辑分离。
角色/权限之间的变化比角色/用户关系之间的变化相对要少的多,但是也复杂的多。所以:分配权限到角色对技术要求较高,由专门的技术管理人员(文件安全管理人员)来承担。
委派用户到角色不需要很多技术,由行政管理人员来执行。
通过用户与访问权限的逻辑分离,基于角色的访问控制极大的方便了权限管理,实现最少权限原则和职责分离的原则。
4 总结
笔者应用此方案已成功实现了多个系统,并取得了良好的效果。要构建一个完善的安全系统,除了透明文件加密、权限管理外,还需要终端外设管理[6]、网络安全管理等各种技术。只有融合多种技术才能实现一个安全、易用的安全系统,来保护我们的数据。
[1] William Stallings著,王张宜, 杨敏, 杜瑞颖,等译. 密码编码学与网络安全——原理与实践[M]. 电子工业出版社,2012.
[2] Rajeev Nagar. Windows NT File System Internals. O’REILLY. 1997.
[3] 徐国栋, 白英彩. 加密文件系统在Windows下的实现[J]. 微型电脑应用, 2006, 22(5):56-58.
[4] Bruce Schneier著,吴世忠, 祝世雄, 张文政,等译. 应用密码学——协议、算法与C源程序[M]. 机械工业出版社,2014.
[5] Xuan H L, Doll T, Barbosu M, et al. An enhancement of the Role-Based Access Control model to facilitate information access management in context of team collaboration and workflow. Journal of Biomedical Informatics, 2012, 45(6):1084-1107.
[6] Beckley K, Sikora P, Allos B. File transfer system and method for monitoring and management of remote devices, US8880653[P]. 2014.
File Filter Diver On Windows
Xu Guodong, Zhu Liang
(Shaanxi Defence Vocational and Technical College, Xi’An 710300, China)
Via file filter driver, the I/O subsystem can be extended easily without changing the complex file system. Combined with cryptography and access control technology, a security file system is realized.
File Filter Driver; I/O request package; Role-Based Access Control.
TP183
A
1007-757X(2016)07-0074-02
2016.01.20)
徐国栋(1981-),男,上海其祥电脑系统工程有限公司,工程师,硕士,研究方向:信息安全与网络通讯,上海 200237
朱 亮(1983-),男,北京科瑞科技发展股份有限公司,硕士,研究方向:信息安全与系统应用,上海,100097