CN115329351A - 一种面向Windows系统的文件保护系统及方法 - Google Patents
一种面向Windows系统的文件保护系统及方法 Download PDFInfo
- Publication number
- CN115329351A CN115329351A CN202210871523.8A CN202210871523A CN115329351A CN 115329351 A CN115329351 A CN 115329351A CN 202210871523 A CN202210871523 A CN 202210871523A CN 115329351 A CN115329351 A CN 115329351A
- Authority
- CN
- China
- Prior art keywords
- file
- encryption
- manager
- callback function
- windows
- 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.)
- Pending
Links
Images
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/602—Providing cryptographic facilities or services
-
- 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)
- Health & Medical Sciences (AREA)
- Bioethics (AREA)
- General Health & Medical Sciences (AREA)
- Computer Hardware Design (AREA)
- Computer Security & Cryptography (AREA)
- Software Systems (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Storage Device Security (AREA)
Abstract
本发明涉及文件保护技术领域,尤其涉及一种面向Windows系统的文件保护系统及方法,在用户打开文件时,文件过滤驱动会拦截用户的操作请求,获取相应文件的数据,对文件进行加密解密。本驱动也会与应用层程序进行通信,获取机密软件的信息。本系统针对目前传统加密系统存在繁琐流程及其带来的不足,以过滤驱动技术为基础,分析Windows绑定文件系统、对IRP的处理、加密标识的处理等关键问题,设计并实现了透明加密文件系统。测试表明,本文所描述系统的加密效率更高,各项功能都具有很高的稳定性,在安全性上达到了预期目标。同时,通过与传统的基于过滤驱动的文件保护系统比较,系统在安全性上有很大的提高。
Description
技术领域
本发明涉及文件保护技术领域,尤其涉及一种面向Windows系统的文件保护系统及方法。
背景技术
企业的计算机几乎是不可避免的要保存着公司的重要文件,其中很多文件都是敏感的。如何对电子文档进行有效的保护已经成为了一个迫在眉睫的问题,于是文件系统透明加密技术就应运而生了。
传统型数据防泄漏产品,大多是基于API hook进行,如中国专利CN106897636A公开了一种基于API HOOK的移动存储介质安全管理方法,通过Windows系统下的API HOOK机制拦截用户操作,给予用户不同的访问权限,使移动存储介质安全性高,其工作方式为静态加密和重定向,基本思想为钩子程序拦截到受保护文件,然后对文件进行加密操作。由于这种方式在应用层进行动态加密,其加密效率和稳定性不足。
发明内容
有鉴于此,本发明的目的在于提出一种面向Windows系统的文件保护系统及方法,以解决传统文件保护系统加密效率和稳定性不足的问题。
基于上述目的,本发明提供了一种面向Windows系统的文件保护系统,包括文件微过滤驱动和应用管理程序,文件微过滤驱动位于内核层,应用管理程序位于应用层,应用管理程序通过Win32 Api DeviceIoControl和文件微过滤驱动通信;
所述文件微过滤驱动包括过滤管理器和I/O管理器,所述I/O管理器用于在应用管理程序和过滤管理器之间下发和返回读写请求;
所述过滤管理器用于在接收到读请求时,调用第一预处理回调函数,对是否满足解密条件进行验证,若满足,则调用第一后处理回调函数,对文件进行解密,并上发读请求至应用管理程序;
所述过滤管理器还用于在接收到写请求时,调用第二预处理回调函数,对是否满足加密条件进行验证,若满足,则对文件加密,并下发写请求,文件加密后调用第二后处理回调函数,对缓存进行刷新。
优选地,文件微过滤驱动还包括身份认证模块和条件判断模块,所述身份认证模块用于在第一预处理回调函数或第二预处理回调函数执行时,对登录系统的用户身份进行验证,若用户身份验证成功,则允许微过滤驱动对文件实施加解密操作,若验证失败,则过滤驱动拒绝对加密文件进行解密操作;
所述条件判断模块用于在第一预处理回调函数或第二预处理回调函数执行时,判断打开文件的进程是否为机密进程,若为机密进程,判断机密进程打开的文件是否具有加密标识,若具有,则允许微过滤驱动对文件实施加解密操作。
优选地,系统还包括分级权限管理模块,所述分级权限管理模块用于对不同组别的文件采用不同的加密策略,还用于分配管理员角色和员工角色,并为管理员角色赋予授权给员工进行权限分配的权限。
优选地,系统还包括注册表监控模块,所述注册表监控模块在Register.sys驱动中实现,通过CmRegisterCallback函数注册一个注册表回调,用一个内核链表结构实现注册表操作信息的保存,函数的第一个参数为回调函数,第二个参数是用户自定义的一个数据结构体,第三个参数为一个返回参数,当成功注册后,Cookie会保存注册的信息,在移除注册表回调时需要提供这个Cookie。
优选地,系统还包括反调试模块,所述反调试模块采用Windows内核挂钩技术来抵御动态反调试,通过Hook.sys驱动实现对NtOpenProcess的Inline Hook,从来限制调试器附加到进程,无法调试本进程。
优选地,第二预处理回调函数还包括:
在对文件加密之前,分配新的缓冲区,拷贝数据到新的缓冲区,生成上下文,分配新的缓冲区;
所述第二后处理回调函数还包括:
释放上下文,释放分配的缓冲区,恢复原来的缓冲区。
优选地,系统采用对称加密算法对文件进行加密。
本说明书还提供一种面向Windows系统的文件保护方法,包括:
A.在初始化和动态加载文件微过滤驱动完成后,监控文件操作,拦截读写请求;
B.将应用程序下发的写请求经I/O管理器后下发至过滤管理器;
C.执行预处理回调函数;
D.判断当前文件是否为加密文件,若否,将写请求下发至下层磁盘驱动;
E.若是,判断当前进程是否为机密进程,若否,将写请求下发至下层磁盘驱动;
F.若是,生成上下文信息,加密文件数据,将写请求下发至下层磁盘驱动;
G.接收下层磁盘驱动上方的读请求结果,执行后处理回调函数,清理缓存数据;
H.释放上下文信息;
I.将读请求结果经I/O管理器后上发至应用程序;
J.将应用程序下方的读请求经I/O管理器后下发至过滤管理器;
K.执行预处理回调函数;
L.判断文件是否符合解密条件,若不符合,则下发读请求至下层磁盘驱动,并接收下层磁盘驱动返回的读请求结果和文件数据;
M.将读请求结果和文件数据经I/O管理器后返回至应用程序;
N.若文件符合解密条件,则在步骤L后,继续执行:
O.判断读请求返回结果是否成功,若否,直接执行M;
P.若是,判断读取数据的长度是否为非0,若否,直接执行M;
Q.若是,获取缓冲区,判断当前进程是否为机密进程,若否,直接执行M;
R.若是,解密文件数据,执行M。
优选地,本方法还包括:
新分配缓冲区用于防止重复加密现象;
在步骤F前,所述方法还包括:
判断是否获取缓冲区MDL,若否,直接将写请求下发至下层磁盘驱动;
若是,则分配新缓冲区,拷贝数据到新缓冲区,并在加密文件数据前分配新缓冲区;
在步骤H后,所述方法还包括:
释放分配的缓冲区;
恢复原来的缓冲区。
本发明的有益效果:文件过滤驱动是本申请描述系统的核心部分,在用户打开文件时,文件过滤驱动会拦截用户的操作请求,获取相应文件的数据,对文件进行加密解密。本驱动也会与应用层程序进行通信,获取机密软件的信息。本系统针对目前传统加密系统存在繁琐流程及其带来的不足,以过滤驱动技术为基础,分析Windows绑定文件系统、对IRP的处理、加密标识的处理等关键问题,设计并实现了透明加密文件系统。测试表明,本文所描述系统的加密效率更高,各项功能都具有很高的稳定性,在安全性上达到了预期目标。同时,通过与传统的基于过滤驱动的文件保护系统比较,系统在安全性上有很大的提高。
附图说明
为了更清楚地说明本发明或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1为本发明实施例的文件保护系统架构示意图;
图2为本发明实施例的缓冲区读写过程示意图;
图3为本发明实施例的身份认证过程示意图;
图4为本发明实施例的文件读请求的处理过程示意图;
图5为本发明实施例的文件写请求的处理过程示意图。
具体实施方式
为使本发明的目的、技术方案和优点更加清楚明白,以下结合具体实施例,对本发明进一步详细说明。
需要说明的是,除非另外定义,本发明使用的技术术语或者科学术语应当为本发明所属领域内具有一般技能的人士所理解的通常意义。本发明中使用的“第一”、“第二”以及类似的词语并不表示任何顺序、数量或者重要性,而只是用来区分不同的组成部分。“包括”或者“包含”等类似的词语意指出现该词前面的元件或者物件涵盖出现在该词后面列举的元件或者物件及其等同,而不排除其他元件或者物件。“连接”或者“相连”等类似的词语并非限定于物理的或者机械的连接,而是可以包括电性的连接,不管是直接的还是间接的。“上”、“下”、“左”、“右”等仅用于表示相对位置关系,当被描述对象的绝对位置改变后,则该相对位置关系也可能相应地改变。
如图1-图5所示,本说明书实施例提供一种面向Windows系统的文件保护系统,包括文件微过滤驱动(Minifilter)和应用管理程序,其中应用管理程序位于应用层,文件微过滤驱动位于内核层,应用管理程序通过Win32 Api DeviceIoControl和文件微过滤驱动通信,DeviceIoControl内部会使操作系统创建一个IRP_MJ_DEVICE_CONTROL类型的IRP,然后操作系统会将这个IRP转发到派遣函数中。通过这个API通信有四种内存访问方式,分别为:METHOD_BUFFERED、METHOD_IN_DIRECT、METHOD_OUT_DIRECT、METHOD_NEITHER。
所述文件微过滤驱动包括过滤管理器和I/O管理器,所述I/O管理器用于在应用管理程序和过滤管理器之间下发和返回读写请求;
所述过滤管理器用于在接收到读请求时,调用读请求预处理函数,对是否满足解密条件进行验证,若满足,则调用读请求后处理函数,对文件进行解密,并上发读请求至应用管理程序;
所述过滤管理器还用于在接收到写请求时,调用写请求预处理函数,对是否满足加密条件进行验证,若满足,则对文件加密,并下发写请求,文件加密后调用写请求后处理函数,对缓存进行刷新。
Minifilter是微软推出的一个较新的文件过滤驱动框架。传统型的文件过滤驱动开发由于操作系统版本的不同以及文件系统版本的不同需要对绑定的文件系统的设备的变化情况进行分别处理。但作为开发者,我们想专注与功能上的实现,并不想花费很多代码用于绑定文件系统的设备,检测文件系统设备的变化情况等。而使用Minifilter框架进行开发则可以有效的避开这些繁琐的步骤。微软把基本的IRP的处理工作都交给FilterManager,这样有效的提高了开发效率,而且不用软件之间的兼容性也有所提升,以前的防毒软件各家厂商往往都会有不兼容的问题,从根本上讲是由于传统型的过滤驱动与Windows内核的内部实现的深刻相关性,导致了兼容性不佳。
传统型文件系统过滤框架(sfilter)是基于NT驱动框架之上通过设备栈绑定的形式绑定的,驱动自己生成一个设备(过滤设备对象),调用系统提供的绑定API,绑定到目标设备上。
文件系统微过滤框架(Minifilter)本质上是基于回调实现的,Minifilter通过注册并启动后根据在注册表中设置的相应值,插入到对应的Fltmgr实例队列中,当有关注的操作请求来时,过滤管理器会调用相应的回调函数。而我们可以在回调函数中设置自己的行为(加密/解密/什么都不做),也可以设置最终的过滤动作(拦截、放行)。
本说明书实施例提供的面向Windows系统的文件保护系统,文件过滤驱动是本文所描述系统的核心部分,在用户打开文件时,文件过滤驱动会拦截用户的操作请求,获取相应文件的数据,对文件进行加密解密。本驱动也会与应用层程序进行通信,获取机密软件的信息。本系统针对目前传统加密系统存在繁琐流程及其带来的不足,以过滤驱动技术为基础,分析Windows绑定文件系统、对IRP的处理、加密标识的处理等关键问题,设计并实现了透明加密文件系统。测试表明,本文所描述系统的各项功能都具有很高的稳定性,在安全性上达到了预期目标。同时,通过与传统的基于过滤驱动的文件保护系统比较,系统在安全性上有很大的提高。
作为一种实施方式,文件微过滤驱动还包括身份认证模块和条件判断模块,所述身份认证模块用于在读请求预处理函数或写请求预处理函数执行时,对登录系统的用户身份进行验证,若用户身份验证成功,则允许微过滤驱动对文件实施加解密操作,若验证失败,则过滤驱动拒绝对加密文件进行解密操作;
用户身份的认证是基于系统安全性的考虑,是整个文件系统安全的前提,身份认证相当于给数据加把锁,保证系统中的加密文件只能狗被合法的用户访问,从而防止文件的泄露。所以在首次登录系统时,需要进行身份验证,从而防止文件泄密。只有用户身份登陆成功后,过滤驱动才对文件实施加解密操作。在用户身份认证失败时,用户仍可以继续正常使用系统,但是访问的加密文件时,过滤驱动会拒绝对加密文件进行解密操作,用户看到的仍然是无法识别的密文。
采用用户身份登录的方式实现身份认证,身份认证包括了用户名、密码和MAC地址,在注册成功后保存在远程服务器端的服务器中。注册时需要使用服务器端直接向数据库中添加用户信息,客户端无法实现注册,在成功添加用户信息后。用户启动应用程序时,属于首次登录系统,输入用户名密码后,客户端向服务器端发送身份请求,调用用户身份认证模块进行身份认证,并根据服务器端返回的认证结果进行相应的处理(是否启动驱动加密解密)。图2-4展示了身份认证模块的身份认证过程。
条件判断模块用于在读请求预处理函数或写请求预处理函数执行时,判断打开文件的进程是否为机密进程,若为机密进程,判断机密进程打开的文件是否具有加密标识,若具有,则允许微过滤驱动对文件实施加解密操作。
对文件的透明加密本质是在文件的读/写时候加密/解密文件,而在打开文件时会面临一个问题,机密进程打开的文件并不一定是加密文件,想要区分文件是否是经过加密的文件。就需要给文件设置一个加密标识。而这个加密标识会改变文件的大小,就需要在查询文件信息、修改文件文件属性时考虑加密标识大小的因素,在读取时,如果机密进程打开,就需要在IRP_MJ_READ主功能号后操作请求进行处理,在读取到文件的内容后,需要修改文件的偏移,然后对文件内容进行解密,如果是非机密进程,则直接完成该请求请求,应用层显示的则为密文。
当用户在查询加密文件的大小时,需要处理主功能号为IRP_MJ_QUERY_INFORMATION的请求,只需要在后处理函数中将文件大小减去加密标识的大小即可。
当用户通过一个机密进程保存一个加密文件或者删除文件或者更改文件大小等,会发送主功能好为IRP_MJ_SET_INFORMATION的请求,我们会加上一个加密标识,在设置写入文件属性时,需要将文件大小加上加密标识的大小。
作为一种实施方式,系统还包括分级权限管理模块,所述分级权限管理模块用于对不同组别的文件采用不同的加密策略,还用于分配管理员角色和员工角色,并为管理员角色赋予授权给员工进行权限分配的权限。
多部门共用系统、各个部门有其自己的管理员,并给其部门员工分配权限,即实现多级管理员层层分配,分级管理员只能管理自己职责范围内的模板权限分配。如图2-5所示,分级权限分配有以下几个特征:
(1)如果需要将授权权限分配给某个职位或角色,首先需要开启分级授权功能。
(2)如果某角色拥有授权权限,其必须拥有管理系统>权限管理的查看权限,因为进行权限分配的时候需要在权限管理项中进行。
(3)下级管理员能看到用户是管理员在给其分配可管理部门下的用户、角色下面的用户以及无部门角色的用户,同时该部门的部门结构也会显示出来。
(4)如果出现多个管理员为同一角色进行权限分配,那么后配置的增量更新先配置的。
作为一种实施方式,系统还包括注册表监控模块,所述注册表监控模块在Register.sys驱动中实现,通过CmRegisterCallback函数注册一个注册表回调,用一个内核链表结构实现注册表操作信息的保存,函数的第一个参数为回调函数,第二个参数是用户自定义的一个数据结构体,第三个参数为一个返回参数,当成功注册后,Cookie会保存注册的信息,在移除注册表回调时需要提供这个Cookie。
在Windows操作系统中注册表是一个非常重要的数据配置存储结构,存储着系统绝大部分的核心配置信息。注册表也是一个文件,这些文件大多数存储在系统盘system32\config目录下,很多恶意软件通过对注册表的修改来实现驱动的加载,本系统通过实现一个C盘还原功能来实现对注册表修改的防范。为了监控注册表的所有操作,并修改对注册表操作的行为和结果(这个功能未在本系统中实现)。本系统通过注册注册表回调函数来实现对注册表的实时监控,并且应用层可以读取对注册表操作的行为和结果以及对注册表实行操作进程的信息。
用户若要筛选注册表调用,内核模式注册表筛选驱动程序必须先调用CmRegisterCallback或CmRegisterCallbackEx来注册RegistryCallback例程。
本系统的注册表监视模块在Register.sys驱动中实现,驱动中通过CmRegisterCallback函数注册了一个注册表回调,用一个内核链表结构实现注册表操作信息的保存。
函数的第一个参数为回调函数。第二个参数是用户自定义的一个数据结构体。第三个参数为一个返回参数,当成功注册后,Cookie会保存注册的信息,在移除注册表回调时需要提供这个Cookie。
注册表回调函数有三个参数,第一个参数为注册注册表回调时候的第二个参数,用户输入的信息。第二个参数表明了注册表操作的类型,是一个枚举定义。强转这个参数时先要将其转换为整形或者其他无符号整形,再转换为REG_NOTIFY_CLASS枚举类型,编译器才不会报错。
作为一种实施方式,系统还包括反调试模块,所述反调试模块采用Windows内核挂钩技术来抵御动态反调试,通过Hook.sys驱动实现对NtOpenProcess的Inline Hook,从来限制调试器附加到进程,无法调试本进程。
原本系统采用Windows内核挂钩技术,对内核中NtOpenProcess函数头挂钩,实现对进程的保护,实现保护后,其他进程无法调试、无法打开关闭、包括任务管理器也无法终止本系统用户层的进程。
通过IDA Pro 7.5x64反汇编ntoskrnl.exe得到NtOpenProcess函数的返汇编代码。函数反汇编代码使用了rax,为了不破坏寄存器的值,保证堆栈平衡。我选择使用堆栈进行跳转,实现跳转时,写入NtOpenProcess函数头部,修改NtOpenProcess代码执行流程,先使其跳转至我们定义的函数处,再跳转至一个跳板区域,该区域写有NtOpenProcess被覆盖的代码,最后跳转回原函数被覆盖地址的下一条指令处。
再修改NtOpenProcess函数头时候,为了防止在修改时函数正在执行。这样会导致系统出现BSOD(蓝屏)。而且Windows默认会开启写保护,这些代码区域都是只可读可执行,不可写的区域,如果直接不做任何处理直接修改,会触发Windows的页保护机制,也会触发蓝屏,所以我们在修改函数头部时,需要先提高中断级至DPL,再关闭写保护,再关中断(防止外部中断打断修改函数头部)。提升中断级使用函数KeRaiseIrqlToDpcLevel,关中断使用函数_disable(),关闭写保护在查找Intel手册可知,写保护为为Cr0寄存器的16号位。
修改之后系统每次在调用NtOpenProcess函数打开进程时候,就会先进入我们的代码,我们的代码实现了对进程ID的判断,若为本系统用户层的进程,则直接返回失败,通过这样Hook实现了对本系统用户层进程的保护。
其中dwProcessid为用户层进程id,在用户层进程启动时候,会调用DeviceIoControl函数向本驱动发送一条功能号为HOOK_SEND_PROCESS_ID的消息,在驱动进入这个消息后,直接调用PsGetCurrentProcessId()函数获取用户层进程ID(注:在驱动中DriverEntry函数所属进程为系统进程,派遣函数所属进程为下发派遣函数所处理IRP的进程)。
作为一种实施方式,写请求预处理函数还包括:
在对文件加密之前,分配新的缓冲区,拷贝数据到新的缓冲区,生成上下文,分配新的缓冲区;
所述写请求后处理函数还包括:
释放上下文,释放分配的缓冲区,恢复原来的缓冲区。
在本系统中用户层和内核层的通信均采用METHOD_BUFFERED(缓冲区读写)。
在这种方式下,首先系统会将Ring3下指定的输入缓冲区(UserInputBuffer)数据,按指定的输入长度(InputBufferLength)复制到Ring0事先分配好的缓冲内存(SystemBuffer,通过pIrp→AssociatedIrp.SystemBuffer得到)中。驱动程序就可以将SystemBuffer是视为输入数据进行读取,当然也可以将SystemBuffer是为输入数据的缓冲区,也就是说SystemBuffer既可以读也可以写。驱动程序处理完后,系统会按照pIrp→IoStatus.Information指定的字节数,将SystemBuffer上的数据赋值到Ring3指定的输入缓冲区(UserOutputBuffer)中。可见这个过程是比较安全的,避免了驱动程序在内核态直接操作用户内存地址的问题。
在写IRP的处理中,驱动主要的工作为:驱动将对满足加密策略的文件进行加密处理然后再写入存储设备,同时会更新加密文件列表中的加密标记。
当有写文件请求发生时,都会调用IRP_MJ_WRITE的预操作回调函数。IRP_MJ_WRITE的预/后操作回调函数在FltRegisterFilter调用是定义注册的,用来过滤I/O请求中主功能号为IRP_MJ_WRITE的请求。其中最重要的步骤就是是否刷新缓存。在写请求中,系统进行写操作,分配了空间,在其中填入数据,再将数据写入磁盘中,这些数据可能会被使用,系统并没有想到在写入磁盘的过程中这些数据会被修改,所以系统可能重用这块空间,这样可能会造成重复加密的现象。因此在处理写请求是,需要自己分配一个缓冲区,将这些缓冲区暂时指派给IRP,同时保存旧IRP的缓冲区,再到请求完成后,恢复IRP原来的缓冲区即可。
作为一种实施方式,系统采用对称加密算法对文件进行加密,其加密密钥和解密密钥是完全相同的,其安全性依赖于两个因素。第一,加密算法足够强,仅基于密文本身去解密信息在实际中是不可能的,可以抵抗现有的各种密码分析方法的攻击。第二,加密的安全性依赖于密钥的秘密性,而非算法的保密性。本系统采用的加密算法未RC4流密码。
RC4生成的一种称为密钥流的伪随机流,他与明文通过异或操作。这样的加密过程较之分组密码来说实在是简单太多,加密速度快,而这样也不会在解密密文的时候占用很多的资源,在内核中的资源是十分宝贵的,如果是用其他更复杂更安全的加密算法,可以让系统加密更加安全,但如果CPU的算力跟不上,会造成电脑非常卡顿。所以本系统的加密算法采用了加密速度快的RC4算法。
本说明书实施例还提供一种面向Windows系统的文件保护方法,包括以下步骤:
A.在初始化和动态加载文件微过滤驱动完成后,监控文件操作,拦截读写请求;
B.将应用程序下发的写请求经I/O管理器后下发至过滤管理器;
C.执行预处理回调函数;
D.判断当前文件是否为加密文件,若否,将写请求下发至下层磁盘驱动;
E.若是,判断当前进程是否为机密进程,若否,将写请求下发至下层磁盘驱动;
F.若是,生成上下文信息,加密文件数据,将写请求下发至下层磁盘驱动;
G.接收下层磁盘驱动上方的读请求结果,执行后处理回调函数,清理缓存数据;
H.释放上下文信息;
I.将读请求结果经I/O管理器后上发至应用程序;
J.将应用程序下方的读请求经I/O管理器后下发至过滤管理器;
K.执行预处理回调函数;
L.判断文件是否符合解密条件,若不符合,则下发读请求至下层磁盘驱动,并接收下层磁盘驱动返回的读请求结果和文件数据;
M.将读请求结果和文件数据经I/O管理器后返回至应用程序;
N.若文件符合解密条件,则在步骤L后,继续执行:
O.判断读请求返回结果是否成功,若否,直接执行M;
P.若是,判断读取数据的长度是否为非0,若否,直接执行M;
Q.若是,获取缓冲区,判断当前进程是否为机密进程,若否,直接执行M;
R.若是,解密文件数据,执行M。
作为一种实施方式,在步骤D前,所述方法还包括:
新分配缓冲区用于防止重复加密现象;
在步骤F前,本方法还包括:
判断是否获取缓冲区MDL,若否,直接将写请求下发至下层磁盘驱动;
若是,则分配新缓冲区,拷贝数据到新缓冲区,并在加密文件数据前分配新缓冲区;
在步骤H后,所述方法还包括:
释放分配的缓冲区;
恢复原来的缓冲区。
透明加密技术是针对企业文件保密需求应运而生的一种文件加密技术。和其他加密技术最重要的区别在于“透明”,即加密过程对于用户来说是未知的、不可见的。系统可以在不改变用户原有工作流程和使用习惯的前提下,对需要保护的文件进行强制加密保护。当使用这用机密程序打开文件时,系统将会对文件进行解密,而对于已加密的文件会自动解密。文件在磁盘上是以密文的形式存储,而机密程序看到的文件内容一定是明文,非机密程序看到的内容一定是密文。
基于本系统的文件系统透明加密具有以下特点:
(1)强制加密。安装系统后,指定范围内(指定的某些进程,或者是某些文件类型)的文件都是强制加密的。
(2)使用方便。不会改变用户原有的使用习惯。
(3)对内加密。企业内部或者公司内部(只要安装了本系统后),不需要任何处理后便能实现交流。
(4)对外加密。一但文件离开使用的环境(被未安装本系统的用户接受),文件将会自动失效,从而有效的防止信息泄露。
透明加密技术是一种与文件系统密切结合的一种技术,工作于操作系统的底层。通过监控应用程序对文件的操作,在读写文件时进行相应的加解密操作,从而达到有效保护文件的目的。Windows操作系统中应用层对文件的读写最终会将会在内核层中实现对文件的读写,所以直接在内核层中实现加密就能实现目标系统中所有所有文件读写进行加密。
本系统创新点
(1)相比较传统以API Hook的方式实现透明加密,本文所描述的系统以基于文件微过滤驱动的透明加密驱动的方式实现,安全性更高。
(2)传统的透明加密实现,从读取文件到加密步骤经历的步骤较多,出问题的可能性更高。穿透透明加密64位系统更不容易实现Hook,Windows系统为了防止内核被恶意软件篡改,加入了PatchGuard,这使得传统的实现难上加难。本文所描述基于文件微过滤驱动的透明加密驱动,则不会面临这样的问题。
(3)本文所描述系统相比较使用传统型的文件过滤驱动sfilter,本文所描述系统的兼容性更好,穿透型文件过滤驱动会因为不同文件系统不同版本操作系统的改变而需要发生改变。本文所描述的系统基于过滤管理器,主要过滤管理器所提供的接口不改变,本文所描述系统依旧兼容。
所属领域的普通技术人员应当理解:以上任何实施例的讨论仅为示例性的,并非旨在暗示本发明的范围(包括权利要求)被限于这些例子;在本发明的思路下,以上实施例或者不同实施例中的技术特征之间也可以进行组合,步骤可以以任意顺序实现,并存在如上所述的本发明的不同方面的许多其它变化,为了简明它们没有在细节中提供。
本发明旨在涵盖落入所附权利要求的宽泛范围之内的所有这样的替换、修改和变型。因此,凡在本发明的精神和原则之内,所做的任何省略、修改、等同替换、改进等,均应包含在本发明的保护范围之内。
Claims (9)
1.一种面向Windows系统的文件保护系统,其特征在于,包括文件微过滤驱动和应用管理程序,文件微过滤驱动位于内核层,应用管理程序位于应用层,应用管理程序通过Win32Api DeviceIoControl和文件微过滤驱动通信;
所述文件微过滤驱动包括过滤管理器和I/O管理器,所述I/O管理器用于在应用管理程序和过滤管理器之间下发和返回读写请求;
所述过滤管理器用于在接收到读请求时,调用第一预处理回调函数,对是否满足解密条件进行验证,若满足,则调用第一后处理回调函数,对文件进行解密,并上发读请求至应用管理程序;
所述过滤管理器还用于在接收到写请求时,调用第二预处理回调函数,对是否满足加密条件进行验证,若满足,则对文件加密,并下发写请求,文件加密后调用第二后处理回调函数,对缓存进行刷新。
2.根据权利要求1所述的面向Windows系统的文件保护系统,其特征在于,所述文件微过滤驱动还包括身份认证模块和条件判断模块,所述身份认证模块用于在第一预处理回调函数或第二预处理回调函数执行时,对登录系统的用户身份进行验证,若用户身份验证成功,则允许文件微过滤驱动对文件实施加解密操作,若验证失败,则文件微过滤驱动拒绝对加密文件进行解密操作;
所述条件判断模块用于在第一预处理回调函数或第二预处理回调函数执行时,判断打开文件的进程是否为机密进程,若为机密进程,判断机密进程打开的文件是否具有加密标识,若具有,则允许文件微过滤驱动对文件实施加解密操作。
3.根据权利要求1所述的面向Windows系统的文件保护系统,其特征在于,所述系统还包括分级权限管理模块,所述分级权限管理模块用于对不同组别的文件采用不同的加密策略,还用于分配管理员角色和员工角色,并为管理员角色赋予授权给员工进行权限分配的权限。
4.根据权利要求1所述的面向Windows系统的文件保护系统,其特征在于,所述系统还包括注册表监控模块,所述注册表监控模块在Register.sys驱动中实现,通过CmRegisterCallback函数注册一个注册表回调,用一个内核链表结构实现注册表操作信息的保存,函数的第一个参数为回调函数,第二个参数是用户自定义的一个数据结构体,第三个参数为一个返回参数,当成功注册后,Cookie会保存注册的信息,在移除注册表回调时需要提供这个Cookie。
5.根据权利要求1所述的面向Windows系统的文件保护系统,其特征在于,所述系统还包括反调试模块,所述反调试模块采用Windows内核挂钩技术来抵御动态反调试,通过Hook.sys驱动实现对NtOpenProcess的Inline Hook,从来限制调试器附加到进程,无法调试本进程。
6.根据权利要求1所述的面向Windows系统的文件保护系统,其特征在于,
所述第二预处理回调函数还包括:
在对文件加密之前,分配新的缓冲区,拷贝数据到新的缓冲区,生成上下文,分配新的缓冲区;
所述第二后处理回调函数还包括:
释放上下文,释放分配的缓冲区,恢复原来的缓冲区。
7.根据权利要求1所述的面向Windows系统的文件保护系统,其特征在于,所述系统采用对称加密算法对文件进行加密。
8.一种面向Windows系统的文件保护方法,其特征在于,包括:
A.在初始化和动态加载文件微过滤驱动完成后,监控文件操作,拦截读写请求;
B.将应用程序下发的写请求经I/O管理器后下发至过滤管理器;
C.执行预处理回调函数;
D.判断当前文件是否为加密文件,若否,将写请求下发至下层磁盘驱动;
E.若是,判断当前进程是否为机密进程,若否,将写请求下发至下层磁盘驱动;
F.若是,生成上下文信息,加密文件数据,将写请求下发至下层磁盘驱动;
G.接收下层磁盘驱动上方的读请求结果,执行后处理回调函数,清理缓存数据;
H.释放上下文信息;
I.将读请求结果经I/O管理器后上发至应用程序;
J.将应用程序下方的读请求经I/O管理器后下发至过滤管理器;
K.执行预处理回调函数;
L.判断文件是否符合解密条件,若不符合,则下发读请求至下层磁盘驱动,并接收下层磁盘驱动返回的读请求结果和文件数据;
M.将读请求结果和文件数据经I/O管理器后返回至应用程序;
N.若文件符合解密条件,则在步骤L后,继续执行:
O.判断读请求返回结果是否成功,若否,直接执行M;
P.若是,判断读取数据的长度是否为非0,若否,直接执行M;
Q.若是,获取缓冲区,判断当前进程是否为机密进程,若否,直接执行M;
R.若是,解密文件数据,执行M。
9.根据权利要求8所述的面向Windows系统的文件保护方法,其特征在于,在步骤D前,所述方法还包括:
新分配缓冲区用于防止重复加密现象;
在步骤F前,所述方法还包括:
判断是否获取缓冲区MDL,若否,直接将写请求下发至下层磁盘驱动;
若是,则分配新缓冲区,拷贝数据到新缓冲区,并在加密文件数据前分配新缓冲区;
在步骤H后,所述方法还包括:
释放分配的缓冲区;
恢复原来的缓冲区。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202210871523.8A CN115329351A (zh) | 2022-07-22 | 2022-07-22 | 一种面向Windows系统的文件保护系统及方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202210871523.8A CN115329351A (zh) | 2022-07-22 | 2022-07-22 | 一种面向Windows系统的文件保护系统及方法 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN115329351A true CN115329351A (zh) | 2022-11-11 |
Family
ID=83920461
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202210871523.8A Pending CN115329351A (zh) | 2022-07-22 | 2022-07-22 | 一种面向Windows系统的文件保护系统及方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN115329351A (zh) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN116070295A (zh) * | 2023-02-27 | 2023-05-05 | 赛芯半导体技术(北京)有限公司 | 数据处理系统 |
CN116975002A (zh) * | 2023-09-22 | 2023-10-31 | 麒麟软件有限公司 | 一种在国产Linux操作系统下保护打开文件的方法 |
-
2022
- 2022-07-22 CN CN202210871523.8A patent/CN115329351A/zh active Pending
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN116070295A (zh) * | 2023-02-27 | 2023-05-05 | 赛芯半导体技术(北京)有限公司 | 数据处理系统 |
CN116975002A (zh) * | 2023-09-22 | 2023-10-31 | 麒麟软件有限公司 | 一种在国产Linux操作系统下保护打开文件的方法 |
CN116975002B (zh) * | 2023-09-22 | 2023-12-26 | 麒麟软件有限公司 | 一种在国产Linux操作系统下保护打开文件的方法 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN109923548B (zh) | 通过监管进程访问加密数据实现数据保护的方法、系统及计算机程序产品 | |
JP4089171B2 (ja) | 計算機システム | |
US8745386B2 (en) | Single-use authentication methods for accessing encrypted data | |
JP4689946B2 (ja) | 安全なデータを使用して情報処理を実行するシステム | |
US6836888B1 (en) | System for reverse sandboxing | |
JP4689945B2 (ja) | リソースアクセス方法 | |
US7725737B2 (en) | System and methodology providing secure workspace environment | |
US7487366B2 (en) | Data protection program and data protection method | |
US20070180257A1 (en) | Application-based access control system and method using virtual disk | |
US20150227748A1 (en) | Method and System for Securing Data | |
US20050154885A1 (en) | Electronic data security system and method | |
CN115329351A (zh) | 一种面向Windows系统的文件保护系统及方法 | |
CN104680079A (zh) | 一种电子文档安全管理系统及方法 | |
GB2411988A (en) | Preventing programs from accessing communication channels withut user permission | |
CN104077244A (zh) | 基于进程隔离加密机制的安全保密盘模型及其生成方法 | |
KR101414580B1 (ko) | 다중 등급 기반 보안 리눅스 운영 시스템 | |
Onarlioglu et al. | Privexec: Private execution as an operating system service | |
US20120047074A1 (en) | Methods of protecting software programs from unauthorized use | |
CN113468576A (zh) | 一种基于角色的数据安全访问方法及装置 | |
US20070263868A1 (en) | Method and apparatus for securely executing a background process | |
JP2002304231A (ja) | コンピュータシステム | |
TWI783189B (zh) | 位元鎖磁碟管理系統 | |
Xiao et al. | Analysis on sandbox technology of adobe reader X | |
CN117034330B (zh) | 基于macOS的安全防护方法、设备及存储介质 | |
Skoularidou et al. | Security architectures for network clients |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination |