一种基于影子文件的文件加密系统的制作方法

文档序号:9667712阅读:462来源:国知局
一种基于影子文件的文件加密系统的制作方法
【技术领域】
[0001]本发明属于信息安全技术领域,特别是一种基于影子文件的文件加密系统。
【背景技术】
[0002]基于文件过滤器驱动(File Filter Driver)的基于桥文件系统的文件加密系统能在不影响用户使用习惯的情况下自动实现文件的加密和解密,是保证数据安全的重要技术手段。但目前的基于文件过滤器驱动的透明文件加密技术普遍存在如下问题。
[0003]目前的文件系统(如Windows文件系统)都是带缓存的文件系统,S卩,当应用程序读取一个文件的数据时,文件系统先看内存中是否缓存有应用程序要读取的内容,若有,则直接将内存中缓存的数据返回,否则,文件系统从存储介质中读取一定数量文件数据(通常是几个页的数据,如通过文件的page读操作),然后一方面将读取的文件数据缓存在内存中,另一方面将应用程序所需数据返回给应用程序;当多个进程同时打开同一个文件时,它们共享文件缓存数据(在Windows文件系统中,一个文件只有一个文件控制块FCB,因此多个进程同时打开同一个文件时,它们共享一个FCB和文件缓存)。
[0004]在基于文件过滤器驱动的透明文件加密系统中,通常将程序进程分为受信进程和非受信进程,受信进程针对特定的文件类型而设定;一个受信进程被允许获得对应文件类型的加密文件的明文数据,而一个受信进程则不被允许,比如Word程序的程序进程是Word文档加密文件的受信进程,能够获得Word文档加密文件中的明文数据,而浏览器进程作为Word文档的非受信进程则不被允许获得Word文档加密文件中的明文数据。这样,当一个受信进程读取一个加密文件时,内存中缓存的是明文数据,而当一个非受信进程读取一个加密文件时,内存中缓存的是密文数据。当一个受信进程和一个非受信进程交替读取一个加密文件时,文件加密系统需要不断地清空内存中缓存的数据,以确保内存中缓存有正确的数据(明文或密文),这称为暴力刷缓存或清缓存问题,暴力刷缓存或清缓存降低了文件操作的效率;进一步地,当一个受信进程和一个非受信进程同时读取一个加密文件时,文件加密系统就很难处理了,这时内存中缓存的数据有可能同时存在明文和密文数据,这既可能造成敏感数据泄漏,又使得受信进程无法正常工作。
[0005]针对透明文件加密中的数据缓存问题,人们提出一些解决方案,如双缓存方案等。双缓存方案设法使得受信进程和非受信进程读取不同的缓存数据,这种方案比较复杂。
[0006]基于文件过滤器驱动解决透明文件加密中的暴利刷缓存或清缓存问题目前尚未有很完善的方案。对此,人们自然想到能否从文件系统入手,即直接开发一个满足应用需求的透明加密文件系统(一个自动实现文件加密、解密的文件系统),基于LayerFSD+多FCB (File Control Block,文件控制块)的SEFS透明加密文件系统即是这样的一个加密文件系统(参见基于LayerFSD技术的SEFS透明加密平台技术白皮书)。基于LayerFSD+多FCB的SEFS透明加密文件系统让每个进程有自己的FCB和缓存,这样受信进程的缓存是明文,而非受信进程的缓存是密文。这样一个多FCB的加密文件系统存在的问题是:1)多个进程同时访问一个文件时,内存利用率和文件访问效率低;2)改变了操作系统管理文件数据和文件操作的方式,比如,操作系统认为同一个文件应只有一个FCB和缓存,而对这种文件数据管理方式的改变的可能会遇到不可预料的问题;3)同通常的文件系统驱动的开发存在较大差别。

【发明内容】

