基于分层文件系统的Windows内核文件透明过滤的方法

文档序号:6621378阅读:315来源:国知局
基于分层文件系统的Windows内核文件透明过滤的方法
【专利摘要】一种基于分层文件系统的Windows内核文件透明过滤的方法,通过在Windows文件系统过滤驱动中创建一个分层文件系统实现文件透明过滤,进而实现文件透明加密,来保护云环境下的隐私数据。本发明较好地解决了上述Windows平台下文件透明过滤的问题,能够不必针对同一文件不同的明文、密文内容反复清除缓存,提高了效率,同时还能够灵活定制I/O操作的语义,有更为广泛的应用空间。
【专利说明】基于分层文件系统的Windows内核文件透明过滤的方法

【技术领域】
[0001] 本发明涉及云环境下隐私数据的保护方法,具体是一种基于分层文件系统 (Layerfsd)的Windows内核文件透明过滤的方法,保护云环境下隐私数据。

【背景技术】
[0002] 云环境下隐私数据的保护具有广泛的应用价值。通过实现文件透明加密,可以保 护云环境下的隐私数据。通过文件透明过滤的方法,在写入文件时对文件内容进行加密,在 读取文件时对文件内容进行解密,就实现了文件透明加密,如图1所示。
[0003] 然而,在Windows操作系统中进行文件透明过滤具有实现上的困难。这是因为在 Windows内核中,文件系统、虚拟内存管理器和缓存管理器紧密耦合,如图2所示。当用户通 过ReadFileOAPI来读取文件时,首先会经过文件系统。如果文件系统发现虚拟内存中存 在缓存的内容,就会使用缓存中的内容。在这种情况下,可以在文件系统之上安装一个过滤 驱动,截获用户的访问并对返回的内容进行修改。当用户通过内存映射来访问文件时,情况 则有所不同。如果文件的内容不在缓存中,就会产生缺页中断,并调用文件系统来获取文件 的内容;如果文件的内容在缓存中,就不会产生缺页中断,即使在文件系统之上安装过滤驱 动,也无法截获任何访问。
[0004] 这就产生了一个问题,假设要实现一种文件透明加密,包含一个进程列表,在此列 表中的进程才能访问文件的真实内容,通过在读取和写入时进行解密和加密;而其他进程 只能访问原始的文件内容,即加密后的数据。使用普通的文件系统过滤方法无法实现上述 需求,因为缓存中只能保存一种文件的内容,即明文或密文二者取其一。而用户总可以通过 内存映射的方法,使得文件系统过滤驱动无法截获到任何请求。
[0005] 这类问题对文件透明过滤在Windows平台上的应用产生了限制。例如,如果不解 决这类问题,就无法实现同时支持明文、密文访问的文件透明加密系统。
[0006] 在与Windows下文件透明加密的相关已公开专利CN102129540A和CN102567670A 中,都使用了普通的文件系统过滤驱动,直接截获对文件的读取和写入操作,并加入加密和 解密的动作,并未考虑缓存的影响,因此存在上述问题,无法做到根据进程的状态返回明文 或者密文。
[0007] 工业界广泛使用一种刷新缓存的方法,即当同一个文件在被机密进程和非机密进 程访问之间,强制将有关的缓存清空。这样,当缓存中的内容非法时,缓存一定不会被命中, 从而一定会请求文件系统提供内容,并经过安装在其上的过滤驱动。然而,这大大降低了整 个系统的工作效率,尤其在不同状态的进程频繁切换时。


【发明内容】

