发明名称 一种基于FUSE的双向文件加密系统
摘要 本发明涉及一种由用户空间文件系统和文件重定向过滤器驱动构成的基于FUSE的双向文件加密系统:当一个程序进程针对加密文件目录中的一个加密文件进行文件I/O操作时,文件重定向过滤器驱动将程序进程针对加密文件的文件I/O操作重定向到用户空间文件系统,由用户空间文件系统完成文件I/O操作,并在I/O操作过程中使得受信进程获得明文数据,而非受信进程获得密文数据;当一个非受信进程针对非加密文件目录中的一个明文文件进行文件I/O操作时,文件重定向过滤器驱动将非受信进程针对明文文件的I/O操作重定向到用户空间文件系统,由用户空间文件系统完成文件I/O操作,并在I/O操作过程中确保非受信进程获得的是密文数据。
申请公布号 CN105760779A 申请公布日期 2016.07.13
申请号 CN201610090739.5 申请日期 2016.02.18
申请人 武汉理工大学 发明人 龙毅宏
分类号 G06F21/62(2013.01)I 主分类号 G06F21/62(2013.01)I
代理机构 武汉开元知识产权代理有限公司 42104 代理人 潘杰
主权项 一种基于FUSE的双向文件加密系统,其特征是:所述双向文件加密系统包括:用户空间文件系统:一个采用用户空间文件系统技术开发的、对文件进行加密和解密处理的系统;所述用户空间文件系统在用户计算机系统中对应一个文件盘或文件目录,即表现为一个文件盘或文件目录;所述用户空间文件系统对应的文件盘或文件目录称为虚拟文件盘或虚拟文件目录;所述虚拟文件盘或虚拟文件目录中的文件称为虚拟文件;所述用户空间文件系统又包括FUSE文件驱动、FUSE用户空间程序,其中,FUSE文件驱动是所述用户空间文件系统的驱动,FUSE用户空间程序是用户空间文件系统中对文件I/O操作请求进行处理的用户空间程序;FUSE用户空间程序的程序进程称为FUSE用户空间进程;当一个程序进程请求以缓存I/O方式打开或创建虚拟文件盘或虚拟文件目录中的一个虚拟文件时,所述用户空间文件系统的FUSE文件驱动不为打开或创建的虚拟文件在内存中创建数据缓存,即:即便程序进程请求以缓存I/O方式打开或创建虚拟文件,FUSE文件驱动也不为打开或创建的虚拟文件创建数据缓存;对于程序进程针对被打开或创建的虚拟文件进行的所有文件I/O操作,所述用户空间文件系统的FUSE文件驱动按非缓存I/O的方式进行响应处理,即:FUSE文件驱动将针对虚拟文件的所有文件I/O操作请求,包括数据读取和存写、文件信息设置和查询,都提交到FUSE用户空间进程进行处理;文件重定向过滤器驱动:一个拦截文件I/O操作请求并进行文件I/O操作重定向处理的文件系统过滤器驱动类型的驱动;所述双向文件加密系统所在用户计算机中的文件目录包括加密文件目录和非加密文件目录,存储在加密文件目录中的文件被所述双向文件加密系统自动加密成为加密文件,而存储在非加密文件目录中的文件是明文文件或者加密文件,存储在非加密文件目录中的明文文件不被所述双向文件加密系统自动加密成为加密文件;对所述双向文件加密系统所在用户计算机中的文件包括明文文件和密文文件进行文件I/O操作的程序进程包括受信进程、非受信进程、中性进程以及操作系统辅助文件I/O操作的系统进程;所述受信进程是中性进程以及操作系统辅助文件I/O操作的系统进程以外的被允许获取文件的明文数据的程序进程;所述非受信进程是中性进程以及操作系统辅助文件I/O操作的系统进程以外的不被允许取文件的明文数据的程序进程;受信进程和非受信进程针对文件类型而设定;所述中性进程是一个在读取文件的数据时始终读取的是文件在磁盘上的原始数据的程序进程;操作系统辅助文件I/O操作的系统进程辅助一个程序进程所进行的文件I/O操作是被辅助的程序进程所进行的文件I/O操作的一部分;在处理一个程序进程针对一个文件的文件I/O操作请求的过程中,FUSE文件驱动将进行文件I/O操作的程序进程的进程ID或名称连同文件I/O操作请求一起传递到FUSE用户空间进程;若传递的是进程ID,则FUSE用户空间进程通过进程ID得到程序进程的名称;之后FUSE用户空间进程通过程序进程的名称确定进行文件I/O操作的程序进程是受信进程,非受信进程,中性进程,还是操作系统辅助文件I/O操作的系统进程;所述文件重定向过滤器驱动对一个程序进程打开或创建一个文件的I/O操作请求按如下方式进行重定向处理:当一个程序进程请求打开或创建加密文件目录中的一个文件包括加密文件和明文文件时,或请求打开或创建非加密文件目录中的一个加密文件时,所述文件重定向过滤器驱动将文件打开或创建请求重定向到用户空间文件系统所对应的虚拟文件盘或虚拟文件目录中的一个虚拟文件;当一个受信进程请求打开或创建非加密文件目录中的一个明文文件时,所述文件重定向过滤器驱动不对文件打开或创建请求进行重定向;当一个非受信进程或中性进程请求打开或创建非加密文件目录中的一个明文文件时,所述文件重定向过滤器驱动将文件打开或创建请求重定向到用户空间文件系统所对应的虚拟文件盘或虚拟文件目录中的一个虚拟文件;或者,当一个受信进程或中性进程请求打开或创建非加密文件目录中的一个明文文件时,所述文件重定向过滤器驱动不对文件打开或创建请求进行重定向,而当一个非受信进程请求打开或创建非加密文件目录中的一个明文文件时,所述文件重定向过滤器驱动将文件打开或创建请求重定向到用户空间文件系统所对应的虚拟文件盘或虚拟文件目录中的一个虚拟文件;当一个程序进程请求打开或创建加密文件目录或非加密文件目录中的一个不存在的文件时,被打开或创建的文件被当作明文文件;所述文件重定向过滤器驱动对所述用户空间文件系统的FUSE用户空间进程针对加密文件目录和非加密文件目录中的文件包括加密文件和明文文件所进行的文件打开或创建操作请求不进行重定向处理,对所述用户空间文件系统的FUSE用户空间进程针对加密文件目录和非加密文件目录中的文件包括加密文件和明文文件所进行的文件I/O操作不干预;加密文件目录和非加密文件目录中的重定向前的文件称为重定向后的虚拟文件的对应原文件;当所述文件重定向过滤器驱动将一个程序进程针对加密文件目录或非加密文件目录中的一个文件所进行的文件打开或创建操作重定向到用户空间文件系统对应的虚拟文件盘或虚拟文件目录中的一个虚拟文件时,所述文件重定向过滤器驱动将重定向前的原文件的完整文件路径,包括文件所在文件盘的信息,编码在重定向后的虚拟文件的文件路径中,即重定向后的虚拟文件的文件路径中包含有重定向前程序进程要打开或创建的原文件的完整文件路径信息,重定向前的原文件同重定向后的虚拟文件之间存在一一对应的关系,而所述用户空间文件系统的FUSE用户空间进程从程序进程要打开或创建的虚拟文件的文件路径中获得虚拟文件的对应原文件的完整文件路径;当接收到一个程序进程针对虚拟文件盘或虚拟文件目录中的一个虚拟文件进行文件打开或创建的操作请求后,所述用户空间文件系统的FUSE用户空间进程从程序进程请求打开或创建的虚拟文件的文件路径中获得重定向前的原文件的完整文件路径,然后将程序进程针对虚拟文件的打开或创建操作转化为针对虚拟文件对应的重定向前的原文件的打开或创建操作,之后将程序进程针对虚拟文件的文件I/O操作转化为针对重定向前的原文件的文件I/O操作;特别地:在将程序进程针对虚拟文件的打开或创建操作转化为针对虚拟文件对应的重定向前的原文件的打开或创建操作过程中,若所述FUSE用户空间进程检查发现程序进程要打开或创建的虚拟文件的对应原文件的是加密文件目录中的一个明文文件,则FUSE用户空间进程将虚拟文件的对应原文件加密成为一个加密文件;若原文件是位于加密文件目录中的文件,则在将程序进程针对虚拟文件的文件I/O操作转化为针对重定向前的原文件的文件I/O操作过程中,FUSE用户空间进程按正向加密方式对文件I/O操作进行处理;若原文件是位于非加密文件目录中的加密文件,则在将程序进程针对虚拟文件的文件I/O操作转化为针对重定向前的原文件的文件I/O操作过程中,FUSE用户空间进程按正向加密方式或可变正向加密方式对文件I/O操作进行处理;若原文件是位于非加密文件目录中的明文文件,则在将程序进程针对虚拟文件的文件I/O操作转化为针对重定向前的原文件的文件I/O操作过程中,FUSE用户空间进程按反向加密方式或可变反向加密方式对文件I/O操作进行处理;所述正向加密方式是:当一个程序进程通过虚拟文件及用户空间文件系统对一个加密文件进行数据读取操作时,若程序进程是受信进程,则程序进程读取的是明文数据,若程序进程是非受信进程或中性进程,则程序进程读取的是密文数据;而当一个程序进程通过虚拟文件及用户空间文件系统对一个加密文件进行数据存写操作时,无论程序进程要存写的是明文数据还是密文数据,最终存写到文件的数据是加密数据,即加密文件在磁盘上始终保持为加密文件;所述可变正向加密方式是:当一个程序进程通过虚拟文件及用户空间文件系统对一个加密文件进行数据读取操作时,若程序进程是受信进程,则程序进程读取的是明文数据,若程序进程是非受信进程或中性进程,则程序进程读取的是密文数据;而当一个程序进程通过虚拟文件及用户空间文件系统对一个加密文件进行数据存写操作时,程序进程要存写的数据被直接存写到文件,即若程序进程要存写的是明文数据,则明文数据被存写到磁盘上的文件,磁盘上的加密文件变成明文文件,若程序进程要存写的是密文数据,则密文数据被存写到磁盘上的文件,磁盘上的文件仍然保持为加密文件;所述反向加密方式是:当一个程序进程通过虚拟文件及用户空间文件系统对一个明文文件进行数据读取操作时,若程序进程是受信进程或中性进程,则程序进程读取的是明文数据,若程序进程是非受信进程,则程序进程读取的是密文数据;而当一个程序进程通过虚拟文件及用户空间文件系统对一个明文文件进行数据存写操作时,无论程序进程要存写的是明文数据还是密文数据,最终存写到文件的数据是明文数据,即明文文件在磁盘上始终保持为明文文件;所述可变反向加密方式是:当一个程序进程通过虚拟文件及用户空间文件系统对一个明文文件进行数据读取操作时,若程序进程是受信进程或中性进程,则程序进程读取的是明文数据,若程序进程是非受信进程,则程序进程读取的是密文数据;而当一个程序进程通过虚拟文件及用户空间文件系统对一个明文文件进行数据存写操作时,若程序进程要存写的是明文数据,则明文数据被直接存写到文件,即磁盘上的文件仍然保持为明文文件,若程序进程要存写的是密文数据,则FUSE用户空间进程进一步根据策略确定最终是存写明文数据还是密文数据,若确定最终是存写明文数据,则FUSE用户空间进程将密文数据解密后再存写到文件,即磁盘上的文件保持为明文文件,若确定最终是存写密文数据,则FUSE用户空间进程直接将密文数据存写到文件,即磁盘上的明文文件变成加密文件;确定最终是存写明文数据还是密文数据的策略来自配置信息或包含在要存写的密文数据中或编码在FUSE用户空间程序的代码中。
地址 430070 湖北省武汉市洪山区珞狮路122号