发明名称 一种基于影子文件的文件加密系统
摘要 发明涉及一种基于影子文件的文件加密系统,所述系统包括一个文件加密过滤器驱动;当一个受信进程打开或创建一个文件时,若要打开或创建的文件是一个加密文件或者是位于安全文件目录或安全文件盘中的一个文件,则文件加密过滤器驱动将文件打开或创建操作重定向到一个临时文件目录;之后,文件加密过滤器驱动将受信进程针对影子文件的I/O操作转化为针对影子文件的原文件的I/O操作,并在操作过程中对读取的加密数据进行解密,对存写的明文数据进行加密,以及保持影子文件和原文的文件控制块中的文件信息和缓存数据一致;而非受信进程对加密文件直接进行I/O操作;由于受信进程和非受信进程有各自的数据缓存,从而避免了频繁清缓存的问题。
申请公布号 CN105426766A 申请公布日期 2016.03.23
申请号 CN201510707983.7 申请日期 2015.10.27
申请人 武汉理工大学 发明人 龙毅宏
分类号 G06F21/60(2013.01)I;G06F21/62(2013.01)I 主分类号 G06F21/60(2013.01)I
代理机构 武汉开元知识产权代理有限公司 42104 代理人 潘杰
主权项 一种基于影子文件的文件加密系统,其特征是:所述文件加密系统包括文件加密过滤器驱动;所述文件加密过滤器驱动是一个插入到计算机文件系统驱动栈中的、通过拦截文件I/O操作对文件进行加密和解密处理的文件过滤器驱动;当一个受信进程打开或创建一个文件时,所述文件加密过滤器驱动先检查确定要打开或创建的文件是否是一个加密文件,若是,则将文件打开或创建操作重定向到一个临时文件目录;否则,所述文件加密过滤器驱动进一步检查确定要打开或创建的文件是否位于安全文件目录或安全文件盘中,若不是,则对文件打开或创建操作不作进一步处理,若是,则将文件打开或创建操作重定向到一个临时文件目录;重定向到临时文件目录中被打开或创建的文件称为重定向前受信进程要打开或创建的文件的影子文件,而重定向前受信进程要打开或创建的文件称为影子文件的原文件;针对同一个原文件,重定向后的影子文件具有相同的文件路径;重定向后的影子文件的文件路径中包含原文件的文件路径信息,或者通过重定向后的影子文件的文件路径可获得原文件的文件路径;若针对影子文件的文件打开或创建操作请求中的文件打开或创建方式是:若文件不存在则报错,则在针对影子文件的文件打开或创建操作进行之前,所述文件加密过滤器驱动通过影子文件的文件路径获得重定向前的原文件的文件路径,然后检查影子文件的原文件是否已存在,若是,则将针对影子文件的文件打开或创建操作请求中的文件打开或创建方式修改为若文件不存在则创建,然后让修改后的针对影子文件的文件打开或创建操作请求通过,否则,返回文件不存在的错误;在影子文件打开或创建操作完成之后,所述文件加密过滤器驱动通过影子文件的文件路径获得重定向前的原文件的文件路径,然后按影子文件打开或创建的方式打开或创建影子文件的原文件,并将打开或创建的影子文件同打开或创建的原文件关联;当一个影子文件被初始打开或创建后,所述文件加密过滤器驱动通过文件I/O操作设置影子文件的文件信息,或者直接修改影子文件在内存中的文件控制块,设置文件控制块中的文件信息,且当影子文件是以缓存方式打开或创建时,通过调用缓存管理函数重新设置文件的数据缓存大小,使得影子文件与原文件在内存中的文件控制块和数据缓存具有一致的文件信息和数据缓存大小,包括一致的文件长度、文件分配长度,以及一致的其他影响文件I/O操作的文件信息;当一个非受信进程在安全文件目录或安全文件盘中打开或创建一个文件时,或者当所述文件加密过滤器驱动因将影子文件同原文件关联而打开或创建影子文件在安全文件目录或安全文件盘中的原文件时,若所述文件加密过滤器驱动检查发现在安全文件目录或安全文件盘中打开或创建的文件是一个非加密文件,则所述文件加密过滤器驱动先将打开或创建的文件加密成加密文件;文件加密过滤器驱动根据特征数据判断打开或创建的文件是非加密的文件还是加密的文件;当一个受信进程或操作系统辅助文件I/O操作的系统进程对一个已打开或创建的影子文件进行文件信息设置操作时,所述文件加密过滤器驱动一方面针对影子文件的原文件进行同样的文件信息设置操作,另一方面将针对影子文件的文件信息设置操作传递下去,或者根据文件信息设置操作要设置的文件信息直接设置影子文件的文件控制块中的文件信息,且当设置的文件信息是文件长度或文件分配长度而影子文件是以缓存方式打开或创建时,通过调用缓存管理函数重新设置影子文件的数据缓存大小,使得影子文件与原文件在内存中的文件控制块和数据缓存具有一致的文件信息和数据缓存大小,包括一致的文件长度、文件分配长度,以及一致的其他影响文件I/O操作的文件信息;当一个受信进程或操作系统辅助文件I/O操作的系统进程对一个已打开或创建的影子文件进行文件数据读取操作时,所述文件加密过滤器驱动将针对影子文件的数据读取操作转化成针对影子文件的原文件的数据读取操作,并对从影子文件的原文件读取的加密数据进行解密处理;当一个受信进程或操作系统辅助文件I/O操作的系统进程对一个已打开或创建的影子文件进行文件数据存写操作时,所述文件加密过滤器驱动一方面将针对影子文件的数据存写操作转化成针对影子文件的原文件的数据存写操作,并在将数据存写到影子文件的原文件之前,先对要存写的明文数据进行加密处理,另一方面当影子文件是以缓存方式打开或创建时,通过调用缓存管理函数清空影子文件的原文件在内存中的缓存数据;当一个受信进程对一个已打开或创建的影子文件进行文件重命名操作时,所述文件加密过滤器驱动将针对影子文件的文件重命名操作转化成针对影子文件的原文件的文件重命名操作,于此同时,所述文件加密过滤器驱动对影子文件也进行重命名操作,或者不进行重命名操作;若所述文件加密过滤器驱动对影子文件也进行重命名操作,则重名后的原文件的文件路径与重名后的影子文件的文件路径按照原文件的文件路径与影子文件的文件路径的对应方式保持对应关系;若所述文件加密过滤器驱动对影子文件不进行重命名操作,则所述文件加密过滤器驱动维护重名后的原文件的文件路径与影子文件的文件路径的对应关系;所述文件加密过滤器驱动对针对一个已打开或创建的影子文件的缓存数据刷写操作不转化成针对原文件的缓存数据刷写操作;当一个非受信进程打开或创建一个文件时,所述文件加密过滤器驱动不进行文件打开或创建操作重定向处理;当一个非受信进程对临时文件目录中的影子文件进行文件I/O操作时,所述文件加密过滤器驱动阻止非受信进程对临时文件目录中的影子文件所进行的文件I/O操作;当一个非受信进程或操作系统辅助文件I/O操作的系统进程对一个由非受信进程打开或创建的加密文件进行文件信息设置操作时,所述文件加密过滤器驱动一方面检查加密文件是否有影子文件,若有,则通过文件I/O操作设置影子文件的文件信息,或者直接设置影子文件的文件控制块中的文件信息,且当设置的文件信息是文件长度或文件分配长度而影子文件是以缓存方式打开或创建时,通过调用缓存管理函数重新设置影子文件的数据缓存大小,另一方面将针对加密文件的文件信息设置操作传递下去,使得影子文件与原文件在内存中的文件控制块和数据缓存具有一致的文件信息和数据缓存大小,包括一致的文件长度、文件分配长度,以及一致的其他影响文件I/O操作的文件信息;当一个非受信进程或操作系统辅助文件I/O操作的系统进程对一个由非受信进程打开或创建的加密文件进行数据存写操作时,所述文件加密过滤器驱动一方面检查加密文件是否有影子文件,若有,则通过调用缓存管理函数清空影子文件的缓存数据,另一方面将针对加密文件的数据存写操作传递下去;当一个非受信进程或操作系统辅助文件I/O操作的系统进程对一个由非受信进程打开或创建的加密文件进行数据存写时,若所述文件加密过滤器驱动发现存写的数据是非加密的数据,则所述文件加密过滤器驱动对要存写的数据进行加密处理;所述文件加密过滤器驱动根据特征数据判断存写的数据是非加密的数据还是加密的数据;当临时文件目录中的一个影子文件不再使用时,所述文件加密系统删除不再使用的影子文件;所述安全文件目录或安全文件盘是计算机文件系统的一个文件目录或文件盘,安全文件目录或安全文件盘中的文件被所述文件加密系统自动加密;加密后的文件的名字和类型不变,即加密后的文件保持原有文件的名字和扩展名;所述临时文件目录是一个预先设定的文件加密系统用于辅助加密文件处理的文件目录;所述受信进程是被允许获取加密文件的明文数据的程序进程;而不被允许获取加密文件的明文数据的程序进程称为非受信进程;受信进程针对文件类型而设定;对于任何文件类型而言,操作系统辅助文件I/O操作的系统进程既不是受信进程,也不是非受信进程;当针对一个由非受信进程打开或创建的加密文件进行文件I/O操作时,操作系统辅助文件I/O操作的系统进程不被允许获取加密文件的明文数据;当针对一个由受信进程打开或创建的影子文件进行文件I/O操作时,操作系统辅助文件I/O操作的系统进程被允许获取影子文件对应的原文件的明文数据。
地址 430070 湖北省武汉市洪山区珞狮路122号