王川
长沙学院教务处 湖南 410003
数据加密是计算机数据的安全常用的保护手段,它使用各种加密算法对重要文件进行加密,使盗窃者无法获得真实的数据内容。市场上很多加密软件是基于应用层开发,由于其没有与操作系统集成,用户使用加密文件时每次使用都要输入密码,使用起来不方便。虽然微软提供的EFS系统的加/解密处理过程位于操作系统内核,得到系统内核的保护,可以进行文件透明加/解密,使用起来也很方便,但是它的缺点也是很多:安全控制需要在NTFS文件系统上使用;加密算法的安全性相对较低,且不能够更改;EFS只能针对指定文件和文件夹进行加密,而不能对某一类型的文件进行加密,灵活性不够。
文件系统过滤驱动技术可以使文件保护与 Windows系统紧密结合,在内核级实现了实时安全的文件加/解密,可以进行实时的文件访问控制,适用于Windows 2003/XP系统下的多种文件系统格式,不依赖于具体的应用程序。
Windows驱动模型(WDM)采用的是分层的结构。应用程序发出对磁盘设备的操作请求后,由I/O管理器构造相应的IRP,发往下层的文件系统驱动程序,文件系统驱动程序则把相对应于文件系统的操作转换为相对应于磁盘设备的操作,并通过I/O管理器来调用磁盘驱动程序。
根据WDM的特点,可以构造一个位于文件系统驱动程序之上的一种特殊的中间层驱动程序,我们称为文件系统过滤驱动程序,文件系统过滤驱动程序的位置如图1所示。有了文件系统过滤驱动程序后,I/O管理器构造的IRP则会先送给文件系统过滤驱动程序,然后再由文件过滤驱动程序在I/O管理器的帮助下将IRP传给下层的文件系统驱动程序。
因此,我们可以在文件系统过滤驱动程序这一层实现对文件系统操作的截取、监控甚至替换工作,由此实现许多新功能:①防病毒引擎。在系统读写文件时,捕获读写的数据内容,对内容检测是否含有病毒代码。②对用户透明的文件加解密。在文件写过程时对数据进行加密,在读文件的过程中进行解密。③对数据的读写进行访问控制。可以防止恶意进程对受保护文件的进行破坏。
图1 文件系统过滤驱动层次结构
文件保护系统的功能主要由文件系统过滤驱动、密钥管理、加/解密处理、配置程序和访问控制组成。各模块之间的关系如图2所示。文件系统过滤驱动是系统的核心,利用它实现对文件操作的截获,与系统中的其它模块进行交互,控制整个系统。密钥管理负责密钥的产生、分配、更换和销毁等方面管理工作。加/解密处理使用密钥对文件进行加/解密运算,也是对用户透明动态加/解密的实现部分。配置程序是用户用来定制和修改策略文件的模块。访问控制根据配置程序生成的策略配置文件对受保护的文件进行加/解密前的处理,包括安全目录识别、用户身份识别、安全目录访问控制、密钥文件访问控制和共享目录访问控制等,有利于提高文件保护系统的安全性和效率。
图2 文件安全保护系统结构
(1)构造文件系统过滤驱动对象,并附着在要过滤的文件系统对象之上。
(2)创建文件系统过滤驱动程序所需的分派例程,用于对IRP进行预处理。分派例程是用来响应应用程序的打开、读、写、关闭等I/O请求的一组回调函数,这些函数由系统在相应情况下调用。
(3)取消对目标设备的绑定过滤。
实现文件系统过滤驱动程序除了上述三个必要方面外,还有一些功能需要加入进来。如:实现文件系统过滤驱动程序与上层应用程序通信。实现过滤驱动的动态附着,以便能够过滤新加载的文件系统。
密钥管理负责密钥的产生、分配、更换和销毁等方面管理工作。文件保护系统采用两类加/解密算法,在保证安全性的同时保证了加密效率。对称加密算法的加密速度较快,但安全性较低,适合对文件内容进行加密。非对称加密算法安全性较高,但加密速度较慢。适合用来对加密密钥进行加密,这样有助于提高密钥的安全性,也方便文件共享。
在安全目录中对每一个文件都随机分配一个不同的文件密钥(文件密钥可以通过合理增加密钥长度提高破解密钥的难度,在保证一定加密速度的情况下适当地增强安全性),该目录下的所有文件密钥(不包括子文件夹)被存放在该目录下的同一个密钥文件中。密钥文件中存放着多条文件密钥信息,文件密钥信息的主要结构是:被加密的文件名、所有者、共享者、加密密钥等内容。密钥文件存放在安全目录中,每一个目录(包括子目录)都有一个。密钥文件是在安全目录创建时有密钥管理模块自动生成,删除安全目录及子目录时删除密钥文件。
对密钥文件我们采取两类保护措施:一是对密钥文件中的文件密钥信息使用文件所有者的公钥进行加密,这里不是对整个密钥文件整体用公钥加密,而是对每个文件密钥单独加密。而创建、修改或删除文件密钥都需要文件所有者插入私钥U盘才能进行。二是通过文件保护系统的访问控制模块对密钥文件进行保护,不准非授权程序进行创建、修改或者删除。通过这两类措施,大大提高了文件密钥安全性。
加/解密处理模块是位于内核模式中实现的,这样可以利用操作系统来提高加/解密过程的安全。在文件系统过滤驱动程序的读写处理中实现对文件的加密和解密。对拦截上层发送的读写 IRP,通过访问控制检查判断是否为合法访问,如是非法访问将阻止访问继续,对于合法访问还要判断是否为共享访问,共享访问不进行加解密,直接采用默认的处理。对于合法的非共享访问,按以下的流程进行访问,流程如图3所示。
应用程序写操作时,文件系统过滤驱动程序从I/O管理器截获IRP中的明文后,若该文件是已建文件,从密钥文件中取出文件密钥,从文件所有者私钥U盘中读出私钥,用私钥解密文件密钥,再用文件密钥加密明文并将其向下层驱动程序传递,在完成方法中恢复缓冲区的明文;若该文件是新建文件,首先由密钥管理模块生成文件密钥,用文件密钥加密明文的同时,还利用文件所有者公钥加密文件密钥并保存在密钥文件中。
应用程序读操作时,文件系统过滤驱动程序从文件驱动程序截获密文后,从密钥文件中读取文件对应的文件密钥,从文件所有者私钥U盘中读出私钥,用私钥解密文件密钥,在完成方法中用文件密钥解密密文并向上层传送明文至应用程序。
图3 加/解密处理流程
用户使用配置程序将配置好的策略生成策略文件,以加密的形式存放在操作系统下。系统的访问控制模块可以直接读取并解密策略文件,然后根据策略文件对保护文件进行加解密前的处理。访问控制功能主要有以下几个方面。
密钥访问控制:由于密钥的特殊性,除密钥管理模块外,不允许任何进程直接创建、修改、删除或读取该文件,密钥只允许过滤驱动程序通过密钥管理模块访问。用户访问控制:对于能提供私钥的文件所有者用户和合法的共享用户可以访问文件。安全文件识别:为提高工作效率,文件系统过滤驱动程序只处理访问安全文件的 IRP,不处理访问非安全文件的IRP。
本文提出的文件保护系统适用于Windows XP/2003操作系统,属于操作系统内核程序,系统的安全性得到操作系统的安全保障。系统采用了双密钥体系增强了文件系统的安全性,经测试表明,使用双密钥体系的文件加/解密与文件直接明文读取在效率上差距不大,具有较好的实用性。加密算法可以灵活采用并且不公开,提高了加密的安全性。系统也存在一定风险性,文件密钥保存在密钥文件里,如果该文件损坏或丢失将会导致密文无法解密。今后的研究重点放在密钥文件的安全保护和高效访问方面。
[1]胡宏银,姚峰,何成万.一种基于文件过滤驱动的Windows文件安全保护方案[J].计算机应用.2009.
[2]于飞,胡平.基于文件过滤驱动的局域网安全系统设计[J].计算机工程与设计.2008.
[3]沈玮,王雷,陈佳捷.基于文件系统过滤驱动的加密系统设计与实现[J].计算机工程.2009.
[4]王全民,周清,刘宇明,朱二夫.文件透明加密技术研究[J].计算机技术与发展.2010.
[5]王德明,刘淳,邱俊山.基于过滤器驱动程序的文件保护系统软件设计[J].四川理工学院学报(自然科学版).2006.
[6]Chris Cant.Windows WDM设备驱动程序开发指南[M].北京:机械工业出版社.2005.
[7]郑玉彤,王志娟.Windows驱动程序开发[M].北京:中央名族大学出版社.2006.