CN104123371B - 基于分层文件系统的Windows内核文件透明过滤的方法 - Google Patents
基于分层文件系统的Windows内核文件透明过滤的方法 Download PDFInfo
- Publication number
- CN104123371B CN104123371B CN201410360078.4A CN201410360078A CN104123371B CN 104123371 B CN104123371 B CN 104123371B CN 201410360078 A CN201410360078 A CN 201410360078A CN 104123371 B CN104123371 B CN 104123371B
- Authority
- CN
- China
- Prior art keywords
- file system
- file
- irp
- hierarchical
- transparent
- 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.)
- Active
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/10—File systems; File servers
- G06F16/18—File system types
- G06F16/188—Virtual file systems
- G06F16/196—Specific adaptations of the file system to access devices and non-file objects via standard file system access operations, e.g. pseudo file systems
-
- 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/6209—Protecting access to data via a platform, e.g. using keys or access control rules to a single file or object, e.g. in a secure envelope, encrypted and accessed using a key, or with access control rules appended to the object itself
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Databases & Information Systems (AREA)
- Data Mining & Analysis (AREA)
- Health & Medical Sciences (AREA)
- Bioethics (AREA)
- General Health & Medical Sciences (AREA)
- Computer Hardware Design (AREA)
- Computer Security & Cryptography (AREA)
- Software Systems (AREA)
- Storage Device Security (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
一种基于分层文件系统的Windows内核文件透明过滤的方法,通过在Windows文件系统过滤驱动中创建一个分层文件系统实现文件透明过滤,进而实现文件透明加密,来保护云环境下的隐私数据。本发明较好地解决了上述Windows平台下文件透明过滤的问题,能够不必针对同一文件不同的明文、密文内容反复清除缓存,提高了效率,同时还能够灵活定制I/O操作的语义,有更为广泛的应用空间。
Description
技术领域
本发明涉及云环境下隐私数据的保护方法,具体是一种基于分层文件系统(Layerfsd)的Windows内核文件透明过滤的方法,保护云环境下隐私数据。
背景技术
云环境下隐私数据的保护具有广泛的应用价值。通过实现文件透明加密,可以保护云环境下的隐私数据。通过文件透明过滤的方法,在写入文件时对文件内容进行加密,在读取文件时对文件内容进行解密,就实现了文件透明加密,如图1所示。
然而,在Windows操作系统中进行文件透明过滤具有实现上的困难。这是因为在Windows内核中,文件系统、虚拟内存管理器和缓存管理器紧密耦合,如图2所示。当用户通过ReadFile()API来读取文件时,首先会经过文件系统。如果文件系统发现虚拟内存中存在缓存的内容,就会使用缓存中的内容。在这种情况下,可以在文件系统之上安装一个过滤驱动,截获用户的访问并对返回的内容进行修改。当用户通过内存映射来访问文件时,情况则有所不同。如果文件的内容不在缓存中,就会产生缺页中断,并调用文件系统来获取文件的内容;如果文件的内容在缓存中,就不会产生缺页中断,即使在文件系统之上安装过滤驱动,也无法截获任何访问。
这就产生了一个问题,假设要实现一种文件透明加密,包含一个进程列表,在此列表中的进程才能访问文件的真实内容,通过在读取和写入时进行解密和加密;而其他进程只能访问原始的文件内容,即加密后的数据。使用普通的文件系统过滤方法无法实现上述需求,因为缓存中只能保存一种文件的内容,即明文或密文二者取其一。而用户总可以通过内存映射的方法,使得文件系统过滤驱动无法截获到任何请求。
这类问题对文件透明过滤在Windows平台上的应用产生了限制。例如,如果不解决这类问题,就无法实现同时支持明文、密文访问的文件透明加密系统。
在与Windows下文件透明加密的相关已公开专利CN102129540A和CN102567670A中,都使用了普通的文件系统过滤驱动,直接截获对文件的读取和写入操作,并加入加密和解密的动作,并未考虑缓存的影响,因此存在上述问题,无法做到根据进程的状态返回明文或者密文。
工业界广泛使用一种刷新缓存的方法,即当同一个文件在被机密进程和非机密进程访问之间,强制将有关的缓存清空。这样,当缓存中的内容非法时,缓存一定不会被命中,从而一定会请求文件系统提供内容,并经过安装在其上的过滤驱动。然而,这大大降低了整个系统的工作效率,尤其在不同状态的进程频繁切换时。
发明内容
本发明针对上述现有技术的不足,提出了一种基于分层文件系统(Layerfsd)的Windows内核文件透明过滤的方法,解决了上述Windows平台下文件透明过滤的问题。所述的分层文件系统驱动是指在原本的文件系统之上实现了一层新的抽象的文件系统。
本发明原理如下:
如图3所示,普通的文件系统过滤驱动仅仅截获、改变I/O请求的内容,处理后的请求仍然被请求发送到原来的文件系统,应用程序中看到的文件属于原来的文件系统。而本发明实现了一个分层的文件系统,通过在原文件系统上安装一个特殊的过滤驱动,该过滤驱动中包含一个分层的文件系统。部分符合条件I/O请求被转发到分层文件系统,应用程序中看到的文件属于该分层文件系统,原本的文件系统仅提供底层的功能支持;而另一部分不符合条件的I/O请求被转发到原文件系统。
本发明的具体技术解决方案如下:
一种基于分层文件系统的Windows内核文件透明过滤的方法,其特点在于,该方法包括如下步骤:
首先,将文件系统过滤驱动直接或间接地绑定在原有的文件系统驱动上,使之能够截获I/O管理器下发的IRP(I/O Request Packet)。这既可以通过传统的方法,即绑定文件系统的控制设备与卷设备;也可以实现为一个Mini-filter。当实现为一个Mini-filter时,我们需要注册绑定所有的IRP,不能遗漏。
然后,当用户请求操作系统创建或打开一个文件时,I/O管理器会请求创建一个文件对象,并下发功能号为IRP_MJ_CREATE的IRP,文件系统过滤驱动将截获该IRP,获取文件名和打开方式信息,并根据用户的选择,决定是否接管这个文件的I/O操作:
如果选择不接管这个文件的I/O操作,则直接下发原来的IRP到原文件系统;
如果选择接管这个文件的I/O操作,则创建一个FCB(File Control Block),该FCB属于分层文件系统,且满足三个要求:能和I/O管理器正常交互、能被过滤驱动识别、包含下层文件系统的文件句柄;
当用户请求操作系统对一个文件进行打开或创建以外的操作时,I/O管理器会对下层文件系统下发一个包含该I/O操作功能号的IRP;此时,包含分层文件系统的文件系统过滤驱动将截获所有I/O操作功能号的IRP(由于文件系统过滤驱动被绑定在原有的文件系统驱动上,I/O管理器在下发IRP时会经过文件系统过滤驱动,从而得到该驱动),并判断I/O操作所针对的文件对象中的FCB是否属于该分层文件系统:
如果属于该分层文件系统,则在文件系统过滤驱动中完成该IRP的处理,具体是:
对于不需要修改语义的I/O操作,直接生成内容完全相同、目标为下层文件对象的IRP,并调用下层文件系统,待下层文件系统完成请求后,将I/O结果按原样返回给用户;
对于需要修改语义的I/O操作,利用分层文件系统定制I/O操作的语义,一个上层的I/O操作,对应于零个、一个或多个下层的I/O操作。
如果不属于该分层文件系统,则下发该IRP到下层文件系统;
最后,文件系统过滤驱动处理文件的关闭。
与现有技术相比,本发明具有如下有益效果:
(1)能够不必针对同一文件不同的明文、密文内容反复清除缓存,提高了效率。
(2)能够灵活定制I/O操作的语义,有更为广泛的应用空间。
附图说明
图1描述了通过文件透明过滤实现文件透明加密的方法
图2描述了文件系统、虚拟内存和缓存管理器的紧密耦合关系
图3比较了普通文件系统过滤驱动和使用分层文件系统的文件系统过滤驱动的异同
图4包含了本发明实施例的系统架构
图5描述了本发明实施例中对IRP进行分发的流程
图6描述了本发明实施例中打开文件操作的处理序列。
具体实施方式
下文将结合附图对本发明的实施例作详细说明。本实施例在以本发明技术方案为前提下进行实施,给出了详细的实施方式和具体的操作过程。本发明的保护范围包括但不限于下述实施例。
本实施例为基于分层文件系统的Windows内核透明加密系统,采用了上述发明的基于分层文件系统的文件透明过滤方法,旨在为云环境下的用户隐私建模和隐私节点保护。本实施例包括一个文件系统过滤驱动,一个服务进程和一个服务器,如图4所示。
文件系统过滤驱动为本系统的核心,应用了基于分层文件系统的文件透明过滤方法,当被访问的文件为机密文件,并且访问文件的进程为机密进程时,应用透明加密:在所有读取操作时透明地解密,在所有写入操作时透明地加密。
该过滤驱动基于微软提供的Mini-filter框架实现,该框架用于简化文件系统过滤驱动开发以及增强其兼容性。在驱动中需要指定待过滤的I/O操作功能号列表并在入口点处进行注册。普通的文件系统过滤驱动中,一般只注册必要的I/O操作功能号,以达到最优性能;然而如同发明内容章节所述,我们需要实现一层文件系统,需要接管属于这层文件系统的文件的所有I/O操作,所以我们需要注册所有的I/O操作功能号。
当IRP被I/O管理器下发到目标文件系统之前,会经过所有挂载在文件系统设备之上的过滤驱动。此时,Mini-filter框架会调用指定的回调函数。该函数对IRP的I/O功能号进行判断并分别处理,如图5所示。
如果I/O功能号为IRP_MJ_CREATE,即创建或打开一个文件:若当前进程为机密进程,且被访问的文件为机密文件时,创建一个属于我们分层文件系统的FCB,并返回FLT_PREOP_COMPLETE以完成I/O操作;否则返回FLT_PREOP_SUCCESS_NO_CALLBACK以将该IRP下发到原文件系统。
如果I/O功能号为其他:若被访问文件的FCB属于分层文件系统,则根据I/O功能号对I/O操作进行分别处理,并返回FLT_PREOP_COMPLETE以完成I/O操作;否则返回FLT_PREOP_SUCCESS_NO_CALLBACK以将该IRP下发到原文件系统。
创建FCB的过程富有技巧性。如前文所述,FCB必须满足三个要求,因此设计FCB结构如下列代码清单:
根据Windows文件系统的实现约定,所有文件对象的FsContext域必须指向一个FSRTL_ADVANCED_FCB_HEADER首部结构,因此该结构必须位于FCB结构的第一项。我们需要对该结构进行合适的初始化。初始化的过程主要包括:
设置NodeTypeCode域为某唯一值,该值不能和安装于系统上的其他文件系统相同。
设置NodeByteSize域为FCB的大小,即sizeof(FCB)
设置IsFastIoPossible域为FastIoIsNotPossible以避免Fast I/O操作
初始化MainResource互斥体,并将Resource域指向该互斥体
初始化PagingIoResource互斥体,并将PagingIoResource域指向该互斥体
初始化AdvancedFcbHeaderMutex互斥体,并以该互斥体为参数调用FsRtlSetupAdvancedHeader()函数完成对该首部其余部分的初始化工作。
初始化首部结构之后,需要对FCB的其余部分进行初始化。将FCB插入到一个哈希表中以实现快速检索,这主要涉及上述FcbListEntry域。我们还同时保留下层文件的一个句柄引用BaseFileHandle和一个对象引用BaseFileObject。同时保留这两种引用的好处在于,当需要某种引用时,我们有现成的引用可供使用,而不需要进行额外的操作。例如,Mini-filter框架提供了FltReadFile()函数,用于在过滤操作中读取文件,该函数接受一个文件的对象引用。然而,该函数被设计用于仅能在过滤操作中使用,需要提供一个FLT_INSTANCE类型的指针,指向Mini-filter驱动程序的一个实例。由于我们的分层文件系统的独立性,当需要在过滤I/O请求以外的时刻读取文件时,就必须使用ZwReadFile()函数,该函数接受一个文件的句柄引用。
图6描述了对打开文件操作的处理序列。应用程序调用Win32 API函数CreateFile()请求打开一个文件,I/O管理器生成一个功能号为IRP_MJ_CREATE的IRP,并发送给文件系统。由于我们安装了一个Mini-filter,我们会收到一个Pre-Operation回调,即截获到了这一请求。在回调函数中,我们调用FltCreateFileEx(),打开下层文件系统上的文件,并保留其引用。我们还通过服务进程向远程服务器请求该文件的密钥信息。所述服务进程为一个运行在用户态的Windows服务进程,旨在提供文件系统过滤驱动和服务器之间的通讯。得到密钥信息之后,我们调用FltWriteFile()将密钥写入文件首部。最后,我们向用户返回分层文件系统上的一个文件句柄,并完成I/O操作。
经试验表明,本发明实现了一个分层的文件系统,通过在原文件系统上安装一个特殊的过滤驱动,该过滤驱动中包含一个分层的文件系统。部分符合条件I/O请求被转发到分层文件系统,应用程序中看到的文件属于该分层文件系统,原本的文件系统仅提供底层的功能支持;而另一部分不符合条件的I/O请求被转发到原文件系统。能够不必针对同一文件不同的明文、密文内容反复清除缓存,提高了效率;还能够灵活定制I/O操作的语义,有更为广泛的应用空间。
Claims (2)
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操作的语义,一个上层的I/O操作,对应于零个、一个或多个下层的I/O操作。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201410360078.4A CN104123371B (zh) | 2014-07-25 | 2014-07-25 | 基于分层文件系统的Windows内核文件透明过滤的方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201410360078.4A CN104123371B (zh) | 2014-07-25 | 2014-07-25 | 基于分层文件系统的Windows内核文件透明过滤的方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN104123371A CN104123371A (zh) | 2014-10-29 |
CN104123371B true CN104123371B (zh) | 2017-09-29 |
Family
ID=51768782
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201410360078.4A Active CN104123371B (zh) | 2014-07-25 | 2014-07-25 | 基于分层文件系统的Windows内核文件透明过滤的方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN104123371B (zh) |
Families Citing this family (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN107145793B (zh) * | 2017-04-08 | 2019-05-21 | 北京明朝万达科技股份有限公司 | 一种基于文件双缓存的文件权限管理的方法及装置 |
CN107292196A (zh) * | 2017-06-27 | 2017-10-24 | 北京华云网际科技有限公司 | Io数据的读写方法和装置 |
CN110688650B (zh) * | 2019-08-15 | 2024-03-08 | 奇安信安全技术(珠海)有限公司 | 访问请求的监测方法及装置、存储介质、计算机设备 |
CN113221171A (zh) * | 2021-05-21 | 2021-08-06 | 杭州弗兰科信息安全科技有限公司 | 一种加密文件读写方法、装置、电子设备和存储介质 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7536524B2 (en) * | 1998-07-31 | 2009-05-19 | Kom Networks Inc. | Method and system for providing restricted access to a storage medium |
CN102129540A (zh) * | 2011-05-03 | 2011-07-20 | 北京思创银联科技股份有限公司 | 文件动态透明加密解密方法 |
CN102567670A (zh) * | 2011-12-28 | 2012-07-11 | 南京邮电大学 | 文件系统过滤驱动加密实现方法 |
-
2014
- 2014-07-25 CN CN201410360078.4A patent/CN104123371B/zh active Active
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7536524B2 (en) * | 1998-07-31 | 2009-05-19 | Kom Networks Inc. | Method and system for providing restricted access to a storage medium |
CN102129540A (zh) * | 2011-05-03 | 2011-07-20 | 北京思创银联科技股份有限公司 | 文件动态透明加密解密方法 |
CN102567670A (zh) * | 2011-12-28 | 2012-07-11 | 南京邮电大学 | 文件系统过滤驱动加密实现方法 |
Non-Patent Citations (1)
Title |
---|
基于文件系统过滤驱动的透明加解密系统的研究与实现;宋永军;《中国优秀硕士学位论文全文数据库信息科技辑》;20131115(第11期);第3.2.2,4.1.2,4.1.5,4.2,4.2.1,4.2.2节,图4-1,4-2 * |
Also Published As
Publication number | Publication date |
---|---|
CN104123371A (zh) | 2014-10-29 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP6061171B1 (ja) | コンピュータプログラム、秘密管理方法及びシステム | |
CN106022155B (zh) | 用于数据库安全管理的方法及服务器 | |
WO2017133203A1 (zh) | 一种执行环境的虚拟化、虚拟执行环境的访问方法及装置 | |
US9460276B2 (en) | Virtual machine system, confidential information protection method, and confidential information protection program | |
US10509905B2 (en) | Ransomware mitigation system | |
US9215067B2 (en) | Achieving storage efficiency in presence of end-to-end encryption using downstream decrypters | |
CN103620606B (zh) | 存储检测装置、系统及存储检测方法 | |
CN104123371B (zh) | 基于分层文件系统的Windows内核文件透明过滤的方法 | |
CN104391695B (zh) | 一种通过外部设备进行同步控制的方法及其装置 | |
CN105760779B (zh) | 一种基于fuse的双向文件加密系统 | |
JP2016523421A (ja) | ハイパーバイザに制御されるシステムにおいてゲスト・イベントを処理するための方法、データ処理プログラム、コンピュータ・プログラム製品、およびデータ処理システム | |
CN102667803B (zh) | 用于根据所分配的权限信息运行虚拟机的方法和设备 | |
CN103002445A (zh) | 一种安全的提供应用服务的移动电子设备 | |
CN104025544B (zh) | 机密信息泄露防止系统和机密信息泄露防止方法 | |
CN101488174A (zh) | 动态透明的虚拟可信平台模块的实现方法 | |
Onarlioglu et al. | Privexec: Private execution as an operating system service | |
CN101551756A (zh) | 基于操作系统层的虚拟方法及虚拟装置 | |
CN109726041B (zh) | 恢复虚拟机磁盘中的文件的方法、设备和计算机可读介质 | |
CN103488954A (zh) | 一种文件加密系统 | |
CN106817388A (zh) | 虚拟机、宿主机获取数据的方法、装置及访问数据的系统 | |
JP2007524161A (ja) | ウイルス、スパイウェア及びハッカー保護特徴を有する仮想処理空間における分離マルチプレクス型多次元処理 | |
CN108229190A (zh) | 透明加解密的控制方法、装置、程序、存储介质和电子设备 | |
CN105279453A (zh) | 一种支持分离存储管理的文件分区隐藏系统及其方法 | |
CN102469083A (zh) | 一种用户认证的方法、装置及企业系统 | |
US10678577B2 (en) | Method for implementing virtual secure element |
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 |