一种基于桥文件系统的文件加密系统的制作方法
【技术领域】
[0001]本发明属于信息安全技术领域,特别是一种基于桥文件系统的文件加密系统。
【背景技术】
[0002]基于文件过滤器驱动(File Filter Driver)的透明文件加密系统能在不影响用户使用习惯的情况下自动实现文件的加密和解密,是保证数据安全的重要技术手段。但目前的基于文件过滤器驱动的透明文件加密技术普遍存在如下问题。
[0003]目前的文件系统(如Windows文件系统)都是带缓存的文件系统,即,当一个程序进程读取一个文件的数据时,文件系统先看内存中是否缓存有程序进程要读取的数据,若有,则直接将内存中缓存的数据返回,否则,文件系统从存储介质中读取一定数量的文件数据(通常是几个页的数据,如通过文件I/o的page读操作),然后一方面将读取的文件数据缓存在内存中,另一方面将程序进程所需数据返回;当多个进程同时打开同一个文件时,它们共享文件缓存数据(在Windows文件系统中,一个文件只有一个文件控制块FCB,一个FCB对应一个文件缓存,因此多个进程同时打开同一个文件时,它们共用一个FCB和文件缓存)。
[0004]在基于文件过滤器驱动的透明文件加密系统中,通常将程序进程分为受信进程和非受信进程;一个受信进程被允许获得加密文件的明文数据,而一个非受信进程则不被允许,比如Word程序的程序进程是加密后的Word文档的受信进程,能够获得Word文档加密文件中的明文数据,而浏览器进程作为Word文档的非受信进程则不被允许获得Word文档加密文件中的明文数据。受信进程针对特定的文件类型而设定(如Word程序的程序进程是加密Word文档受彳目进程)。
[0005]由于文件系统的缓存机制,当一个受信进程读取一个加密文件时,内存中缓存的是明文数据(在Windows环境下,由于存在以内存映射方式打开的文件,因此,透明文件加密系统通常是在文件Page读时进行数据解密,从而使得内存中缓存的是明文数据),而当一个非受信进程读取一个加密文件时,内存中缓存的是密文数据。当一个受信进程和一个非受信进程交替读取一个加密文件时,文件加密系统需要不断地清空内存中缓存的数据,以确保内存中缓存有正确的数据(明文或密文),这称为暴力刷缓存或清缓存问题,暴力刷缓存或清缓存降低了文件操作的效率;进一步地,当一个受信进程和一个非受信进程同时读取一个加密文件时,文件加密系统就很难处理了,这时内存中缓存的数据有可能同时存在明文和密文数据,这既可能造成敏感数据泄漏,又使得受信和非受信进程获得错误的数据。
[0006]针对透明文件加密中的数据缓存问题,人们提出一些解决方案,如双缓存方案,多FCB方案等。双缓存方案在内核层改变文件1/0的操作处理,设法使得受信进程和非受信进程读取不同的缓存数据,但技术方案复杂。而多FCB方案(如基于LayerFSD技术的SEFS,参见基于LayerFSD技术的SEFS透明加密平台技术白皮书)实际上是引入了一个新的文件系统,它使得每个进程有自己的FCB和缓存,开发一个这样的新的文件系统当然是件很复杂的事情,而且内存利用率、存在重复读取数据的问题,这种方案的最大问题是用户和程序不能在原有文件系统上直接操作,而是在新文引入的件系统上操作。
【发明内容】
[0007]本发明的目的是提出一种基于桥文件系统的文件加密系统,以克服现有技术方案在缓存处理方面的不足。
[0008]为了实现本发明的目的,本发明所提出的技术方案是:一种基于桥文件系统的文件加密系统,所述系统包括文件加密过滤器驱动和桥文件系统,其中:
[0009]文件加密过滤器驱动:插入到计算机文件系统中的一个过滤器类型的驱动,当一个受信进程打开或创建一个加密文件(注:在许多文件系统中打开和创建是同一种文件I/O操作,只是命令的名字用“打开”或“创建”文件而已),或者打开或创建安全文件目录或安全文件盘中的一个文件(加密或未加密文件)时,文件加密过滤器驱动将文件打开或创建操作重定向到桥文件系统所映射或对应的虚拟文件盘或虚拟文件目录中的一个文件(虚拟文件),即在重定向后的文件打开或创建操作中,受信进程要打开或创建的原文件的文件路径被转换成(桥文件系统所映射或对应的)虚拟文件盘或虚拟文件目录中的一个文件路径(一个虚拟文件路径);所述安全文件目录或安全文件盘是计算机文件系统的一个文件目录或文件盘,安全文件目录或安全文件盘中的文件被基于桥文件系统的文件加密系统自动加密;加密后的文件的名字和类型不变,即加密后的文件保持原有文件的名字和扩展名;
[0010]桥文件系统:一个在受信进程对加密文件或者安全文件目录或安全文件盘中的文件进行文件I/o操作过程中起着桥梁作用(桥接、转换)的用户空间文件系统(Filesystemin User space,FUSE);桥文件系统又包括FUSE文件驱动(用户空间文件系统的文件驱动)和FUSE用户空间程序(用户空间文件系统的用户空间程序);桥文件系统(的FUSE文件驱动)被映射或对应到计算机文件系统的一个虚拟文件盘或虚拟文件目录;所述虚拟文件盘或虚拟文件目录不对应计算机文件系统的存储介质上的一个磁盘分区或文件目录结构,但在用户和程序进行文件I/O操作时表现为一个文件盘或文件目录(本发明所说的虚拟文件盘可以仅是从文件系统层面的虚拟文件盘,不必是设备层面的虚拟磁盘,即通过文件系统驱动虚拟出的文件盘,而不必是采用了设备驱动虚拟出的磁盘);桥文件系统的FUSE用户空间程序的程序进程(即FUSE用户空间程序运行时的进程)对所有加密文件而言都是非受信进程;当文件加密过滤器驱动将一个受信进程打开或创建一个加密文件的操作,或者打开或创建安全文件目录或安全文件盘中的一个文件的操作,重定向到桥文件系统所映射或对应的虚拟文件盘或虚拟文件目录后,桥文件系统通过FUSE用户空间程序将受信进程针对重定向后的文件的所有操作转化为针对重定向前的原文件的操作;
[0011]所述受信进程是被允许获取加密文件的明文的程序进程;所述非受信进程是不被允许获取加密文件的明文的程序进程;受信进程针对文件类型而设定(如Word程序的程序进程是Word文档的受信进程);所述文件I/O操作包括针对文件的所有操作。
[0012]当文件加密过滤器驱动将一个受信进程打开或创建一个加密文件的操作,或者打开或创建安全文件目录或安全文件盘中的一个文件的操作,重定向到桥文件系统所映射或对应的虚拟文件盘或虚拟文件目录中的文件时,重定向后的文件路径中包含有受信进程要打开或创建的原文件的文件路径,而桥文件系统从重定向后的文件路径中获得受信进程要打开或创建的原文件的文件路径,并由FUSE用户空间程序依据获得的原文件的文件路径对受信进程要打开或创建的原文件进行操作;若桥文件系统接收到打开或创建文件的操作请求后,发现请求中的文件