[0008] 本发明针对上述现有技术的不足,提出了一种基于分层文件系统(Layerfsd)的 Windows内核文件透明过滤的方法,解决了上述Windows平台下文件透明过滤的问题。所述 的分层文件系统驱动是指在原本的文件系统之上实现了一层新的抽象的文件系统。
[0009] 本发明原理如下:
[0010] 如图3所示,普通的文件系统过滤驱动仅仅截获、改变I/O请求的内容,处理后的 请求仍然被请求发送到原来的文件系统,应用程序中看到的文件属于原来的文件系统。而 本发明实现了一个分层的文件系统,通过在原文件系统上安装一个特殊的过滤驱动,该过 滤驱动中包含一个分层的文件系统。部分符合条件I/O请求被转发到分层文件系统,应用 程序中看到的文件属于该分层文件系统,原本的文件系统仅提供底层的功能支持;而另一 部分不符合条件的I/O请求被转发到原文件系统。
[0011] 本发明的具体技术解决方案如下:
[0012] 一种基于分层文件系统的Windows内核文件透明过滤的方法,其特点在于,该方 法包括如下步骤:
[0013] 首先,将文件系统过滤驱动直接或间接地绑定在原有的文件系统驱动上,使之能 够截获I/O管理器下发的IRP(I/〇 Request Packet)。这既可以通过传统的方法,即绑定 文件系统的控制设备与卷设备;也可以实现为一个Mini-filter。当实现为一个Mini-filter 时,我们需要注册绑定所有的IRP,不能遗漏。
[0014] 然后,当用户请求操作系统创建或打开一个文件时,I/O管理器会请求创建一个文 件对象,并下发功能号为IRP_MJ_CREATE的IRP,文件系统过滤驱动将截获该IRP,获取文件 名和打开方式信息,并根据用户的选择,决定是否接管这个文件的I/O操作:
[0015] 如果选择不接管这个文件的I/O操作,则直接下发原来的IRP到原文件系统;
[0016] 如果选择接管这个文件的I/O操作,则创建一个FCB (File Control Block),该 FCB属于分层文件系统,且满足三个要求:能和I/O管理器正常交互、能被过滤驱动识别、包 含下层文件系统的文件句柄;
[0017] 当用户请求操作系统对一个文件进行打开或创建以外的操作时,1/0管理器会对 下层文件系统下发一个包含该1/0操作功能号的IRP ;此时,包含分层文件系统的文件系统 过滤驱动将截获所有1/0操作功能号的IRP(由于文件系统过滤驱动被绑定在原有的文件 系统驱动上,1/0管理器在下发IRP时会经过文件系统过滤驱动,从而得到该驱动),并判断 1/0操作所针对的文件对象中的FCB是否属于该分层文件系统:
[0018] 如果属于该分层文件系统,则在文件系统过滤驱动中完成该IRP的处理,具体是: [0019] 对于不需要修改语义的1/0操作,直接生成内容完全相同、目标为下层文件对象 的IRP,并调用下层文件系统,待下层文件系统完成请求后,将1/0结果按原样返回给用户;
[0020] 对于需要修改语义的1/0操作,利用分层文件系统定制1/0操作的语义,一个上层 的1/0操作,对应于零个、一个或多个下层的1/0操作。
[0021] 如果不属于该分层文件系统,则下发该IRP到下层文件系统;
[0022] 最后,文件系统过滤驱动处理文件的关闭。
[0023] 与现有技术相比,本发明具有如下有益效果:
[0024] (1)能够不必针对同一文件不同的明文、密文内容反复清除缓存,提高了效率。
[0025] (2)能够灵活定制1/0操作的语义,有更为广泛的应用空间。

【专利附图】

【附图说明】
[0026] 图1描述了通过文件透明过滤实现文件透明加密的方法
[0027] 图2描述了文件系统、虚拟内存和缓存管理器的紧密耦合关系
[0028] 图3比较了普通文件系统过滤驱动和使用分层文件系统的文件系统过滤驱动的 异同
[0029] 图4包含了本发明实施例的系统架构
[0030] 图5描述了本发明实施例中对IRP进行分发的流程
[0031] 图6描述了本发明实施例中打开文件操作的处理序列。