[0007]本发明的目的是针对Windows系统,提出一种基于影子文件的文件加密系统以克服现有技术的不足。
[0008]为了实现本发明的目的,本发明所提出的技术方案是:
[0009]—种基于影子文件的文件加密系统,具体如下:
[0010]所述文件加密系统包括文件加密过滤器驱动;所述文件加密过滤器驱动是一个插入到计算机文件系统驱动栈中的、通过拦截文件I/O操作对文件进行加密和解密处理的文件过滤器驱动;
[0011]当一个受信进程打开或创建一个文件时,文件加密过滤器驱动先检查确定要打开或创建的文件是否是一个加密文件,若是,则将文件打开或创建操作重定向到一个临时文件目录;否则,文件加密过滤器驱动进一步检查确定要打开或创建的文件是否位于安全文件目录或安全文件盘中,若不是,则对文件打开或创建操作不作进一步处理(即让文件打开或创建操作通过),若是,则将文件打开或创建操作重定向到一个临时文件目录;重定向到临时文件目录中被打开或创建的文件称为重定向前受信进程要打开或创建的文件的影子文件,而重定向前受信进程要打开或创建的文件称为影子文件的原文件;针对同一个原文件,重定向后的影子文件具有相同的文件路径;重定向后的影子文件的文件路径中包含原文件的文件路径信息,或者通过重定向后的影子文件的文件路径可获得原文件的文件路径;
[0012]若针对影子文件的文件打开或创建操作请求中的文件打开或创建方式是若文件不存在则报错(即仅打开已存在的文件),则在针对影子文件的文件打开或创建操作进行之前,文件加密过滤器驱动通过影子文件的文件路径获得重定向前的原文件的文件路径,然后检查影子文件的原文件是否已存在,若是,则将针对影子文件的文件打开或创建操作请求中的文件打开或创建方式修改为若文件不存在则创建(即若文件存在则打开,若文件不存在则创建),然后让修改后的针对影子文件的文件打开或创建操作请求通过,否则,返回文件不存在的错误;
[0013]在影子文件打开或创建操作完成之后,文件加密过滤器驱动通过影子文件的文件路径获得重定向前的原文件的文件路径,然后按影子文件打开或创建的方式打开或创建影子文件的原文件,并将打开或创建的影子文件同打开或创建的原文件关联(比如,若影子文件以缓存方式打开,则将原文件以缓存方式打开;若影子文件以非缓存方式打开,则将原文件以非缓存方式打开,使得影子文件同原文件的打开或创建方式一样);
[0014]当一个影子文件被初始打开或创建后,文件加密过滤器驱动通过文件I/O操作设置影子文件的文件信息,或者直接修改影子文件在内存中的文件控制块(File ControlBlock, FCB),设置文件控制块中的文件信息,且对以缓存方式打开或创建的影子文件,通过调用缓存管理函数(如Windows Cache Manager的函数)重新设置文件的数据缓存大小,使得影子文件与原文件在内存中的文件控制块和数据缓存具有一致的文件信息和数据缓存大小,包括一致的文件长度(File Size)、文件分配长度(File Allocat1n Size),以及一致的其他影响文件I/O操作的文件信息(一致不意味一样,比如,若加密文件有附加头部,则可能会有头部长度的差别);
[0015]当一个非受信进程在安全文件目录或安全文件盘中打开或创建一个文件时,或者当文件加密过滤器驱动因将影子文件同影子文件的原文件关联而打开或创建影子文件在安全文件目录或安全文件盘中的原文件时,若文件加密过滤器驱动检查发现在安全文件目录或安全文件盘中打开或创建的文件是一个非加密文件,则文件加密过滤器驱动先将打开或创建的文件加密成加密文件(即确保影子文件的原文件总是加密文件);文件加密过滤器驱动根据特征数据判断打开或创建的文件是非加密的文件还是加密的文件(如附加头部的特征数据);
[0016]当一个受信进程或操作系统辅助文件I/O操作的系统进程(如Windows的System进程)对一个已打开或创建的影子文件进行文件信息设置操作时,文件加密过滤器驱动一方面针对影子文件的原文件进行同样的文件信息设置操作,另一方面将针对影子文件的文件信息设置操作传递下去,或者根据文件信息设置操作要设置的文件信息直接设置影子文件的文件控制块中的文件信息,且当设置的文件信息是文件长度
当前第1页1 2 3 4 5 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1