基于过滤驱动的文件访问控制方法、系统及过滤器管理器的制作方法

文档序号:6606871阅读:190来源:国知局
专利名称:基于过滤驱动的文件访问控制方法、系统及过滤器管理器的制作方法
技术领域
本发明涉及计算机技术领域,具体涉及一种基于过滤驱动的文件访问控制方法、 系统及过滤器管理器。
背景技术
随着计算机应用的普及,计算机内存储的数据也越来越重要。从政府、企业的机密 文件,到家庭用户的个人隐私,无不存在着丢失和泄露的风险,而且经常会出现多人共用同 一台计算机的情况,就更增加了信息的不安全性。Windows系统是目前使用最广泛的计算机操作系统,但其本身对于数据的保护和 权限的划分并不够完善,用户一旦登录进入系统后,通常可对计算机内的任意文件进行访 问,十分不安全。虽然Windows本身提供了 NTFS文件格式,可以设置用户访问权限,但是此 种方法操作复杂,而且一旦系统出现问题无法成功登陆,即使文件本身没有损坏,也有可能 导致文件因被锁定而无法读取和恢复,造成重大损失。目前市场上存在的文件访问控制软件,大多是通过HookAPI实现,这种方法的优 点是实现简单,缺点是没有与操作系统紧密结合,不能过滤所有文件操作,容易被破解,也 容易与其他程序发生冲突,另外对系统的效率也有一定影响。

发明内容
本发明要解决的技术问题是提供一种基于过滤驱动的文件访问控制方法、系统及 过滤器管理器,能够在不需要重新设计文件系统和底层驱动的前提下,在Windows系统中 通过文件过滤驱动实现对文件访问的拦截和监控,在系统底层保证了文件数据的安全性。本发明提供的技术方案如下本发明提供一种基于过滤驱动的文件访问控制方法,包括在访问控制系统中加入过滤器管理器;所述过滤器管理器的创建及加载模块进行过滤驱动的创建和加载;所述过滤器管理器的注册模块注册需过滤的操作;
所述过滤器管理器的识别模块对目标文件进行识别;所述过滤器管理器的通信模块进行过滤驱动与应用程序的通信;所述过滤器管理器的过滤模块对文件操作进行过滤。所述进行过滤驱动的创建和加载包括在入口函数DriverEntryO中通过调用 FltRegisterFilterO函数对过滤器进行注册,注册成功后,调用FltStartFilteringO函 数让过滤器开始工作,将过滤驱动加载到文件系统。所述注册需过滤的操作包括在FLT_REGISTRATION结构中,利用FLT_0PERATI0N_ REGISTRATION的结构定义,设定需要过滤的IRP请求,其中需要注册预操作函数和后操作 函数。所述对目标文件进行识别包括通过对IRP请求中附带的信息进行分析,提取出被操作文件的文件名,并与注册的特定文件进行比较,当匹配时,执行过滤操作,实现针对 特定文件的访问控制功能。所述进行过滤驱动与应用程序的通信包括由过滤驱动将每一个被操作文件的信 息发送给应用程序,由应用程序判断该文件是否需要过滤,然后返回结果给驱动程序。所述对文件操作进行过滤包括通过在FLT_0PERATI0N_REGISTRATI0N结构中注 册多个函数,分别处理不同的IRP请求,然后根据获取得到的当前不同IRP请求,执行不同 的操作。本发明提供一种过滤器管理器,包括创建及加载模块,用于进行过滤驱动的创建和加载;注册模块,用于注册需过滤的操作;识别模块,用于对目标文件进行识别;通信模块,用于进行过滤驱动与应用程序的通信;过滤模块,用于对文件操作进行过滤。所述通信模块中,由过滤驱动将每一个被操作文件的信息发送给应用程序,由应 用程序判断该文件是否需要过滤,然后返回结果给驱动程序。本发明提供一种基于过滤驱动的文件访问控制系统所述系统含有过滤器管理器,所述过滤器管理器包括创建及加载模块,用于进行过滤驱动的创建和加载;注册模块,用于注册需过滤的操作;识别模块,用于对目标文件进行识别;通信模块,用于进行过滤驱动与应用程序的通信;过滤模块,用于对文件操作进行过滤。所述通信模块中,由过滤驱动将每一个被操作文件的信息发送给应用程序,由应 用程序判断该文件是否需要过滤,然后返回结果给驱动程序。上述技术方案可以看出本发明在不需要重新设计文件系统和底层驱动的前提下,通过编写文件过滤驱动 的方式实现文件访问控制的功能,在Windows系统中通过文件过滤驱动实现了对文件访问 的拦截和监控,在系统底层保证了文件数据的安全性,从而达到保护重要数据的目的,因此 更安全和稳定,并且兼容性强。