【具体实施方式】
[0032] 下文将结合附图对本发明的实施例作详细说明。本实施例在以本发明技术方案为 前提下进行实施,给出了详细的实施方式和具体的操作过程。本发明的保护范围包括但不 限于下述实施例。
[0033] 本实施例为基于分层文件系统的Windows内核透明加密系统,采用了上述发明的 基于分层文件系统的文件透明过滤方法,旨在为云环境下的用户隐私建模和隐私节点保 护。本实施例包括一个文件系统过滤驱动,一个服务进程和一个服务器,如图4所示。
[0034] 文件系统过滤驱动为本系统的核心,应用了基于分层文件系统的文件透明过滤方 法,当被访问的文件为机密文件,并且访问文件的进程为机密进程时,应用透明加密:在所 有读取操作时透明地解密,在所有写入操作时透明地加密。
[0035] 该过滤驱动基于微软提供的Mini-filter框架实现,该框架用于简化文件系统过 滤驱动开发以及增强其兼容性。在驱动中需要指定待过滤的I/O操作功能号列表并在入口 点处进行注册。普通的文件系统过滤驱动中,一般只注册必要的I/O操作功能号,以达到最 优性能;然而如同
【发明内容】
章节所述,我们需要实现一层文件系统,需要接管属于这层文件 系统的文件的所有I/O操作,所以我们需要注册所有的I/O操作功能号。
[0036] 当IRP被I/O管理器下发到目标文件系统之前,会经过所有挂载在文件系统设备 之上的过滤驱动。此时,Mini-filter框架会调用指定的回调函数。该函数对IRP的I/O功 能号进行判断并分别处理,如图5所示。
[0037] 如果I/O功能号为IRP_MJ_CREATE,即创建或打开一个文件:若当前进程为机密 进程,且被访问的文件为机密文件时,创建一个属于我们分层文件系统的FCB,并返回FLT_ PRE0P_C0MPLETE 以完成 I/O 操作;否则返回 FLT_PREOP_SUCCESS_NO_CALLBACK 以将该 IRP 下发到原文件系统。
[0038] 如果I/O功能号为其他:若被访问文件的FCB属于分层文件系统,则根据I/O功能 号对I/O操作进行分别处理,并返回FLT_PRE0P_C0MPLETE以完成I/O操作;否则返回FLT_ PREOP_SUCCESS_NO_CALLBACK以将该IRP下发到原文件系统。
[0039] 创建FCB的过程富有技巧性。如前文所述,FCB必须满足三个要求,因此设计FCB 结构如下列代码清单:
[0040]

【权利要求】
1. 一种基于分层文件系统的Windows内核文件透明过滤的方法,其特征在于,该方法 包括如下步骤: 首先,将文件系统过滤驱动直接或间接地绑定在原有的文件系统驱动上,使之能够截 获I/O管理器下发的IRP; 然后,当用户请求操作系统创建或打开一个文件时,I/O管理器会请求创建一个文件对 象,并下发功能号为IRP_MJ_CREATE的IRP,包含分层文件系统的文件系统过滤驱动将截获 该IRP,获取文件名和打开方式信息,并根据用户的选择,决定是否接管这个文件的I/O操 作: 如果选择不接管这个文件的I/O操作,则直接下发原来的IRP到原文件系统; 如果选择接管这个文件的I/O操作,则创建一个FCB,该FCB属于分层文件系统,且满足 三个要求:能和I/O管理器正常交互、能被过滤驱动识别、包含下层文件系统的文件句柄; 当用户请求操作系统对一个文件进行打开或创建以外的操作时,I/O管理器会对下层 文件系统下发一个包含该I/O操作功能号的IRP ;此时,包含分层文件系统的文件系统过滤 驱动将截获所有I/O操作功能号的IRP,并判断I/O操作所针对的文件对象中的FCB是否属 于该分层文件系统: 如果属于该分层文件系统,则在文件系统过滤驱动中完成该IRP的处理; 如果不属于该分层文件系统,则下发该IRP到下层文件系统; 最后,文件系统过滤驱动处理文件的关闭。
2. 根据权利要求1所述的基于分层文件系统的Windows内核文件透明过滤的方法,其 特征在于,在文件系统过滤驱动中完成该IRP的处理,具体实现方法是: 对于不需要修改语义的I/O操作,直接生成内容完全相同、目标为下层文件对象的 IRP,并调用下层文件系统,待下层文件系统完成请求后,将I/O结果按原样返回给用户; 对于需要修改语义的I/O操作,利用分层文件系统定制I/O操作的语义,一个上层的1/ 〇操作,对应于零个、一个或多个下层的I/O操作。
【文档编号】G06F21/60GK104123371SQ201410360078
【公开日】2014年10月29日 申请日期:2014年7月25日 优先权日:2014年7月25日
【发明者】管海兵, 龚路, 戚正伟 申请人:上海交通大学
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1