一种文件存储保护实现方法和系统的制作方法

文档序号:10489271阅读:164来源:国知局
一种文件存储保护实现方法和系统的制作方法
【专利摘要】本发明公开了一种文件存储保护实现方法和系统,其中,该方法包括:1)设定沙箱文件目录,并将该沙箱文件目录与系统敏感目录相映射;2)监视沙箱应用程序对文件存储目录的访问;3)当沙箱应用程序要将文件写入系统敏感目录时,获取沙箱文件目录与系统敏感目录之间的映射关系,并向沙箱应用程序返回沙箱文件目录的位置,以使得沙箱应用程序直接将文件直接写入该沙箱文件目录中。
【专利说明】
一种文件存储保护实现方法和系统
技术领域
[0001 ]本发明属于计算机领域,涉及一种文件存储保护实现方法和系统。
【背景技术】
[0002] 沙箱技术是近两年流行起来的新型数据防泄密(DLP)技术,沙箱的基本理念是隔 离:在宿主终端形成逻辑上的沙箱区和非沙箱区,沙箱区有一块独立的存储和一组进程环 境,在沙箱环境中产生的文件"只能保存在沙箱存储"一一如果确实有途径保存到非沙箱存 储,则使用文件重定向将文件写入定向到沙箱存储中来解决一一中,进而做到文件的隔离。
[0003] 但用户操作直接将文件保存到非沙箱存储中还是要尽量避免,目前较多的做法是 在打开另存为对话框时禁止用户选择桌面、我的文档,并禁止用户手动输入路径等手段解 决,在程序中不停地监听是否有文件另存为行为,流程如下:
[0004] 现有技术在一定程度上解决了用户直接将文件往原始桌面(或我的文档等非沙箱 存储)保存的问题,但解决并不彻底并付出了相当大的代价:
[0005] 1.轮询的检测消耗了 CPU,即使用户并无另存为等操作行为。
[0006] 2.并不是所有的另存为都可以截获,如CAD等软件,另存为窗口并不是WINDOWS提 供的标准窗口,则现有方案就无法直接解决,需要适配(并且适配也不一定能解决),有大量 的非标准另存为行为,现有方案适配量很大。
[0007] 3.从界面上直接干涉了用户的行为,影响了用户体验。

【发明内容】