为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现 有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本 发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以 根据这些附图获得其它的附图。图1是本发明的访问控制系统架构示意图;图2是本发明系统中的过滤器管理器的基本结构示意图;图3是本发明过滤器管理器处理流程示意图;图4是本发明方法的概括流程示意图。
具体实施例方式下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完 整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于 本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其它 实施例,都属于本发明保护的范围。本发明实施例提供一种基于过滤驱动的文件访问控制方法,能够在不需要重新设 计文件系统和底层驱动的前提下,在Windows系统中通过文件过滤驱动实现对文件访问的 拦截和监控,在系统底层保证了文件数据的安全性。以下进行详细说明。图1是本发明的访问控制系统架构示意图;如图1所示,本发明是在原有的Windows访问控制系统中加入了一个过滤器管理 器,由过滤器管理器直接管理各种文件过滤驱动。图2是本发明系统中的过滤器管理器的基本结构示意图。过滤器管理器包括以下部分创建及加载模块,用于进行过滤驱动的创建和加载; 注册模块,用于注册需过滤的操作;识别模块,用于进行目标文件的识别;通信模块,用于 进行过滤驱动与应用程序的通信;过滤模块,用于对文件操作进行过滤。图3是本发明过滤器管理器处理流程示意图,如图3所示,过滤器管理器的处理流 程如下1、过滤驱动的创建和加载。创建及加载模块在入口函数DriverEntryO中通过调用FltRegisterFilter () 函数对过滤器进行注册,注册成功后,调用FltStartFilteringO函数让过滤器开始 工作,其中过滤器管理器将过滤驱动加载到文件系统。当需要停止过滤时,可以利用 FltUnregisterFilter()卸载过滤器。其中 FltRegisterFilterO 函数,结构如下NTSTATUSFltRegisterFilter (IN PDRIVER_OBJECT Driver,IN C0NSTFLT_REGISTRATION ^Registration,OUT PFLT_FILTER ^RetFilter);其中PDRIVER_0BJECT为驱动对象,PFLT_FILTER为注册成功后指向过滤器的指 针。FltRegisterFilterrO需要传入一个FLT_REGISTRATI0N结构的参数,该结构包含一 组上下文回调指针,一组文件系统操作回调指针等。2、注册需过滤的操作。注册模块在FLT_REGISTRATI0N 结构中,利用 FLT_0PERATI0N_REGISTRATI0N 的 结构定义,设定具体需要过滤的IRP请求,其中需要注册两种派遣函数,一种是预操作 (pre-operation),在操作之前被调用,另一种是后操作(post-operation),在操作执行之 后被调用。
6
例如结构FLT_0PERATI0N_REGISTRATI0N callbacks[] = {{IRP_MJ_READ,0,PreRead,NULL},...... };定义了 IRP_MJ_READ这个IRP请求的预操作派遣函数为PreRead(),后操作为空, 则如果在PreReadO中直接结束这个IRP请求并返回错误,则可以使文件读取失败,实现限 制文件访问的功能。其中常见的IRP请求有IRP_MJ_CREATE (文件的创建和打开)、IRP_MJ_READ (数据 读取)、IRP_MJ_WRITE (数据写入)、IRP_MJ_QUERY_INF0RMATI0N(获取文件信息)、IRP_MJ_ SET_INF0RMATI0N(改变文件信息)等。同时,如果过滤驱动需要实现对读、写等多种操作的拦截和过滤,则需要注册多个 IRP请求的派遣函数。既可以编写不同的函数处理不同的操作,也可以将一个函数注册到多 个IRP请求,统一进行处理。3、对目标文件进行识别。识别模块通过对IRP请求中附带的信息进行分析,提取出被操作文件的文件名, 并与注册的特定文件进行比较,当匹配时,执行过滤操作,实现针对特定文件的访问控制功 能。通常调用一个预处理函数如下FLT_PREOP_CALLBACK_STATUSPtPreOperation(—inout PFLT_CALLBACK_DATA Data,—in PCFLT_RELATED_OBJECTS FltObjects,_deref_out_opt PVOID*CompletionContext)其中Data包含IRP请求中附带的各种信息,如IRP请求的类型,IRP操作的对象 等,这样可以从Data中获取被操作文件的文件名。PFLT_FILE_NAME_INFORMATION NameInfo = NULL ;FltGetFileNameInformation (Data, FLT_FILE_NAME_NORMALIZED|FLT_FILE_ NAME_QUERY_DEFAULT, &NameInfo);FltParseFileNameInformation(NameInfo);通过 FltGetFileNameInformationO 禾口 FltParseFileNameInformation ()两个函 数的调用,从Data中提取并分析被操作文件的文件名,其中NameInfo- > FinalComponent 是文件名,如"abc. txt”,而NameInfo- > Name则是完整的路径名,形如"\Device\ HarddiskVoIume1\Documents and Settings\MyUser\MyDocuments\abc. txt:stream 1,,。
以上均数据以UniCOde_String的类型保存,可根据需要使用,例如利用 RtlCompareUnicodeString函数进行比较操作,跟特定文件进行比较,当匹配时,执行过滤 操作,实现针对特定文件的访问控制功能。4、过滤驱动与应用程序进行通信。通信模块中,由过滤驱动将每一个被操作文件的信息发送给应用程序,由应用程 序判断该文件是否需要过滤,然后返回结果给驱动程序。最后由驱动程序完成过滤操作。
本发明中,查找待过滤文件的工作在用户模式应用程序中实现。这种方 式比在驱动程序中实现更为灵活,但需要实现过滤驱动与应用程序的通信。利用 FltCreateCommunicationPort ()函数创建一个端 口用于通信。FltCreateCommunicationPort (IN PFLT_FILTER Filter,OUT PFLT_P0RT ^ServerPort,IN P0BJECT_ATTRIBUTES ObjectAttributes,IN PVOID ServerPortCookie OPTIONAL,IN PFLT_C0NNECT_N0TIFY ConnectNotifyCallback,IN PFLT_DISC0NNECT_N0TIFY DisconnectNotifyCallback,IN PFLT_MESSAGE_N0TIFY MessageNotifyCallback,IN LONG MaxConnections);参数中有两个需要自己定义的函数ConnectNotifyCallbackO和 DisconnectNotifyCallbackO,用于建立连接和断开连接时的操作。ObjectAttributes定 义了 OBJECT_ATTRIBUTE结构,记录了端口对象的名称等信息。如果创建成功,即建立了 ServerPort端口,此端口用于接受应用程序的连接。然后可以利用FltSendMessage ()函数 发送信息给应用程序。FltSendMessage(IN PFLT_FILTER Filter,IN PFLT_P0RT *ClientPort,IN PVOID SenderBuffer,IN ULONG SenderBufferLength,IN PVOID R印IyBuffer OPTIONAL,OUT PULONG ReplyLength OPTIONALIN PLARGE_INTEGER Timeout OPTIONAL);其中SenderBuffer是发送给应用程序的信息,而R印IyBuffer则是从应用程序返 回的信息。ClientPort是应用程序的端口,而ServerPort则是驱动程序的端口。最后,当 通信结束时,利用FltCloseCommunicationPortO关闭通信端口。另外在应用程序中,首先利用FilterConnectCommunicationPortO通过通信端 口连接过滤驱动,成功后即可利用FilterGetMessage ()获取过滤驱动发来的信息,利用 FilterReplyMessage 0返回信息给过滤驱动。在程序开发中,可以使用多线程技术,单独一 个线程用于接收和处理来自驱动程序的消息。通过以上的方法实现查询目标文件后,再由过滤驱动将每一个被操作文件的信息 发送给应用程序,由应用程序判断该文件是否需要过滤,然后返回结果给驱动程序。最后由 驱动程序完成过滤操作。具体流程如图4所示。5、对文件操作进行过滤。在FLT_0PERATI0N_REGISTRATI0N结构中注册多个函数,分别处理不同的IRP请求,然后通过Data- > Iopb- > MajorFunction获取当前的IRP请求,进而执行不同的操作, 如If (Data- > Iopb- > MajorFunction == IRP_MJ_WRITE) {Data- > IoStatus. Status = STATUS_MEDIA_WRITE_PROTECTED ;//设状态为媒体写保护return FLT_PREOP_COMPLETE ;}以上即判断当出现IRP_MJ_WRITE请求时,返回“媒体写保护”的错误提示。如果 对IRP请求不需要做处理,则可以直接returnFLT_PREOP_SUCCESS_WITH_CALLBACK,返回操 作成功,由系统转发给下一层驱动进行处理。另外对于文件的读控制均可通过过滤IRP_MJ_READ请求来实现,但是对于文件的 写控制有时并不能简单过滤IRP_MJ_WRITE请求就能实现的。因为某些文件在进行写操作 时是通过临时文件进行的,如Word文件,在进行写操作的时候首先将输入写进创建的临时 文件里面,然后将源文件用新的同名文件来覆盖,这种情况通过写例程虽然可以实现监视, 但是由于产生的临时文件文件名是随机的,如果想利用控制临时文件来实现对该类文件的 控制则难度很大,甚至是不可行的,因此无法通过写例程对此类文件进行写控制。为此,本发明提出如下解决方案先将文件的属性设为只读,同时过滤IRP_MJ_ SET_INFORMATION请求,使文件的属性无法被修改,这样既可完整的控制对文件的写请求。 此方法对通过临时文件进行写操作的访问也可控制。同时对于重要文件,一般还要进行如 下处理禁止删除,禁止对关键文件进行重命名。因为监控一般根据文件名进行识别,一旦 改名,原有的文件就有可能不再属于被监控文件的范畴,而不能再对其进行监控,导致关键 文件被修改或破坏。具体限制的方法同样是过滤IRP_MJ_SET_INFORMATION请求。上述技术方案可以看出该方法在不需要重新设计文件系统和底层驱动的前提下,通过编写文件过滤驱动 的方式实现文件访问控制的功能,在Windows系统中通过文件过滤驱动实现了对文件访问 的拦截和监控,在系统底层保证了文件数据的安全性,从而达到保护重要数据的目的,因此 更安全和稳定,并且兼容性强。以上对本发明实施例所提供的一种基于过滤驱动的文件访问控制方法、系统及过 滤器管理器,进行了详细介绍,本文中应用了具体个例对本发明的原理及实施方式进行了 阐述,以上实施例的说明只是用于帮助理解本发明的方法及其核心思想;同时,对于本领域 的一般技术人员,依据本发明的思想,在具体实施方式
及应用范围上均会有改变之处,综上 所述,本说明书内容不应理解为对本发明的限制。
9
权利要求
一种基于过滤驱动的文件访问控制方法,其特征在于,包括在访问控制系统中加入过滤器管理器;所述过滤器管理器的创建及加载模块进行过滤驱动的创建和加载;所述过滤器管理器的注册模块注册需过滤的操作;所述过滤器管理器的识别模块对目标文件进行识别;所述过滤器管理器的通信模块进行过滤驱动与应用程序的通信;所述过滤器管理器的过滤模块对文件操作进行过滤。
2.根据权利要求1所述的基于过滤驱动的文件访问控制方法,其特征在于所述进行过滤驱动的创建和加载包括在入口函数DriverEntryO中通过调用 FltRegisterFilterO函数对过滤器进行注册,注册成功后,调用FltStartFilteringO函 数让过滤器开始工作,将过滤驱动加载到文件系统。
3.根据权利要求1或2所述的基于过滤驱动的文件访问控制方法,其特征在于 所述注册需过滤的操作包括在FLT_REGISTRATION结构中,利用FLT_0PERATI0N_REGISTRATION的结构定义,设定需要过滤的IRP请求,其中包括注册预操作函数和后操作 函数。
4.根据权利要求1或2所述的基于过滤驱动的文件访问控制方法,其特征在于所述对目标文件进行识别包括通过对IRP请求中附带的信息进行分析,提取出被操 作文件的文件名,并与注册的特定文件进行比较,当匹配时,执行过滤操作,实现针对特定 文件的访问控制功能。
5.根据权利要求1或2所述的基于过滤驱动的文件访问控制方法,其特征在于 所述进行过滤驱动与应用程序的通信包括由过滤驱动将每一个被操作文件的信息发送给应用程序,由应用程序判断该文件是否需要过滤,然后返回结果给驱动程序。
6.根据权利要求1或2所述的基于过滤驱动的文件访问控制方法,其特征在于所述对文件操作进行过滤包括通过在FLT_0PERATI0N_REGISTRATI0N结构中注册多 个函数,分别处理不同的IRP请求,然后根据获取得到的当前不同IRP请求,执行不同的操 作。
7.—种过滤器管理器,其特征在于,包括创建及加载模块,用于进行过滤驱动的创建和加载; 注册模块,用于注册需过滤的操作; 识别模块,用于对目标文件进行识别; 通信模块,用于进行过滤驱动与应用程序的通信; 过滤模块,用于对文件操作进行过滤。
8.根据权利要求7所述的过滤器管理器,其特征在于所述通信模块中,由过滤驱动将每一个被操作文件的信息发送给应用程序,由应用程 序判断该文件是否需要过滤,然后返回结果给驱动程序。
9.一种基于过滤驱动的文件访问控制系统,其特征在于 所述系统含有过滤器管理器,所述过滤器管理器包括 创建及加载模块,用于进行过滤驱动的创建和加载; 注册模块,用于注册需过滤的操作;识别模块,用于对目标文件进行识别; 通信模块,用于进行过滤驱动与应用程序的通信; 过滤模块,用于对文件操作进行过滤。
10.根据权利要求9所述的基于过滤驱动的文件访问控制系统,其特征在于 所述通信模块中,由过滤驱动将每一个被操作文件的信息发送给应用程序,由应用程 序判断该文件是否需要过滤,然后返回结果给驱动程序。
全文摘要
本发明公开了一种基于过滤驱动的文件访问控制方法、系统及过滤器管理器。该方法包括在访问控制系统中加入过滤器管理器;过滤器管理器的创建及加载模块进行过滤驱动的创建和加载;过滤器管理器的注册模块注册需过滤的操作;过滤器管理器的识别模块对目标文件进行识别;过滤器管理器的通信模块进行过滤驱动与应用程序的通信;所述过滤器管理器的过滤模块对文件操作进行过滤。本发明方法在不需要重新设计文件系统和底层驱动的前提下,在Windows系统中通过文件过滤驱动实现了对文件访问的拦截和监控,在系统底层保证了文件数据的安全性。
文档编号G06F9/44GK101916349SQ20101024153
公开日2010年12月15日 申请日期2010年7月30日 优先权日2010年7月30日
发明者李冠彬, 罗笑南 申请人:中山大学
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1