CN105760779B - 一种基于fuse的双向文件加密系统 - Google Patents
一种基于fuse的双向文件加密系统 Download PDFInfo
- Publication number
- CN105760779B CN105760779B CN201610090739.5A CN201610090739A CN105760779B CN 105760779 B CN105760779 B CN 105760779B CN 201610090739 A CN201610090739 A CN 201610090739A CN 105760779 B CN105760779 B CN 105760779B
- Authority
- CN
- China
- Prior art keywords
- file
- data
- original
- virtual
- fuse
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Expired - Fee Related
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/60—Protecting data
- G06F21/62—Protecting access to data via a platform, e.g. using keys or access control rules
- G06F21/6218—Protecting access to data via a platform, e.g. using keys or access control rules to a system of files or objects, e.g. local or distributed file system or database
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2221/00—Indexing scheme relating to security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F2221/21—Indexing scheme relating to G06F21/00 and subgroups addressing additional information or applications relating to security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F2221/2107—File encryption
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Computer Security & Cryptography (AREA)
- Bioethics (AREA)
- General Health & Medical Sciences (AREA)
- Computer Hardware Design (AREA)
- Health & Medical Sciences (AREA)
- Software Systems (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Databases & Information Systems (AREA)
- Storage Device Security (AREA)
Abstract
本发明涉及一种由用户空间文件系统和文件重定向过滤器驱动构成的基于FUSE的双向文件加密系统:当一个程序进程针对加密文件目录中的一个加密文件进行文件I/O操作时,文件重定向过滤器驱动将程序进程针对加密文件的文件I/O操作重定向到用户空间文件系统,由用户空间文件系统完成文件I/O操作,并在I/O操作过程中使得受信进程获得明文数据,而非受信进程获得密文数据;当一个非受信进程针对非加密文件目录中的一个明文文件进行文件I/O操作时,文件重定向过滤器驱动将非受信进程针对明文文件的I/O操作重定向到用户空间文件系统,由用户空间文件系统完成文件I/O操作,并在I/O操作过程中确保非受信进程获得的是密文数据。
Description
技术领域
本发明属于信息安全技术领域,特别是一种基于用户空间文件系统(File Systemin User Space,FUSE)的双向文件加密系统。
背景技术
为了实现透明文件加密并解决透明文件加密中存在的刷缓存、明文数据和密文数据混存的问题,本专利申请人在专利申请“一种基于用户空间文件系统的文件加密系统”(专利申请号:201510956820.2)中提出了一种借助用户空间文件系统(File System inUser Space,FUSE)实现透明文件加密的技术方案。201510956820.2中的文件加密系统由用户空间文件系统和文件重定向过滤器驱动组成,其基本原理是:当一个程序进程对受保护的安全文件目或安全文件盘中的一个文件进行文件I/O操作时,文件重定向过滤器驱动将程序进程针对文件的文件/O操作重定向到用户空间文件系统,然后由用户空间文件系统的用户空间进程完成对文件的I/O操作,并在操作过程中实现对文件的加密和解密。进一步地,在201510956820.2中,无论文件是以缓存I/O方式打开或创建,还是以非缓存I/O方式打开或创建,用户空间文件系统对程序进程对文件的I/O操作不进行缓存,包括不进行文件数据缓存,故避免了刷缓存以及明文数据和密文数据混存的问题。
在201510956820.2中描述的技术方案中,存储在安全文件目录或安全文件盘中的文件是加密文件;当一个程序进程对安全文件目录或安全文件盘中存储的加密文件进行I/O操作时,文件加密系统自动对文件进行加密、解密处理。但这种方案不能满足这样的安全需求:用户希望文件在磁盘上以明文形式存在,且大数程序进程能像通常一样对磁盘上的明文文件进行文件I/O操作,在此I/O操作过程中,文件加密系统不干预,而只有当某些特别的程序进程,如邮件客户端、浏览器等可外传文件的程序进程,对明文文件进行文件I/O操作,文件加密系统才会自动介入,确保这些特别的程序进程读取的文件数据是被加密的数据,但磁盘上存在的文件仍然是明文文件。
另外,201510956820.2中的技术方案在某些特别的情况下还存在如下问题:
若计算机系统存在这样的一个监视进程,它监视某个文件盘或某个文件目录中的文件I/O操作,一旦某个程序进程对文件盘或文件目录中的一个文件进行了文件打开或创建操作,这个监视进程也尝试打开或创建同一个文件并进行相应的处理,那么,使用201510956820.2中的文件加密系统将会出现文件打开或创建操作的循环:用户空间文件系统的FUSE用户空间程序进程为监视进程打开或创建正被监测的文件,监视进程发现用户空间程序进程打开或创建正被监测的文件后,也尝试打开或创建正被监测的文件,导致用户空间文件系统的FUSE用户空间程序进程再为监视进程打开或创建正被监测的文件,这个过程会不断的循环,直到资源耗尽、系统崩溃。
发明内容
本发明的目的是提出一种基于FUSE的双向文件加密系统,以满足针对文件的新的加密需求以及克服现有技术方案的不足。
为了实现本发明的目的,本发明所提出的技术方案是:一种基于FUSE的双向文件加密系统,所述双向文件加密系统包括用户空间文件系统和文件重定向过滤器驱动,其中:
用户空间文件系统:一个采用用户空间文件系统(File System in User Space,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操作的系统进程(如Windows System进程);所述受信进程是中性进程以及操作系统辅助文件I/O操作的系统进程以外的被允许获取文件的明文数据的程序进程;所述非受信进程是中性进程以及操作系统辅助文件I/O操作的系统进程以外的不被允许取文件的明文数据的程序进程;受信进程和非受信进程针对文件类型而设定(如Word程序的运行进程是Word文档的受信进程,而Internet Explorer的运行进程则不是);所述中性进程是一个在读取文件的数据时始终读取的是文件在磁盘上的原始数据的程序进程(如果文件在磁盘上是明文文件,则中性程序读取的是明文数据;如果是加密文件,则中性进程读取的是密文数据,如Windows Explorer可以作为中性进程);操作系统辅助文件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用户空间程序的代码中。
所述用户空间文件系统的FUSE用户空间进程将针对虚拟文件的打开或创建转操作化为针对虚拟文件对应的重定向前的原文件的打开或创建操作、并在之后将针对虚拟文件的文件I/O操作转化为针对重定向前的原文件的文件I/O操作的一种方案如下:
对于针对同一个虚拟文件的多次打开或创建操作,FUSE用户空间进程对虚拟文件在加密文件目录或非加密文件中的对应原文件在同一时刻最多打开或创建两次,其中一次以缓存I/O方式打开,一次以非缓存I/O方式;FUSE用户空间进程在内存中为每个被打开或创建的虚拟文件创建一个用户空间文件对象(User Space File Object);所述用户空间文件对象是FUSE用户空间进程在用户空间维护的针对被打开或创建的虚拟文件的一种数据结构(与内核中的文件对象不必相同,它的内容由实施者自己确定);
当接收到以缓存I/O方式打开或创建一个虚拟文件的操作请求后,FUSE用户空间进程检查虚拟文件对应的原文件是否已被FUSE用户空间进程自己以缓存I/O方式打开或创建,若是,则不再以缓存I/O方式打开或创建原文件,直接将打开或创建的虚拟文件的用户空间文件对象与以缓存I/O方式打开或创建的原文件的文件句柄关联;否则,FUSE用户空间进程先以缓存I/O方式打开或创建虚拟文件的对应原文件,然后将打开或创建的虚拟文件的用户空间文件对象与以缓存I/O方式打开或创建的原文件的文件句柄关联;(这样,多次以缓存I/O方式打开或创建的同一个虚拟文件的多个用户空间文件对象被关联到同一个以缓存I/O方式打开或创建的原文件的文件句柄)
当接收到以非缓存I/O方式打开或创建一个虚拟文件的操作请求后,FUSE用户空间进程检查虚拟文件对应的原文件是否已被FUSE用户空间进程自己以非缓存I/O方式打开或创建,若是,则不再以非缓存I/O方式打开或创建原文件,直接将打开或创建的虚拟文件的用户空间文件对象与以非缓存I/O方式打开或创建的原文件的文件句柄关联;否则,FUSE用户空间进程先以非缓存I/O方式打开或创建虚拟文件的对应原文件,然后将打开或创建的虚拟文件的用户空间文件对象与以非缓存I/O方式打开或创建的原文件的文件句柄关联;(这样,多次以非缓存I/O方式打开或创建的同一个虚拟文件的多个用户空间文件对象被关联到同一个以非缓存I/O方式打开或创建的原文件的文件句柄)
若虚拟文件的对应原文件在加密文件目录中,则:所述FUSE用户空间进程(无论是以缓存I/O方式还是以非缓存I/O方式)打开或创建虚拟文件在加密文件目录中的对应原文件后,若检查发现被打开或创建的原文件是明文文件,则将被打开或创建的原文件加密成为加密文件;
当接收到一个程序进程针对一个已打开或创建的虚拟文件的、非进行文件关闭的文件I/O操作请求后,所述FUSE用户空间进程通过已打开或创建的虚拟文件的用户空间文件对象所关联的原文件的文件句柄,将针对虚拟文件的文件I/O操作转化针对虚拟文件的对应原文件的文件I/O操作,并在文件I/O操作处理过程中按正向或反向加密方式包括可变正向或可变反向加密方式对文件I/O操作进行处理(具体是按正向还是反向加密方式对文件I/O操作进行处理取决于原文件的性质);若程序进程针对一个已打开或创建的虚拟文件的文件I/O操作请求是删除文件,则仅在虚拟文件对应的原文件仅对应有一个被打开或创建的虚拟文件(的用户空间文件对象)时,所述FUSE用户空间进程才执行文件删除操作;
当接收到一个程序进程关闭一个以缓存或非缓存I/O方式打开或创建的虚拟文件的请求后,所述FUSE用户空间进程解除要关闭的虚拟文件的用户空间文件对象与以缓存或非缓存I/O方式打开或创建的原文件的文件句柄的关联(缓存对应缓存,非缓存对应非缓存);
当完成关闭一个以缓存或非缓存I/O方式打开或创建的虚拟文件的操作请求的处理后,若所述FUSE用户空间进程检查发现虚拟文件对应的以缓存或非缓存I/O方式打开或创建的原文件的文件句柄已没有已打开或创建的虚拟文件的用户空间文件对象与之关联,则所述FUSE用户空间进程(通过文件句柄)关闭虚拟文件对应的以缓存或非缓存I/O方式打开或创建的、已没有已打开或创建的虚拟文件的用户空间文件对象与之关联的原文件;或者在进行定时扫描时,若所述FUSE用户空间进程检查发现一个以缓存或非缓存I/O方式打开或创建的原文件的文件句柄已没有已打开或创建的虚拟文件的用户空间文件对象与之关联,则所述FUSE用户空间进程(通过文件句柄)关闭已没有已打开或创建的虚拟文件的用户空间文件对象与之关联的原文件。
下面对正向加密方式、可变正向加密方式、反向加密方式、可变反向加密方式作进一步的描述。
若原文件是位于加密文件目录中的文件或者是位于非加密文件目录中的加密文件,则在将程序进程针对虚拟文件的文件I/O操作转化为针对重定向前的原文件的文件I/O操作过程中,FUSE用户空间进程按正向加密方式对文件I/O操作进行处理的方案具体如下:
若程序进程是针对一个被受信进程打开或创建的虚拟文件进行文件数据读取操作,则所述FUSE用户空间进程将从虚拟文件对应的原文件读取的加密数据解密成明文后返回;
若程序进程是针对一个被非受信进程或中性进程打开或创建的虚拟文件进行文件数据读取操作,则所述FUSE用户空间进程将从虚拟文件对应的原文件读取的加密数据返回;
若程序进程是针对一个被打开或创建的虚拟文件进行文件数据存写操作且程序进程要存写的是明文数据(此时虚拟文件被受信进程或非受信进程或中性进程打开或创建),则所述FUSE用户空间进程将程序进程要存写的明文数据加密成密文后再存写到虚拟文件对应的原文件;
若程序进程是针对一个被打开或创建的虚拟文件进行文件数据存写操作且程序进程要存写的是密文数据(此时虚拟文件被非受信进程或中性进程打开或创建),则所述FUSE用户空间进程将程序进程要存写的密文数据直接存写到虚拟文件对应的原文件。
若原文件是位于非加密文件目录中的加密文件,则在将程序进程针对虚拟文件的文件I/O操作转化为针对重定向前的原文件的文件I/O操作过程中,FUSE用户空间进程按可变正向加密方式对文件I/O操作进行处理的具体方案与按正向加密方式进行处理的具体方案仅在对明文数据的存写处理方面不同,可变正向加密方式对明文数据存写处理的具体方式如下:
若程序进程是针对一个被打开或创建的虚拟文件进行文件数据存写操作且程序进程要存写的是明文数据(此时虚拟文件被受信进程或非受信进程或中性进程打开或创建),则所述FUSE用户空间进程将程序进程要存写的明文数据直接存写到虚拟文件对应的原文件,使之成为明文原文件,之后FUSE用户空间进程按反向加密方式或可变反向加密方式对针对明文原文件的文件I/O操作进行处理。
若原文件位于是位于非加密文件目录中的明文文件,则在将程序进程针对虚拟文件的文件I/O操作转化为针对重定向前的原文件的文件I/O操作过程中,FUSE用户空间进程按反向加密方式对文件I/O操作进行处理的方案具体如下:
若程序进程是针对一个被受信进程或中性进程打开或创建的虚拟文件进行文件数据读取操作,则所述FUSE用户空间进程将从虚拟文件对应的原文件读取的明文数据返回;
若程序进程是针对一个被非受信进程打开或创建的虚拟文件进行文件数据读取操作,则所述FUSE用户空间进程将从虚拟文件对应的原文件读取的明文数据加密成密文后返回;
若程序进程是针对一个被打开或创建的虚拟文件进行文件数据存写操作且程序进程要存写的是明文数据(此时虚拟文件被受信进程或非受信进程或中性进程打开或创建),则所述FUSE用户空间进程将程序进程要存写的明文数据直接存写到虚拟文件对应的原文件;
若程序进程是针对一个被打开或创建的虚拟文件进行文件数据存写操作且程序进程要存写的是密文数据(此时虚拟文件被非受信进程或中性进程打开或创建),则所述FUSE用户空间进程将程序进程要存写的密文数据解密成明文后再存写到虚拟文件对应的原文件。
若原文件是位于非加密文件目录中的明文文件,则在将程序进程针对虚拟文件的文件I/O操作转化为针对重定向前的原文件的文件I/O操作过程中,FUSE用户空间进程按可变反向加密方式进行处理的具体方案与按反向加密方式进行处理的具体方案仅在对密文数据的存写处理方面不同,可变反向加密方式对密文数据存写处理的具体方式如下:
若程序进程是针对一个被打开或创建的虚拟文件进行文件数据存写操作且程序进程要存写的是密文数据(此时虚拟文件被非受信进程或中性进程打开或创建),则所述FUSE用户空间进程根据策略确定要存写明文数据还是密文数据,若确定是要存写明文数据,则所述FUSE用户空间进程将程序进程要存写的密文数据解密成明文后再存写到虚拟文件对应的原文件,若确定是要存写密文数据,所述FUSE用户空间进程将程序进程要存写的密文数据直接存写到虚拟文件对应的原文件,使之成为加密原文件,之后FUSE用户空间进程按正向加密方式或可变正向加密方式对针对加密原文件的文件I/O操作进行处理。
本发明中,FUSE用户空间进程可以为读取、存写的数据维护数据缓存,也可以不维护数据缓存,但由于文件加密多采用块加密方案,不采用数据缓存将使得数据读取、存写过程中的加密、解密效率非常低,故为了提高数据加密、解密的效率需要采用数据缓存。FUSE用户空间进程为读取、存写数据维护数据缓存不能简单地采用操作系统的文件系统在内核层所采用的数据缓存方案,如果这样做的话同样会出现频繁刷缓存的情况。下面给出针对本发明设计的数据缓存方案。
对应于所述正向加密处理方式,相应的数据缓存方案如下:
所述FUSE用户空间进程为每个被打开或创建的加密文件目录中的原文件(原文件可能是加密的或非加密的,但打开或创建操作后一定是加密文件)或被打开或创建的非加密文件目录中的加密原文件在用户空间维护一个明文数据缓存(无论原文件是以缓存I/O方式打开或创建,还是以非缓存I/O打开或创建,无论原文件是打开或创建了一次还是两次;若原文件分别被以缓存I/O方式和非缓存I/O方式同时打开或创建,则两次打开或创建的原文件在用户空间共享一个明文数据缓存),且:
当一个程序进程向一个被受信进程打开或创建的虚拟文件读取数据而虚拟文件对应的原文件是(加密文件目录或非加密文件目录中的)加密文件时,若明文数据缓存中已有程序进程要读取的数据,则FUSE用户空间进程将明文数据缓存中程序进程要读取的(明文)数据返回;否则,FUSE用户空间进程从虚拟文件对应的原文件读取数据,然后将从原文件读取的加密数据解密后缓存在明文数据缓存中,并向程序进程返回明文数据;
当一个程序进程向一个被非受信进程或中性进程打开或创建的虚拟文件读取数据而虚拟文件对应的原文件是(加密文件目录或非加密文件目录中的)加密文件时,若程序进程要读取的数据存在于延时存写的明文数据缓存中,则FUSE用户空间进程将延时存写的明文数据缓存中程序进程要读取的数据加密后返回;否则,FUSE用户空间进程直接从虚拟文件对应的原文件读取数据并将读取的加密数据返回(明文数据缓存若非延时存写,那么即便明文数据缓存中有要读取的数据也不使用明文数据缓存中的数据);
当一个程序进程向一个被受信进程或非受信进程或中性进程打开或创建的虚拟文件存写明文数据而虚拟文件对应的原文件是(加密文件目录或非加密文件目录中的)加密文件时,FUSE用户空间进程先将要存写的明文数据存写到明文数据缓存中,然后延时将明文数据缓存中的明文数据加密后存写到(磁盘上的)虚拟文件对应的原文件(若虚拟文件是以缓存I/O方式打开或创建),或者,FUSE用户空间进程立即将明文数据加密后存写到(磁盘上的)虚拟文件对应的原文件(若虚拟文件是以非缓存I/O方式打开或创建);
当一个程序进程向一个被非受信进程或中性进程打开或创建的虚拟文件存写密文数据而虚拟文件对应的原文件是(加密文件目录或非加密文件目录中的)加密文件时,FUSE用户空间进程直接将密文数据存写到虚拟文件对应的原文件,进一步地,若原文件在FUSE用户空间进程中有明文数据缓存,则在完成数据存写后FUSE用户空间进程清空原文件在FUSE用户空间进程中的明文数据缓存。
所述可变正向加密处理仅适用于非加密文件目录中的加密文件,对应于可变正向加密处理方式,相应的数据缓存方案与对应于所述正向加密处理方式的数据缓存方案仅在明文数据的存写方面不同,针对可变正向加密处理方式的数据缓存方案对明文数据存写的缓存处理具体如下:
当一个程序进程向一个被受信进程或非受信进程或中性进程打开或创建的虚拟文件存写明文数据而虚拟文件对应的原文件是位于非加密文件目录中的加密文件时,FUSE用户空间进程先将要存写的明文数据直接存写到(磁盘上的)原文件,使之成为明文原文件,然后清空原文件在FUSE用户空间进程中的明文数据缓存(若有),之后按反向加密处理方式或可变反向加密处理方式对针对明文原文件的文件I/O操作进行缓存处理。
对应于所述反向加密处理方式,相应的数据缓存方案如下:
所述FUSE用户空间进程对每个被打开或创建的非加密文件目录中的明文原文件在用户空间维护一个密文数据缓存(无论原文件是以缓存I/O方式打开或创建,还是以非缓存I/O打开或创建,无论原文件是打开或创建了一次还是两次;若原文件分别被以缓存I/O方式和非缓存I/O方式同时打开或创建,则两次打开或创建的原文件在用户空间共享一个密文数据缓存);且:
当一个程序进程向一个被非受信进程打开或创建的虚拟文件读取数据而虚拟文件对应的原文件是非加密文件目录中的明文原文件时,若密文数据缓存中已有程序进程要读取的数据,则FUSE用户空间进程将密文数据缓存中程序进程要读取的(密文)数据返回;否则,FUSE用户空间进程从虚拟文件对应的原文件读取数据,然后将从原文件读取的明文数据加密后存写到密文数据缓存中,并向程序进程返回密文数据;
当一个程序进程向一个被受信进程或中性进程打开或创建的虚拟文件读取数据而虚拟文件对应的原文件是非加密文件目录中的明文文件时,若程序进程要读取的数据存在于延时存写的密文数据缓存中,则FUSE用户空间进程将延时存写的密文数据缓存中程序进程要读取的数据解密后返回;否则,FUSE用户空间进程直接从原文件读取数据并将读取的明文数据返回(密文数据缓存若非延时存写,即便密文数据缓存中有要读取的数据也不使用密文数据缓存中的数据);
当一个程序进程向一个被受信进程或非受信进程或中性进程打开或创建的虚拟文件存写明文数据而虚拟文件对应的原文件是非加密文件目录中的明文文件时,FUSE用户空间进程直接将明文数据存写到原文件,进一步地,若原文件在FUSE用户空间进程中有密文数据缓存,则FUSE用户空间进程在完成数据存写后清空原文件在FUSE用户空间进程中的密文数据缓存;
当一个程序进程向一个被非受信进程或中性进程打开或创建的虚拟文件存写密文数据而虚拟文件对应的原文件是非加密文件目录中的明文文件时,FUSE用户空间进程先将要存写的密文数据存写到密文数据缓存中,然后延时将密文数据缓存中的密文数据解密后存写到(磁盘上的)虚拟文件对应的原文件(若虚拟文件是以缓存I/O方式打开或创建),或者,FUSE用户空间进程立即将密文数据解密后的明文数据存写到(磁盘上的)虚拟文件对应的原文件(若虚拟文件是以非缓存I/O方式打开或创建)。
对于所述可变反向加密处理方式,相应的数据缓存方案与对应于所述反向加密处理方式的数据缓存方案仅在密文数据的存写方面不同,针对可变反向加密处理方式的数据缓存方案对密文数据存写的缓存处理具体如下:
当一个程序进程向一个被非受信进程或中性进程打开或创建的虚拟文件存写密文数据而虚拟文件对应的原文件是非加密文件目录中的明文文件时,若根据策略确定要将明文数据存写到文件,则FUSE用户空间进程先将要存写的密文数据存写到密文数据缓存中,然后延时将密文数据缓存中的密文数据解密后存写到(磁盘上的)虚拟文件对应的原文件(若虚拟文件是以缓存I/O方式打开或创建),或者,FUSE用户空间进程立即将密文数据解密后的明文数据存写到(磁盘上的)虚拟文件对应的原文件(若虚拟文件是以非缓存I/O方式打开或创建);若根据策略确定要将密文数据存写到文件,则FUSE用户空间进程将程序进程要存写的密文数据直接存写到虚拟文件对应的原文件(即原文件从非加密文件目录中的明文文件变成了非加密文件目录中的密文文件),进一步地,若FUSE用户空间进程为原文件在FUSE用户空间中维护有密文数据缓存,则FUSE用户空间进程在完成数据存写后清空原文件在FUSE用户空间进程中的密文数据缓存,之后FUSE用户空间进程按正向加密方式或可变正向加密方式对针对密文原文件的文件I/O操作进行缓存处理。
从以上描述可以看到,本发明的双向文件加密系统通过对加密文件目录和非加密文件目录中的文件采用不同的文件重定向、以及文件加密和解密策略,使得无论对于加密文件目录中的加密文件还是非加密文件目录中的明文文件,受信进程能够获得文件的明文数据而非受信进程仅能获得文件的密文数据,同时实现了加密文件目录中的文件(在磁盘上)始终保持密文状态,而非加密文件目录中的明文文件(在磁盘上)始终保持明文状态或者仅在特别情况下,出现非受信进程或中性进程用密文数据覆盖文件时,才会转变成加密文件;还有,通过FUSE用户空间进程在同一时刻最多打开或创建加密文件目录中和非加密文件目录中的同一个文件两次,以及由FUSE用户空间进程在用户空间维护针对同一个文件的多次打开或创建操作,本发明的双向文件加密系统避免了针对一个文件进行I/O操作处理时可能出现的打开或创建操作循环的问题。
另外,本发明的技术方案有如下几点需要特别说明。
一是,本发明中对程序进程针对加密文件目录中加密文件所进行的文件I/O操作的处理与对程序进程针对非加密文件目录中的明文文件所进行的文件I/O操作的处理是不对称的:对于加密文件目录中的加密文件,所有程序进程,包括受信进程、非受信进程和中性进程,针对加密文件的文件I/O操作都被文件重定向过滤器驱动重定向到了用户空间文件系统进行处理(这是必须的,因为非受信进程和中性进程有可能对加密文件存写明文数据),而对于非加密文件目录中的明文文件,只有非受信和中性进程针对明文文件的文件I/O操作被文件重定向过滤器驱动重定向到了用户空间文件系统进行处理。采用这种不对称处理的原因是:如果将所有受信进程针对非加密文件目录中明文文件的文件I/O操作都重定向到用户空间文件系统进行处理,那么,由于明文文件是我们经常需要操作处理的文件,特别是操作系统、应用软件要装载的大多是明文文件,这样将导致对明文文件的操作处理效率非常低。
二是,本发明中引入的中性进程的作用是非常重要的。大家经常使用操作系统的文件操作的人机交互界面程序,比如Windows Explorer,对计算机上的文件进行管理,如创建、浏览、复制、删除等。在用户使用Windows Explorer对一个文件目录中的文件进行浏览时,Windows Explorer通常会将文件目录中的各个文件的数据预先读出来(打开后读取);如果将Windows Explorer设定为非受信进程,那么,当用户使用Windows Explorer浏览非加密文件目录中的明文文件时,文件重定向过滤器将Windows Explorer的文件I/O操作重定向,并由用户空间文件系统的FUSE用户空间进程对Windows Explorer读取的文件数据进行加密,即便读出、加密的文件数据以后不再使用;如果将Windows Explorer设定为受信进程,那么,当用户使用Windows Explorer浏览加密文件目录中的密文文件时,文件重定向过滤器将Windows Explorer的文件I/O操作重定向,并由用户空间文件系统的FUSE用户空间进程对Windows Explorer读取的文件数据进行解密,即便读出、解密的文件数据以后不会再使用;无论哪种情况,都要进行无用的文件加密或解密,操作处理效率都会很低。
三是,对中性进程针对非加密文件目录中明文文件所进行文件打开或创建操作有两种处理方式:一种是进行重定向,另一种是不进行重定向;由于中性进程存写的数据既可能是明文数据也可能是密文数据,采用前种处理方式能有效地控制中性进程在非加密文件目录中存写的数据,而采用后种处理方式实施起来更简单。
四是,对于程序进程针对非加密文件目录中加密文件所进行文件I/O操作,发明给出了一种文件可变正向加密处理方案,对于非加密文件目录中的加密文件,这种方案可能更好,因为它可以通过受信进程或非受信进程或中性进程存写明文数据将非加密文件目录中的一个加密文件转化成一个明文文件。
附图说明
图1为本发明的系统原理示意图。
具体实施方式
下面结合附图对本发明的具体实施进行描述。
用户空间文件系统的开发目前已是比较成熟的技术,无论是Windows系统、Linux系统还是Unix系统,都有相应的开发技术或开发框架(通过网络公开资料可获得这方面的资料甚至源码),本发明的用户空间文件系统的实施可以在现有用户空间文件系统开发技术或开发框架的基础上,根据本发明中针对用户空间文件系统的功能要求(技术特征)进行开发实施,其中关键的一点是FUSE文件驱动不为程序进程请求以缓存I/O方式打开或创建的虚拟文件创建数据缓存,并将程序进程针对虚拟文件的所有文件I/O操作以非缓存的方式进行处理(全部直接提交到FUSE用户空间进程)。
对于文件重定向过滤器驱动,若用户计算机的操作系统是Windows系统,则文件重定向过滤器驱动的开发可以采用Windows文件过滤器驱动(filter driver)或微过滤器驱动(mini-filter driver)技术开发;特别地,对于文件重定向功能,可以利用Windows过滤器驱动或微过滤器驱动实现reparse point功能(参见WDK的simrep.c代码)。若用户计算机的操作系统是其他系统,则文件重定向过滤器驱动的开发可以采用对应的技术。
对于虚拟文件的文件路径的构造,可采用如下方案。
假设用户空间文件系统对应K盘,而程序进程原本要打开的文件的文件路径是:
D:\SubDir1\SubDir2\...\Sample.ext,
则重定向后的虚拟文件的文件路径是:
K:\__@D\SSubDir1\SubDir2\...\Sample.ext;
即,这里“__@”后跟一个盘符字母,表示原文件所在盘(当然,也可以采用“__@”后跟文件盘在内核空间的表示;或者采用其他表示文件盘的编码方式)。采用这种方案,FUSE用户空间进程根据重定向后的虚拟文件的文件路径能获得重定向前的原文件的完整文件路径。
进一步地,在双向文件加密系统的配置文件中设置加密文件目录,若一个文件不是位于加密文件目录(包括加密文件目录的下级目录)中,则此文件位于非加密文件目录中。文件重定向过滤器驱动和FUSE用户空间进程可根据原文件的文件路径、配置文件中设置的加密文件目录确定重定向前的原文件是位于加密文件目录还是非加密文件目录。
另外,有了文件重定向后,对于文件重命名操作要进行特别的处理,具体如下。
FUSE文件驱动接收到针对虚拟文件的文件重命名操作请求后,根据接收到的文件重命名操作请求中包含的原文件重命名后的目标文件的文件路径信息,按照从原文件的文件路径构造虚拟文件的文件路径的同样方式,重新构造针对虚拟文件进行重命名操作的重命名目标文件的文件路径,比如,若原文件重命名前的文件路径是:
D:\SSubDir1\SSubDir2\...\Sample.ext,
重命名后的目标文件的文件路径是:
D:\SSubDir1\SSubDir2\...\Sample2.ext,
则FUSE文件驱动接收到的文件重命名操作请求中包含的重命名后的目标文件的文件路径是:
D:\SSubDir1\SSubDir2\...\Sample2.ext,
而FUSE文件驱动重新构造的针对虚拟文件的重命名后的目标文件的文件路径是:
K:\__@D\SSubDir1\SSubDir2\...\Sample2.ext。
对于将程序进程针对同一个虚拟文件多次进行文件打开或创建操作后所生成的多个用户空间文件对象与同一个对应的原文件被打开或创建操作后的文件句柄进行关联,可以采用如下实施方案(当然不是唯一的实施方案)。
FUSE用户空间进程在内存中维护一个被其打开或创建的原文件的信息表,信息表中的每项数据结构对应一个被打开或创建的原文件,此对应于被打开或创建的原文件的数据结构称为原文件的用户空间文件控制块(User Space File Control Block)。每个用户空间文件控制块中有被打开或创建的原文件的文件路径、文件句柄(handle)、文件打开或创建的方式(缓存或非缓存I/O方式)、关联次数(或引用次数)以及其他与文件I/O操作有关的信息,其中,关联次数用于记录当前时刻以与原文件同样方式(缓存或非缓存I/O方式)打开或创建的对应虚拟文件的用户空间文件对象关联到此原文件的文件句柄的次数(即用户空间文件对象的个数)。一个原文件最多在信息表中有两个用户空间文件控制块,一个对应以缓存I/O方式打开或创建的原文件,一个对应以非缓存I/O方式打开或创建的原文件;这与通常的文件系统在内核中的文件控制块不同,通常的文件系统在内核中的文件控制块只有一个;但这两个用户空间文件控制块在FUSE用户空间进程中共用一个数据缓存。
FUSE用户空间进程同时在内存中维护另一张数据表,数据表中的每项是被打开或创建的虚拟文件的用户空间文件对象,虚拟文件的用户空间文件对象的数据结构由实施者自己定,但数据结构中包含一个字段指向对应的以同样方式(缓存I/O或非缓存I/O)打开或创建的原文件的用户空间文件控制块,从而将被打开或创建的虚拟文件的用户空间文件对象关联到以同样方式打开或创建的原文件的文件句柄。
下面描述加密文件的格式及如何判断一个文件是加密文件还是明文文件、如何判断一个程序进程要存写的数据是密文数据还是明文数据。加密文件的常用格式是将文件的明文数据加密后给文件加上一个附件的头部或尾部,附加的头部或尾部中有用于加密、解密的信息以及区分明文文件和加密文件的特征数据,比如,特征数据可以由一个固定的特征字串以及由加密解密信息、特征字串生成的散列值构成。这个特征字串是一个足够长、位于头部或尾部的固定位置、其他文件在同样位置上有同样字串的概率极小的字串,再加上头部或尾部的固定位置上具有与生成的散列值同样的字串的概率将更小。由于附加的头部或尾部包含有特征数据,因此,它们被称为附加的特征头部和特征尾部。由于文件数据读取、数据存写操作通常是从文件首部开始,因此,通常采用附加特征头部的方案。
若加密文件包含附加的特征头部,则文件重定向过滤器驱动和FUSE用户空间进程通过检查一个文件是否包含特征头部从而确定一个文件是加密文件还是明文文件(非加密文件),FUSE用户空间进程通过检查一个程序进程要存写的文件数据是否包含特征头部从而确定要存写的文件数据是密文数据还是明文数据(FUSE用户空间进程缓存程序进程要存写的文件起始部分的数据从而确定文件数据是否包含有附加的特征头部)。
进一步地,若加密文件包含附加的特征头部,则FUSE用户空间进程按如下方式对程序进程针对文件的文件长度(File Size)和文件分配长度(File Allocation Size)的操作进行处理:
当受信进程通过读取虚拟文件的文件长度或文件分配长度并由此读取虚拟文件的对应加密文件的文件长度或文件分配长度时,FUSE用户空间进程返回给受信进程的长度是不包含附加的特征头部的长度,即是明文文件的文件长度或文件分配长度;
当非受信进程或中性进程通过读取虚拟文件的文件长度或文件分配长度并由此读取虚拟文件的对应加密文件的文件长度或文件分配长度时,FUSE用户空间进程返回给非受信进程或中性进程的长度是包含附加的特征头部的长度,即是(磁盘上)加密文件的真实文件长度或文件分配长度;
当程序进程通过设置虚拟文件的文件长度或文件分配长度并由此设置虚拟文件的对应加密文件的文件长度或文件分配长度时,FUSE用户空间进程最终针对原文件设置的长度是包含附加的特征头部的长度(即是磁盘上文件的真实文件长度或文件分配长度);
当受信进程或中性进程通过读取虚拟文件的文件长度或文件分配长度并由此读取非加密文件目录中虚拟文件的对应明文文件的文件长度或文件分配长度时,FUSE用户空间进程返回给受信进程或中性进程的长度是不包含附加的特征头部的长度,即是(磁盘上)明文文件的真实文件长度或文件分配长度;
当非受信进程通过读取虚拟文件的文件长度或文件分配长度并由此读取非加密文件目录中虚拟文件的对应明文文件的文件长度或文件分配长度时,FUSE用户空间进程返回给非受信进程的长度是包含附加的特征头部的文件加密后的长度(但磁盘上的明文文件并未加密);
当程序进程通过设置虚拟文件的文件长度或文件分配长度并由此设置非加密文件目录中虚拟文件的对应明文文件的文件长度或文件分配长度时,FUSE用户空间进程最终针对原文件设置的长度是不包含附加的特征头部的长度(即是磁盘上文件的真实文件长度或文件分配长度)。
下面简单说明数据缓存的实施方式。
对于每个打开或创建的原文件,FUSE用户空间进程在内存中维护一个由多个数据缓存块组成的数据缓存,每个数据缓存块的大小是1页(1024个字节,即1K字节)的倍数,如32K、64K等,多个数据缓存块通过原文件的用户空间文件控制块中的一个链表来维护。链表记录有每个数据缓存块的起始位置,有效数据长度,以及是否需要延时写(即dirty指示)。将数据缓存块交换出去的策略是最久未用的数据缓存块被交换出去。
其他未说明的具体技术实施,对于相关领域的技术人员而言是众所周知,不言自明的。
Claims (10)
1.一种基于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用户空间程序的代码中。
2.根据权利要求1所述的基于FUSE的双向文件加密系统,其特征是:
所述用户空间文件系统的FUSE用户空间进程将针对虚拟文件的打开或创建转操作化为针对虚拟文件对应的重定向前的原文件的打开或创建操作、并在之后将针对虚拟文件的文件I/O操作转化为针对重定向前的原文件的文件I/O操作的一种方案如下:
对于针对同一个虚拟文件的多次打开或创建操作,FUSE用户空间进程对虚拟文件在加密文件目录或非加密文件中的对应原文件在同一时刻最多打开或创建两次,其中一次以缓存I/O方式打开,一次以非缓存I/O方式;FUSE用户空间进程在内存中为每个被打开或创建的虚拟文件创建一个用户空间文件对象;所述用户空间文件对象是FUSE用户空间进程在用户空间维护的针对被打开或创建的虚拟文件的一种数据结构;
当接收到以缓存I/O方式打开或创建一个虚拟文件的操作请求后,FUSE用户空间进程检查虚拟文件对应的原文件是否已被FUSE用户空间进程自己以缓存I/O方式打开或创建,若是,则不再以缓存I/O方式打开或创建原文件,直接将打开或创建的虚拟文件的用户空间文件对象与以缓存I/O方式打开或创建的原文件的文件句柄关联;否则,FUSE用户空间进程先以缓存I/O方式打开或创建虚拟文件的对应原文件,然后将打开或创建的虚拟文件的用户空间文件对象与以缓存I/O方式打开或创建的原文件的文件句柄关联;
当接收到以非缓存I/O方式打开或创建一个虚拟文件的操作请求后,FUSE用户空间进程检查虚拟文件对应的原文件是否已被FUSE用户空间进程自己以非缓存I/O方式打开或创建,若是,则不再以非缓存I/O方式打开或创建原文件,直接将打开或创建的虚拟文件的用户空间文件对象与以非缓存I/O方式打开或创建的原文件的文件句柄关联;否则,FUSE用户空间进程先以非缓存I/O方式打开或创建虚拟文件的对应原文件,然后将打开或创建的虚拟文件的用户空间文件对象与以非缓存I/O方式打开或创建的原文件的文件句柄关联;
若虚拟文件的对应原文件在加密文件目录中,则:所述FUSE用户空间进程打开或创建虚拟文件在加密文件目录中的对应原文件后,若检查发现被打开或创建的原文件是明文文件,则将被打开或创建的原文件加密成为加密文件;
当接收到一个程序进程针对一个已打开或创建的虚拟文件的、非进行文件关闭的文件I/O操作请求后,所述FUSE用户空间进程通过已打开或创建的虚拟文件的用户空间文件对象所关联的原文件的文件句柄,将针对虚拟文件的文件I/O操作转化针对虚拟文件的对应原文件的文件I/O操作,并在文件I/O操作处理过程中按正向或反向加密方式包括可变正向或可变反向加密方式对文件I/O操作进行处理;若程序进程针对一个已打开或创建的虚拟文件的文件I/O操作请求是删除文件,则仅在虚拟文件对应的原文件仅对应有一个被打开或创建的虚拟文件时,所述FUSE用户空间进程才执行文件删除操作;
当接收到一个程序进程关闭一个以缓存或非缓存I/O方式打开或创建的虚拟文件的请求后,所述FUSE用户空间进程解除要关闭的虚拟文件的用户空间文件对象与以缓存或非缓存I/O方式打开或创建的原文件的文件句柄的关联;
当完成关闭一个以缓存或非缓存I/O方式打开或创建的虚拟文件的操作请求的处理后,若所述FUSE用户空间进程检查发现虚拟文件对应的以缓存或非缓存I/O方式打开或创建的原文件的文件句柄已没有已打开或创建的虚拟文件的用户空间文件对象与之关联,则所述FUSE用户空间进程关闭虚拟文件对应的以缓存或非缓存I/O方式打开或创建的、已没有已打开或创建的虚拟文件的用户空间文件对象与之关联的原文件;或者在进行定时扫描时,若所述FUSE用户空间进程检查发现一个以缓存或非缓存I/O方式打开或创建的原文件的文件句柄已没有已打开或创建的虚拟文件的用户空间文件对象与之关联,则所述FUSE用户空间进程关闭已没有已打开或创建的虚拟文件的用户空间文件对象与之关联的原文件。
3.根据权利要求1所述的基于FUSE的双向文件加密系统,其特征是:
若原文件是位于加密文件目录中的文件或者是位于非加密文件目录中的加密文件,则在将程序进程针对虚拟文件的文件I/O操作转化为针对重定向前的原文件的文件I/O操作过程中,FUSE用户空间进程按正向加密方式对文件I/O操作进行处理的方案具体如下:
若程序进程是针对一个被受信进程打开或创建的虚拟文件进行文件数据读取操作,则所述FUSE用户空间进程将从虚拟文件对应的原文件读取的加密数据解密成明文后返回;
若程序进程是针对一个被非受信进程或中性进程打开或创建的虚拟文件进行文件数据读取操作,则所述FUSE用户空间进程将从虚拟文件对应的原文件读取的加密数据返回;
若程序进程是针对一个被打开或创建的虚拟文件进行文件数据存写操作且程序进程要存写的是明文数据,则所述FUSE用户空间进程将程序进程要存写的明文数据加密成密文后再存写到虚拟文件对应的原文件;
若程序进程是针对一个被打开或创建的虚拟文件进行文件数据存写操作且程序进程要存写的是密文数据,则所述FUSE用户空间进程将程序进程要存写的密文数据直接存写到虚拟文件对应的原文件。
4.根据权利要求1所述的基于FUSE的双向文件加密系统,其特征是:
若原文件是位于非加密文件目录中的加密文件,则在将程序进程针对虚拟文件的文件I/O操作转化为针对重定向前的原文件的文件I/O操作过程中,FUSE用户空间进程按可变正向加密方式对文件I/O操作进行处理的方案具体如下:
若程序进程是针对一个被受信进程打开或创建的虚拟文件进行文件数据读取操作,则所述FUSE用户空间进程将从虚拟文件对应的原文件读取的加密数据解密成明文后返回;
若程序进程是针对一个被非受信进程或中性进程打开或创建的虚拟文件进行文件数据读取操作,则所述FUSE用户空间进程将从虚拟文件对应的原文件读取的加密数据返回;
若程序进程是针对一个被打开或创建的虚拟文件进行文件数据存写操作且程序进程要存写的是密文数据,则所述FUSE用户空间进程将程序进程要存写的密文数据直接存写到虚拟文件对应的原文件;
若程序进程是针对一个被打开或创建的虚拟文件进行文件数据存写操作且程序进程要存写的是明文数据,则所述FUSE用户空间进程将程序进程要存写的明文数据直接存写到虚拟文件对应的原文件,使之成为明文原文件,之后FUSE用户空间进程按反向加密方式或可变反向加密方式对针对明文原文件的文件I/O操作进行处理。
5.根据权利要求1所述的基于FUSE的双向文件加密系统,其特征是:
若原文件位于是位于非加密文件目录中的明文文件,则在将程序进程针对虚拟文件的文件I/O操作转化为针对重定向前的原文件的文件I/O操作过程中,FUSE用户空间进程按反向加密方式对文件I/O操作进行处理的方案具体如下:
若程序进程是针对一个被受信进程或中性进程打开或创建的虚拟文件进行文件数据读取操作,则所述FUSE用户空间进程将从虚拟文件对应的原文件读取的明文数据返回;
若程序进程是针对一个被非受信进程打开或创建的虚拟文件进行文件数据读取操作,则所述FUSE用户空间进程将从虚拟文件对应的原文件读取的明文数据加密成密文后返回;
若程序进程是针对一个被打开或创建的虚拟文件进行文件数据存写操作且程序进程要存写的是明文数据,则所述FUSE用户空间进程将程序进程要存写的明文数据直接存写到虚拟文件对应的原文件;
若程序进程是针对一个被打开或创建的虚拟文件进行文件数据存写操作且程序进程要存写的是密文数据,则所述FUSE用户空间进程将程序进程要存写的密文数据解密成明文后再存写到虚拟文件对应的原文件。
6.根据权利要求1所述的基于FUSE的双向文件加密系统,其特征是:
若原文件是位于非加密文件目录中的明文文件,则在将程序进程针对虚拟文件的文件I/O操作转化为针对重定向前的原文件的文件I/O操作过程中,FUSE用户空间进程按可变反向加密方式对文件I/O操作进行处理的方案具体如下:
若程序进程是针对一个被受信进程或中性进程打开或创建的虚拟文件进行文件数据读取操作,则所述FUSE用户空间进程将从虚拟文件对应的原文件读取的明文数据返回;
若程序进程是针对一个被非受信进程打开或创建的虚拟文件进行文件数据读取操作,则所述FUSE用户空间进程将从虚拟文件对应的原文件读取的明文数据加密成密文后返回;
若程序进程是针对一个被打开或创建的虚拟文件进行文件数据存写操作且程序进程要存写的是明文数据,则所述FUSE用户空间进程将程序进程要存写的明文数据直接存写到虚拟文件对应的原文件;
若程序进程是针对一个被打开或创建的虚拟文件进行文件数据存写操作且程序进程要存写的是密文数据,则所述FUSE用户空间进程根据策略确定要存写明文数据还是密文数据,若确定是要存写明文数据,则所述FUSE用户空间进程将程序进程要存写的密文数据解密成明文后再存写到虚拟文件对应的原文件,若确定是要存写密文数据,所述FUSE用户空间进程将程序进程要存写的密文数据直接存写到虚拟文件对应的原文件,使之成为加密原文件,之后FUSE用户空间进程按正向加密方式或可变正向加密方式对针对加密原文件的文件I/O操作进行处理。
7.根据权利要求3所述的基于FUSE的双向文件加密系统,其特征是:
对应于所述正向加密处理方式,相应的数据缓存方案如下:
所述FUSE用户空间进程为每个被打开或创建的加密文件目录中的原文件或被打开或创建的非加密文件目录中的加密原文件在用户空间维护一个明文数据缓存,且:
当一个程序进程向一个被受信进程打开或创建的虚拟文件读取数据而虚拟文件对应的原文件是加密文件时,若明文数据缓存中已有程序进程要读取的数据,则FUSE用户空间进程将明文数据缓存中程序进程要读取的数据返回;否则,FUSE用户空间进程从虚拟文件对应的原文件读取数据,然后将从原文件读取的加密数据解密后缓存在明文数据缓存中,并向程序进程返回明文数据;
当一个程序进程向一个被非受信进程或中性进程打开或创建的虚拟文件读取数据而虚拟文件对应的原文件是加密文件时,若程序进程要读取的数据存在于延时存写的明文数据缓存中,则FUSE用户空间进程将延时存写的明文数据缓存中程序进程要读取的数据加密后返回;否则,FUSE用户空间进程直接从虚拟文件对应的原文件读取数据并将读取的加密数据返回;
当一个程序进程向一个被受信进程或非受信进程或中性进程打开或创建的虚拟文件存写明文数据而虚拟文件对应的原文件是加密文件时,FUSE用户空间进程先将要存写的明文数据存写到明文数据缓存中,然后延时将明文数据缓存中的明文数据加密后存写到虚拟文件对应的原文件,或者,FUSE用户空间进程立即将明文数据加密后存写到虚拟文件对应的原文件;
当一个程序进程向一个被非受信进程或中性进程打开或创建的虚拟文件存写密文数据而虚拟文件对应的原文件是加密文件时,FUSE用户空间进程直接将密文数据存写到虚拟文件对应的原文件,进一步地,若原文件在FUSE用户空间进程中有明文数据缓存,则在完成数据存写后FUSE用户空间进程清空原文件在FUSE用户空间进程中的明文数据缓存。
8.根据权利要求4所述的基于FUSE的双向文件加密系统,其特征是:
对应于所述可变正向加密处理方式,相应的数据缓存方案如下:
所述FUSE用户空间进程对每个被打开或创建的非加密文件目录中的加密原文件在用户空间维护一个明文数据缓存,且:
当一个程序进程向一个被受信进程打开或创建的虚拟文件读取数据而虚拟文件对应的原文件是加密文件时,若明文数据缓存中已有程序进程要读取的数据,则FUSE用户空间进程将明文数据缓存中程序进程要读取的数据返回;否则,FUSE用户空间进程从虚拟文件对应的原文件读取数据,然后将从原文件读取的加密数据解密后缓存在明文数据缓存中,并向程序进程返回明文数据;
当一个程序进程向一个被非受信进程或中性进程打开或创建的虚拟文件读取数据而虚拟文件对应的原文件是加密文件时,若程序进程要读取的数据存在于延时存写的明文数据缓存中,则FUSE用户空间进程将延时存写的明文数据缓存中程序进程要读取的数据加密后返回;否则,FUSE用户空间进程直接从虚拟文件对应的原文件读取数据并将读取的加密数据返回;
当一个程序进程向一个被受信进程或非受信进程或中性进程打开或创建的虚拟文件存写明文数据而虚拟文件对应的原文件是位于非加密文件目录中的加密文件时,FUSE用户空间进程先将要存写的明文数据直接存写到原文件,使之成为明文原文件,然后清空原文件在FUSE用户空间进程中的明文数据缓存,之后按反向加密处理方式或可变反向加密处理方式对针对明文原文件的文件I/O操作进行缓存处理;
当一个程序进程向一个被非受信进程或中性进程打开或创建的虚拟文件存写密文数据而虚拟文件对应的原文件是加密文件时,FUSE用户空间进程直接将密文数据存写到原文件,进一步地,若原文件在FUSE用户空间进程中有明文数据缓存,则在完成数据存写后FUSE用户空间进程清空原文件在FUSE用户空间进程中的明文数据缓存。
9.根据权利要求5所述的基于FUSE的双向文件加密系统,其特征是:
对应于所述反向加密处理方式,相应的数据缓存方案如下:
所述FUSE用户空间进程对每个被打开或创建的非加密文件目录中的明文原文件在用户空间维护一个密文数据缓存;且:
当一个程序进程向一个被非受信进程打开或创建的虚拟文件读取数据而虚拟文件对应的原文件是非加密文件目录中的明文原文件时,若密文数据缓存中已有程序进程要读取的数据,则FUSE用户空间进程将密文数据缓存中程序进程要读取的数据返回;否则,FUSE用户空间进程从虚拟文件对应的原文件读取数据,然后将从原文件读取的明文数据加密后存写到密文数据缓存中,并向程序进程返回密文数据;
当一个程序进程向一个被受信进程或中性进程打开或创建的虚拟文件读取数据而虚拟文件对应的原文件是非加密文件目录中的明文文件时,若程序进程要读取的数据存在于延时存写的密文数据缓存中,则FUSE用户空间进程将延时存写的密文数据缓存中程序进程要读取的数据解密后返回;否则,FUSE用户空间进程直接从原文件读取数据并将读取的明文数据返回;
当一个程序进程向一个被受信进程或非受信进程或中性进程打开或创建的虚拟文件存写明文数据而虚拟文件对应的原文件是非加密文件目录中的明文文件时,FUSE用户空间进程直接将明文数据存写到原文件,进一步地,若原文件在FUSE用户空间进程中有密文数据缓存,则FUSE用户空间进程在完成数据存写后清空原文件在FUSE用户空间进程中的密文数据缓存;
当一个程序进程向一个被非受信进程或中性进程打开或创建的虚拟文件存写密文数据而虚拟文件对应的原文件是非加密文件目录中的明文文件时,FUSE用户空间进程先将要存写的密文数据存写到密文数据缓存中,然后延时将密文数据缓存中的密文数据解密后存写到虚拟文件对应的原文件,或者,FUSE用户空间进程立即将密文数据解密后的明文数据存写到虚拟文件对应的原文件。
10.根据权利要求6所述的基于FUSE的双向文件加密系统,其特征是:
对应于所述可变反向加密处理方式,相应的数据缓存方案如下:
所述FUSE用户空间进程对每个被打开或创建的非加密文件目录中的明文原文件在用户空间维护一个密文数据缓存;且:
当一个程序进程向一个被非受信进程打开或创建的虚拟文件读取数据而虚拟文件对应的原文件是非加密文件目录中的明文原文件时,若密文数据缓存中已有程序进程要读取的数据,则FUSE用户空间进程将密文数据缓存中程序进程要读取的数据返回;否则,FUSE用户空间进程从虚拟文件对应的原文件读取数据,然后将从原文件读取的明文数据加密后存写到密文数据缓存中,并向程序进程返回密文数据;
当一个程序进程向一个被受信进程或中性进程打开或创建的虚拟文件读取数据而虚拟文件对应的原文件是非加密文件目录中的明文文件时,若程序进程要读取的数据存在于延时存写的密文数据缓存中,则FUSE用户空间进程将延时存写的密文数据缓存中程序进程要读取的数据解密后返回;否则,FUSE用户空间进程直接从原文件读取数据并将读取的明文数据返回;
当一个程序进程向一个被受信进程或非受信进程或中性进程打开或创建的虚拟文件存写明文数据而虚拟文件对应的原文件是非加密文件目录中的明文文件时,FUSE用户空间进程直接将明文数据存写到原文件,进一步地,若原文件在FUSE用户空间进程中有密文数据缓存,则FUSE用户空间进程在完成数据存写后清空原文件在FUSE用户空间进程中的密文数据缓存;
当一个程序进程向一个被非受信进程或中性进程打开或创建的虚拟文件存写密文数据而虚拟文件对应的原文件是非加密文件目录中的明文文件时,若根据策略确定要将明文数据存写到文件,则FUSE用户空间进程先将要存写的密文数据存写到密文数据缓存中,然后延时将密文数据缓存中的密文数据解密后存写到虚拟文件对应的原文件,或者,FUSE用户空间进程立即将密文数据解密后的明文数据存写到虚拟文件对应的原文件;若根据策略确定要将密文数据存写到文件,则FUSE用户空间进程将程序进程要存写的密文数据直接存写到虚拟文件对应的原文件,进一步地,若FUSE用户空间进程为原文件在FUSE用户空间中维护有密文数据缓存,则FUSE用户空间进程在完成数据存写后清空原文件在FUSE用户空间进程中的密文数据缓存,之后FUSE用户空间进程按正向加密方式或可变正向加密方式对针对密文原文件的文件I/O操作进行缓存处理。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201610090739.5A CN105760779B (zh) | 2016-02-18 | 2016-02-18 | 一种基于fuse的双向文件加密系统 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201610090739.5A CN105760779B (zh) | 2016-02-18 | 2016-02-18 | 一种基于fuse的双向文件加密系统 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN105760779A CN105760779A (zh) | 2016-07-13 |
CN105760779B true CN105760779B (zh) | 2018-06-22 |
Family
ID=56330899
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201610090739.5A Expired - Fee Related CN105760779B (zh) | 2016-02-18 | 2016-02-18 | 一种基于fuse的双向文件加密系统 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN105760779B (zh) |
Families Citing this family (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106557684B (zh) * | 2016-10-14 | 2019-09-27 | 北京金山安全软件有限公司 | 文件扫描方法、装置和终端设备 |
CN107239236A (zh) * | 2017-06-27 | 2017-10-10 | 北京小米移动软件有限公司 | 数据写入方法及装置 |
CN107729164A (zh) * | 2017-10-11 | 2018-02-23 | 江西金格科技股份有限公司 | 基于进程间通信技术访问智能密钥盘的方法 |
CN109033872A (zh) * | 2018-07-18 | 2018-12-18 | 郑州信大捷安信息技术股份有限公司 | 一种基于身份的安全运行环境构造方法 |
CN110232261B (zh) * | 2019-06-03 | 2021-05-11 | 浙江大华技术股份有限公司 | 包文件的操作方法、文件处理设备及具有存储功能的设备 |
CN110457870A (zh) * | 2019-08-01 | 2019-11-15 | 浙江大华技术股份有限公司 | 可执行文件的处理方法及装置、嵌入式设备和存储介质 |
CN113468112B (zh) * | 2021-09-02 | 2021-12-07 | 武汉华工安鼎信息技术有限责任公司 | 文件管理方法、装置、存储介质及计算机设备 |
CN115455440A (zh) * | 2022-07-29 | 2022-12-09 | 天翼云科技有限公司 | 透明加密方法、装置、电子设备及存储介质 |
CN117349870B (zh) * | 2023-12-05 | 2024-02-20 | 苏州元脑智能科技有限公司 | 基于异构计算的透明加解密计算系统、方法、设备和介质 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103825953A (zh) * | 2014-03-04 | 2014-05-28 | 武汉理工大学 | 一种用户模式加密文件系统 |
CN105224882A (zh) * | 2015-09-23 | 2016-01-06 | 武汉理工大学 | 一种基于桥文件系统的文件加密系统 |
CN105335663A (zh) * | 2015-10-22 | 2016-02-17 | 武汉理工大学 | 一种基于双像文件的加密文件系统 |
-
2016
- 2016-02-18 CN CN201610090739.5A patent/CN105760779B/zh not_active Expired - Fee Related
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103825953A (zh) * | 2014-03-04 | 2014-05-28 | 武汉理工大学 | 一种用户模式加密文件系统 |
CN105224882A (zh) * | 2015-09-23 | 2016-01-06 | 武汉理工大学 | 一种基于桥文件系统的文件加密系统 |
CN105335663A (zh) * | 2015-10-22 | 2016-02-17 | 武汉理工大学 | 一种基于双像文件的加密文件系统 |
Also Published As
Publication number | Publication date |
---|---|
CN105760779A (zh) | 2016-07-13 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN105760779B (zh) | 一种基于fuse的双向文件加密系统 | |
US9529735B2 (en) | Secure data encryption in shared storage using namespaces | |
CN103825953B (zh) | 一种用户模式加密文件系统 | |
US7185205B2 (en) | Crypto-pointers for secure data storage | |
US8478865B2 (en) | Systems, methods, and apparatus for matching a connection request with a network interface adapted for use with a dispersed data storage network | |
US7500071B2 (en) | Method for out of user space I/O with server authentication | |
US7702906B1 (en) | Securing kernel metadata communication in environments employing distributed software services | |
US8549278B2 (en) | Rights management services-based file encryption system and method | |
CN100585608C (zh) | 一种数据文件的安全处理方法及系统 | |
US20080028215A1 (en) | Portable personal identity information | |
US20070136340A1 (en) | Document and file indexing system | |
CN105224882B (zh) | 一种基于桥文件系统的文件加密系统 | |
US11288212B2 (en) | System, apparatus, and method for secure deduplication | |
WO2023216783A1 (zh) | 日志结构的安全数据存储方法及装置 | |
US20130247228A1 (en) | Method, system and server for digital right management | |
CN106557704A (zh) | 内容中心网络中的信息和数据框架 | |
US11720529B2 (en) | Methods and systems for data storage | |
KR100346411B1 (ko) | 커널모드에서 파일을 자동으로 암호화, 복호화하는 방법,이를 이용한 파일 포인터 이동방법, 및 이들을프로그램화하여 수록한 컴퓨터로 읽을 수 있는 기록매체 | |
CN113420308A (zh) | 用于加密存储器的数据访问控制方法及控制系统 | |
CN115758420A (zh) | 文件访问控制方法、装置、设备及介质 | |
JP2009020871A (ja) | 外部記憶装置 | |
CN104123371B (zh) | 基于分层文件系统的Windows内核文件透明过滤的方法 | |
CN105590067B (zh) | 一种基于用户空间文件系统的文件加密系统 | |
JP2009064055A (ja) | 計算機システム及びセキュリティ管理方法 | |
CN105335663B (zh) | 一种基于双像文件的加密文件系统 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant | ||
CF01 | Termination of patent right due to non-payment of annual fee |
Granted publication date: 20180622 Termination date: 20220218 |
|
CF01 | Termination of patent right due to non-payment of annual fee |