[0008] 本发明所要解决的技术问题是提供一种文件存储保护实现方法和装置,用以克服 现有技术存在的以上问题。
[0009] 本发明解决上述技术问题所采取的技术方案如下:
[0010] 一种文件存储保护实现方法,包括:
[0011] 1)设定沙箱文件目录,并将该沙箱文件目录与系统敏感目录相映射;
[0012] 2)监视沙箱应用程序对文件存储目录的访问;
[0013] 3)当沙箱应用程序要将文件写入系统敏感目录时,获取沙箱文件目录与系统敏感 目录之间的映射关系,并向沙箱应用程序返回沙箱文件目录的位置,以使得沙箱应用程序 直接将文件直接写入该沙箱文件目录中。
[0014] 进一步地,优选的是,步骤1)中,基于操作系统的注册表过滤(Register Filter) 的方式将所述沙箱文件目录与所述系统敏感目录相映射,其中,所述系统敏感目录为操作 系统中的用户外壳目录(USF)。
[0015] 进一步地,优选的是,步骤3)中,具体包括:
[0016] 获取沙箱应用程序要将文件写入系统敏感目录的信息,在系统内核中对系统敏感 目录的访问位置值进行修改,并向沙箱应用程序返回修改后的沙箱文件目录访问位置值。
[0017] 进一步地,优选的是,步骤1),具体包括以下子步骤:
[0018] 11)获取当前系统采取的注册表过滤(Register Filter)方式;12)制订用户外壳 目录(USF)映射策略,指明原值与映射后新值的关联关系,以使得用户外壳目录和沙箱文件 目录相关联;
[0019] 其中,步骤2)中,将所有沙箱应用程序进程都HOOK到注册表中,并基于被动地监听 注册表读取的方式监视对文件存储目录的访问;
[0020] 步骤3)中,具体包括以下子步骤:
[0021] 判断是否应向沙箱应用程序返回修改值,其中,如果应该修改则根据子步骤12)制 订的策略返回修改值。
[0022] 进一步地,优选的是,步骤3)中,具体还包括:
[0023]根据沙箱应用程序是否访问系统敏感目录,将沙箱应用程序进程分为沙箱进程和 非沙箱进程,并直接放行非沙箱进程。
[0024] 优选的是,进一步还包括:步骤4)当沙箱应用程序要读取系统敏感目录中的文件 时;
[0025] 向沙箱应用程序返回沙箱文件目录的位置,以使得沙箱应用程序直接读取该沙箱 文件目录中的文件。
[0026] 进一步地,优选的是,基于沙箱应用程序是否存在另存为对话框、沙箱应用程序 对注册表访问的判断KeyValuelnformationClass值是否等于 KeyValuePartialInformation、数据类型是否是REG_SZ或REG_EXPAND_SZ,以判断当前沙箱 应用程序要将文件写入到系统敏感目录中。
[0027] 一种文件存储保护实现系统,包括:
[0028] 沙箱文件目录设定单元,用于设定沙箱文件目录,并将该沙箱文件目录与系统敏 感目录相映射;
[0029] 进程监视单元,用于监视沙箱应用程序对文件存储目录的访问;
[0030] 文件目录转向单元,用于当沙箱应用程序要将文件写入系统敏感目录时,获取沙 箱文件目录与系统敏感目录之间的映射关系,并向沙箱应用程序返回沙箱文件目录的位 置,以使得沙箱应用程序直接将文件直接写入该沙箱文件目录中。
[0031] 进一步地,优选的是,所述沙箱文件目录设定单元,进一步基于操作系统的注册表 过滤(Register Filter)的方式将所述沙箱文件目录与所述系统敏感目录相映射,其中,所 述系统敏感目录为操作系统中的用户外壳目录(USF)。
[0032] 本发明的其它特征和优点将在随后的说明书中阐述,并且,部分地从说明书中变 得显而易见,或者通过实施本发明而了解。本发明的目的和其他优点可通过在所写的说明 书、权利要求书、以及附图中所特别指出的结构来实现和获得。
【附图说明】
[0033] 下面结合附图对本发明进行详细的描述,以使得本发明的上述优点更加明确。其 中, 图1是本发明文件存储保护实现方法的流程示意图; 图2是本发明文件存储保护实现方法的实施例的流程示意图; 图3是本发明文件存储保护实现方法的实施例的流程示意图; 图4是本发明文件存储保护实现系统的结构示意图。
【具体实施方式】
[0034] 以下将结合附图及实施例来详细说明本发明的实施方式,借此对本发明如何应用 技术手段来解决技术问题,并达成技术效果的实现过程能充分理解并据以实施。需要说明 的是,只要不构成冲突,本发明中的各个实施例以及各实施例中的各个特征可以相互结合, 所形成的技术方案均在本发明的保护范围之内。
[0035] 其中,首先对本发明涉及的英文缩写进行解释如下:
[0036] USF:User Shell Folder,用户外壳目录,在打开、另存对话框中直接显示的非标 准路径目录,如"我的文档","桌面"这些目录。
[0037] Register Filter:注册表过滤,在内核层(RingO)过滤上层应用(Ring3)对注册表 的操作。
[0038] 实施例一:
[0039] 如图1和3所示,一种文件存储保护实现方法,包括:
[0040] 1)设定沙箱文件目录,并将该沙箱文件目录与系统敏感目录相映射;
[0041 ] 2)监视沙箱应用程序对文件存储目录的访问;
[0042] 3)当沙箱应用程序要将文件写入系统敏感目录时,获取沙箱文件目录与系统敏感 目录之间的映射关系,并向沙箱应用程序返回沙箱文件目录的位置,以使得沙箱应用程序 直接将文件直接写入该沙箱文件目录中。
[0043] 其中,在实施例中,基于操作系统的注册表过滤(Register Filter)的方式将所述 沙箱文件目录与所述系统敏感目录相映射,其中,所述系统敏感目录为操作系统中的用户 外壳目录(USF)。
[0044] 并且,在进行读取时,还具有以下步骤4):
[0045] 当沙箱应用程序要读取系统敏感目录中的文件时;
[0046] 向沙箱应用程序返回沙箱文件目录的位置,以使得沙箱应用程序直接读取该沙箱 文件目录中的文件。
[0047]其中,本发明基于Register Filter进行了USF映射,并且,在操作系统中,由于所 有的USF都在注册表中定义,则在上层应用获取USF目录时在内核中对原USF值进行修改,BP 可达到让上层应用改变USF目录的目的,如程序在读取desktop值时,为程序返回D:\ desktop则上层应用就会认为D: \desktop就是桌面。
[0048] 也即是说,与现有技术不同,本发明不封堵用户对USF目录(如桌面)的访问,而是 让上层应用在访问USF目录时,将其定向到沙箱文件目录中,并进行存储,由此,实现了较高 层级的安全防护。
[0049] 实施例二:
[0050] 具体对实施例一进行说明,其中,步骤3)中,具体包括:
[0051]获取沙箱应用程序要将文件写入系统敏感目录的信息,在系统内核中对系统敏感 目录的访问位置值进行修改,并向沙箱应用程序返回修改后的沙箱文件目录访问位置值。 [0052] 并且,步骤1 ),具体包括以下子步骤:
[0053] 11)获取当前系统采取的注册表过滤(Register Filter)方式;12)制订用户外壳 目录(USF)映射策略,指明原值与映射后新值的关联关系,以使得用户外壳目录和沙箱文件 目录相关联;
[0054]其中,步骤2)中,将所有沙箱应用程序进程都HOOK到注册表中,并基于被动地监听 注册表读取的方式监视对文件存储目录的访问;
[0055] 步骤3)中,具体包括以下子步骤:
[0056] 判断是否应向沙箱应用程序返回修改值,其中,如果应该修改则根据子步骤12)制 订的策略返回修改值。
[0057] 此外,在一个详细实施例中,步骤3)中,具体还包括:
[0058] 根据沙箱应用程序是否访问系统敏感目录,将沙箱应用程序进程分为沙箱进程和 非沙箱进程,并直接放行非沙箱进程。
[0059] 具体来说,如图2所示,其基于沙箱应用程序是否存在另存为对话框、沙箱应用程 序对注册表访问的判断KeyValuelnformationClass值是否等于 KeyValuePartialInformation、数据类型是否是REG_SZ或REG_EXPAND_SZ,以判断当前沙箱 应用程序要将文件写入到系统敏感目录中。
[0060] 实施例三:
[0061] 结合实施例对本发明进行说明如下,其中,本实施例中,主要基于微软公司的 windows系统进行说明,但是,本发明不限于此。
[0062]其中,在起始步骤1)首先需要区分系统版本选择不同的Register Filter方式。
[0063] 其中,XP及以下系统使用SSDT HOOK内核API ZwQueryValueKey,VISTA以上平台使 用CmRegisterCal Iback注册注册表操作回调。
[0064]步骤2)由Ring3层制订USF映射策略,指明哪个值应映射为什么新值。
[0065]步骤3)-直被动地监听注册表读取,并在原有读取完成后进行判断是否应修改返 回值,如果应该修改则根据步骤2制订的策略修改返回值。
[0066]其中制订策略比较简单,使用IOCTL进行Ring3RingO的通讯即可做到,单条策略的 结构如下:
[0067] #defme GDRF MAXVALUENAME 128 #defineGDRF_MAXDATALENGTH 128 y/R3层用的 typedefstruct _GDRF_M AP_RU L t_R3 ( WCHAR VMueName[GDRF_MAXV4LUENAN4E]; //'值名,如 Desktop WCHAR NewData[GDRF_MAXDATAL.ENGTH]; // 要修改为的 数据,如 D:\desktop } GDRF_N4AP_RULE_R3, ^PCxDRF_MAP_KULE_R3·
[0068] 其中,本发明的关键点在于修改系统的返回值,下面分别针对XP(及以下)和VISTA (及以上)的处理流程进行描述:
[0069] XP上的修改:
[0070] XP依赖于SSDK HOOK ZwQueryValueKey实现,函数原型如下:
[0071] ZwQuery ValueKeyC IN HANDLE; KeyHandle, IN PUNICODE STRING ValueName5 IN KEY-VALUE-INFORMATION-CLASS KeyValuelnformationClass, OUT PVOID KeyValuelnformation, IN ULONG Length, OUT PULONG ResultLength );
[0072] 其中,I) HOOK处理中先调用原有的ZwQuery Va IueKey,如果失败,则直接返回原值。
[0073] 2)判断是否是放行进程,即如果不是沙箱进程则应该放行。因为内核中的行为对 所有进程都生效,所以沙箱进程和非沙箱进程都会被Η00Κ到注册表读取行为,这里直接放 行非沙箱进程。
[0074] 3)判断 Key Value InformationClass 值是否等于Key ValuePartial Informat ion,此 值含义是真正读取数据;并判断数据类型是否是REG_SZ或REG_EXPAND_SZ,因为USF目录在 注册表中只会存放成这两种类型。
[0075] 4)从策略中找是否有对应的值的策略,如果没有,说明不需要改,则放行。5)将策 略中的制直接复制内存到原有的缓冲区,完成值的修改。
[0076] VISTA上的修改:
[0077] VISTA使用CmRegisterCallback注册一个注册表操作回调,这是因为在64位上不 容易使用SSDT HOOK,而CmRegisterCalIback更稳定高效。回调分操作前回调和操作后回调 (即操作注册表前和操作注册表后),回调函数原型如下: NTSTATUS GdrfRegistryCallbacki IN PVOID CallbackContext,
[0078] IN PVOID Argumentl, IN PVOID Argument〗
[0079] 1)判断是否是放行进程(即非沙箱进程),如果是则直接放行。
[0080] 2)判断Argumentl值是否等于RegNtPostQueryValueKey,等于说明是操作后回调, 因为操作前(还没读取到真正的值)我们不关心,只关心读取到原值之后的事。
[0081] 3)判断操作是否成功,如果失败则直接返回。
[0082] 4)判断 Key Value Informat ionClass 值是否等于Key ValuePart ial Information,此 值含义是真正读取数据;并判断数据类型是否是REG_SZ或REG_EXPAND_SZ,因为USF目录在 注册表中只会存放成这两种类型。
[0083] 5)从策略中找是否有对应的值的策略,如果没有,说明不需要改,则放行。
[0084] 6)将策略中的制直接复制内存到原有的缓冲区,完成值的修改。
[0085]由此,可以看出VISTA和XP的后三步都是一样的,只有在入口处有所差别,这增加 了编码的可复用性。
[0086] 实施例四:
[0087] 在一个具体实例中,在同一时刻在原始桌面和沙箱桌面分别打开同一个程序,分 别记做进程A和进程B,进程A编辑文件并保存,选择桌面,保存到了原有的桌面上;进程B做 同样的动作,保存到了 D:\desktop,这对于用户来说是完全透明的。在沙箱桌面中即使再次 打开进程B,打开对话框中能看到D: \desktop目录中的内容,同时B进程保存到桌面的文件A 进程无法从桌面看到。
[0088] 与现有技术相比较,本发明具有以下优点:
[0089] 1.不影响用户体验,给用户的感觉是仍能正常往桌面、我的文档等目录保存。
[0090] 2.完美的软件兼容性,不用再考虑某款软件另存为对话框是如何实现的,即不再 为程序做适配,直接兼容所有应用。
[0091] 实施例五:
[0092] 与以上方法实施例相对应,本发明提供了一种文件存储保护实现系统,包括:沙箱 文件目录设定单元,用于设定沙箱文件目录,并将该沙箱文件目录与系统敏感目录相映射;
[0093] 进程监视单元,用于监视沙箱应用程序对文件存储目录的访问;
[0094] 文件目录转向单元,用于当沙箱应用程序要将文件写入系统敏感目录时,获取沙 箱文件目录与系统敏感目录之间的映射关系,并向沙箱应用程序返回沙箱文件目录的位 置,以使得沙箱应用程序直接将文件直接写入该沙箱文件目录中。
[0095]其中,所述沙箱文件目录设定单元,进一步基于操作系统的注册表过滤(Register Filter)的方式将所述沙箱文件目录与所述系统敏感目录相映射,其中,所述系统敏感目录 为操作系统中的用户外壳目录(USF)。
[0096]本发明具有以上方法实施例相同的效果,即其不封堵用户对USF目录(如桌面)的 访问,而是让上层应用在访问USF目录时,将其定向到沙箱文件目录中,并进行存储,由此, 实现了较高层级的安全防护。
[0097]需要说明的是,对于上述方法实施例而言,为了简单描述,故将其都表述为一系列 的动作组合,但是本领域技术人员应该知悉,本申请并不受所描述的动作顺序的限制,因 为依据本申请,某些步骤可以采用其他顺序或者同时进行。其次,本领域技术人员也应该知 悉,说明书中所描述的实施例均属于优选实施例,所涉及的动作和模块并不一定是本申请 所必须的。
[0098]本领域内的技术人员应明白,本申请的实施例可提供为方法、系统、或计算机程序 产品。因此,本申请可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实 施例的形式。
[0099]最后应说明的是:以上所述仅为本发明的优选实施例而已,并不用于限制本发明, 尽管参照前述实施例对本发明进行了详细的说明,对于本领域的技术人员来说,其依然可 以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换。 凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的 保护范围之内。
【主权项】
1. 一种文件存储保护实现方法,其特征在于,包括: 1) 设定沙箱文件目录,并将该沙箱文件目录与系统敏感目录相映射; 2) 监视沙箱应用程序对文件存储目录的访问; 3) 当沙箱应用程序要将文件写入系统敏感目录时,获取沙箱文件目录与系统敏感目录 之间的映射关系,并向沙箱应用程序返回沙箱文件目录的位置,以使得沙箱应用程序直接 将文件直接写入该沙箱文件目录中。2. 根据权利要求1所述的文件存储保护实现方法,其特征在于,步骤1)中,基于操作系 统的注册表过滤(Register Filter)的方式将所述沙箱文件目录与所述系统敏感目录相映 射,其中,所述系统敏感目录为操作系统中的用户外壳目录(USF)。3. 根据权利要求2所述的文件存储保护实现方法,其特征在于,步骤3)中,具体包括: 获取沙箱应用程序要将文件写入系统敏感目录的信息,在系统内核中对系统敏感目录 的访问位置值进行修改,并向沙箱应用程序返回修改后的沙箱文件目录访问位置值。4. 根据权利要求3所述的文件存储保护实现方法,其特征在于,步骤1 ),具体包括以下 子步骤: 11)获取当前系统采取的注册表过滤(Register Filter)方式;12)制订用户外壳目录 (USF)映射策略,指明原值与映射后新值的关联关系,以使得用户外壳目录和沙箱文件目录 相关联; 其中,步骤2)中,将所有沙箱应用程序进程都HOOK到注册表中,并基于被动地监听注册 表读取的方式监视对文件存储目录的访问; 步骤3)中,具体包括以下子步骤: 判断是否应向沙箱应用程序返回修改值,其中,如果应该修改则根据子步骤12)制订的 策略返回修改值。5. 根据权利要求1所述的文件存储保护实现方法,其特征在于,步骤3)中,具体还包括: 根据沙箱应用程序是否访问系统敏感目录,将沙箱应用程序进程分为沙箱进程和非 沙箱进程,并直接放行非沙箱进程。6. 根据权利要求1所述的文件存储保护实现方法,其特征在于,进一步还包括:步骤4) 当沙箱应用程序要读取系统敏感目录中的文件时; 向沙箱应用程序返回沙箱文件目录的位置,以使得沙箱应用程序直接读取该沙箱文件 目录中的文件。7. 根据权利要求1所述的文件存储保护实现方法,其特征在于,基于沙箱应用程序是否 存在另存为对话框、沙箱应用程序对注册表访问的判断KeyValuelnformationClass值是否 等于KeyValuePartialInformation、数据类型是否是REG_SZ或REG_EXPAND_SZ,以判断当前 沙箱应用程序要将文件写入到系统敏感目录中。8. -种文件存储保护实现系统,其特征在于,包括: 沙箱文件目录设定单元,用于设定沙箱文件目录,并将该沙箱文件目录与系统敏感目 录相映射; 进程监视单元,用于监视沙箱应用程序对文件存储目录的访问; 文件目录转向单元,用于当沙箱应用程序要将文件写入系统敏感目录时,获取沙箱文 件目录与系统敏感目录之间的映射关系,并向沙箱应用程序返回沙箱文件目录的位置,以 使得沙箱应用程序直接将文件直接写入该沙箱文件目录中。9.根据权利要求8所述的文件存储保护实现系统,其特征在于,所述沙箱文件目录设定 单元,进一步基于操作系统的注册表过滤(Register Filter)的方式将所述沙箱文件目录 与所述系统敏感目录相映射,其中,所述系统敏感目录为操作系统中的用户外壳目录 (USF)〇
【文档编号】G06F21/53GK105844151SQ201610157970
【公开日】2016年8月10日
【申请日】2016年3月18日
【发明人】范龙龙
【申请人】山东华软金盾软件股份有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1