一種文件存儲(chǔ)保護(hù)實(shí)現(xiàn)方法和系統(tǒng)的制作方法
【專利摘要】本發(fā)明公開了一種文件存儲(chǔ)保護(hù)實(shí)現(xiàn)方法和系統(tǒng),其中,該方法包括:1)設(shè)定沙箱文件目錄,并將該沙箱文件目錄與系統(tǒng)敏感目錄相映射;2)監(jiān)視沙箱應(yīng)用程序?qū)ξ募鎯?chǔ)目錄的訪問;3)當(dāng)沙箱應(yīng)用程序要將文件寫入系統(tǒng)敏感目錄時(shí),獲取沙箱文件目錄與系統(tǒng)敏感目錄之間的映射關(guān)系,并向沙箱應(yīng)用程序返回沙箱文件目錄的位置,以使得沙箱應(yīng)用程序直接將文件直接寫入該沙箱文件目錄中。
【專利說明】
一種文件存儲(chǔ)保護(hù)實(shí)現(xiàn)方法和系統(tǒng)
技術(shù)領(lǐng)域
[0001 ]本發(fā)明屬于計(jì)算機(jī)領(lǐng)域,涉及一種文件存儲(chǔ)保護(hù)實(shí)現(xiàn)方法和系統(tǒng)。
【背景技術(shù)】
[0002] 沙箱技術(shù)是近兩年流行起來的新型數(shù)據(jù)防泄密(DLP)技術(shù),沙箱的基本理念是隔 離:在宿主終端形成邏輯上的沙箱區(qū)和非沙箱區(qū),沙箱區(qū)有一塊獨(dú)立的存儲(chǔ)和一組進(jìn)程環(huán) 境,在沙箱環(huán)境中產(chǎn)生的文件"只能保存在沙箱存儲(chǔ)"一一如果確實(shí)有途徑保存到非沙箱存 儲(chǔ),則使用文件重定向?qū)⑽募懭攵ㄏ虻缴诚浯鎯?chǔ)中來解決一一中,進(jìn)而做到文件的隔離。
[0003] 但用戶操作直接將文件保存到非沙箱存儲(chǔ)中還是要盡量避免,目前較多的做法是 在打開另存為對(duì)話框時(shí)禁止用戶選擇桌面、我的文檔,并禁止用戶手動(dòng)輸入路徑等手段解 決,在程序中不停地監(jiān)聽是否有文件另存為行為,流程如下:
[0004] 現(xiàn)有技術(shù)在一定程度上解決了用戶直接將文件往原始桌面(或我的文檔等非沙箱 存儲(chǔ))保存的問題,但解決并不徹底并付出了相當(dāng)大的代價(jià):
[0005] 1.輪詢的檢測(cè)消耗了 CPU,即使用戶并無另存為等操作行為。
[0006] 2.并不是所有的另存為都可以截獲,如CAD等軟件,另存為窗口并不是WINDOWS提 供的標(biāo)準(zhǔn)窗口,則現(xiàn)有方案就無法直接解決,需要適配(并且適配也不一定能解決),有大量 的非標(biāo)準(zhǔn)另存為行為,現(xiàn)有方案適配量很大。
[0007] 3.從界面上直接干涉了用戶的行為,影響了用戶體驗(yàn)。
【發(fā)明內(nèi)容】
[0008] 本發(fā)明所要解決的技術(shù)問題是提供一種文件存儲(chǔ)保護(hù)實(shí)現(xiàn)方法和裝置,用以克服 現(xiàn)有技術(shù)存在的以上問題。
[0009] 本發(fā)明解決上述技術(shù)問題所采取的技術(shù)方案如下:
[0010] 一種文件存儲(chǔ)保護(hù)實(shí)現(xiàn)方法,包括:
[0011] 1)設(shè)定沙箱文件目錄,并將該沙箱文件目錄與系統(tǒng)敏感目錄相映射;
[0012] 2)監(jiān)視沙箱應(yīng)用程序?qū)ξ募鎯?chǔ)目錄的訪問;
[0013] 3)當(dāng)沙箱應(yīng)用程序要將文件寫入系統(tǒng)敏感目錄時(shí),獲取沙箱文件目錄與系統(tǒng)敏感 目錄之間的映射關(guān)系,并向沙箱應(yīng)用程序返回沙箱文件目錄的位置,以使得沙箱應(yīng)用程序 直接將文件直接寫入該沙箱文件目錄中。
[0014] 進(jìn)一步地,優(yōu)選的是,步驟1)中,基于操作系統(tǒng)的注冊(cè)表過濾(Register Filter) 的方式將所述沙箱文件目錄與所述系統(tǒng)敏感目錄相映射,其中,所述系統(tǒng)敏感目錄為操作 系統(tǒng)中的用戶外殼目錄(USF)。
[0015] 進(jìn)一步地,優(yōu)選的是,步驟3)中,具體包括:
[0016] 獲取沙箱應(yīng)用程序要將文件寫入系統(tǒng)敏感目錄的信息,在系統(tǒng)內(nèi)核中對(duì)系統(tǒng)敏感 目錄的訪問位置值進(jìn)行修改,并向沙箱應(yīng)用程序返回修改后的沙箱文件目錄訪問位置值。
[0017] 進(jìn)一步地,優(yōu)選的是,步驟1),具體包括以下子步驟:
[0018] 11)獲取當(dāng)前系統(tǒng)采取的注冊(cè)表過濾(Register Filter)方式;12)制訂用戶外殼 目錄(USF)映射策略,指明原值與映射后新值的關(guān)聯(lián)關(guān)系,以使得用戶外殼目錄和沙箱文件 目錄相關(guān)聯(lián);
[0019] 其中,步驟2)中,將所有沙箱應(yīng)用程序進(jìn)程都HOOK到注冊(cè)表中,并基于被動(dòng)地監(jiān)聽 注冊(cè)表讀取的方式監(jiān)視對(duì)文件存儲(chǔ)目錄的訪問;
[0020] 步驟3)中,具體包括以下子步驟:
[0021] 判斷是否應(yīng)向沙箱應(yīng)用程序返回修改值,其中,如果應(yīng)該修改則根據(jù)子步驟12)制 訂的策略返回修改值。
[0022] 進(jìn)一步地,優(yōu)選的是,步驟3)中,具體還包括:
[0023]根據(jù)沙箱應(yīng)用程序是否訪問系統(tǒng)敏感目錄,將沙箱應(yīng)用程序進(jìn)程分為沙箱進(jìn)程和 非沙箱進(jìn)程,并直接放行非沙箱進(jìn)程。
[0024] 優(yōu)選的是,進(jìn)一步還包括:步驟4)當(dāng)沙箱應(yīng)用程序要讀取系統(tǒng)敏感目錄中的文件 時(shí);
[0025] 向沙箱應(yīng)用程序返回沙箱文件目錄的位置,以使得沙箱應(yīng)用程序直接讀取該沙箱 文件目錄中的文件。
[0026] 進(jìn)一步地,優(yōu)選的是,基于沙箱應(yīng)用程序是否存在另存為對(duì)話框、沙箱應(yīng)用程序 對(duì)注冊(cè)表訪問的判斷KeyValuelnformationClass值是否等于 KeyValuePartialInformation、數(shù)據(jù)類型是否是REG_SZ或REG_EXPAND_SZ,以判斷當(dāng)前沙箱 應(yīng)用程序要將文件寫入到系統(tǒng)敏感目錄中。
[0027] 一種文件存儲(chǔ)保護(hù)實(shí)現(xiàn)系統(tǒng),包括:
[0028] 沙箱文件目錄設(shè)定單元,用于設(shè)定沙箱文件目錄,并將該沙箱文件目錄與系統(tǒng)敏 感目錄相映射;
[0029] 進(jìn)程監(jiān)視單元,用于監(jiān)視沙箱應(yīng)用程序?qū)ξ募鎯?chǔ)目錄的訪問;
[0030] 文件目錄轉(zhuǎn)向單元,用于當(dāng)沙箱應(yīng)用程序要將文件寫入系統(tǒng)敏感目錄時(shí),獲取沙 箱文件目錄與系統(tǒng)敏感目錄之間的映射關(guān)系,并向沙箱應(yīng)用程序返回沙箱文件目錄的位 置,以使得沙箱應(yīng)用程序直接將文件直接寫入該沙箱文件目錄中。
[0031] 進(jìn)一步地,優(yōu)選的是,所述沙箱文件目錄設(shè)定單元,進(jìn)一步基于操作系統(tǒng)的注冊(cè)表 過濾(Register Filter)的方式將所述沙箱文件目錄與所述系統(tǒng)敏感目錄相映射,其中,所 述系統(tǒng)敏感目錄為操作系統(tǒng)中的用戶外殼目錄(USF)。
[0032] 本發(fā)明的其它特征和優(yōu)點(diǎn)將在隨后的說明書中闡述,并且,部分地從說明書中變 得顯而易見,或者通過實(shí)施本發(fā)明而了解。本發(fā)明的目的和其他優(yōu)點(diǎn)可通過在所寫的說明 書、權(quán)利要求書、以及附圖中所特別指出的結(jié)構(gòu)來實(shí)現(xiàn)和獲得。
【附圖說明】
[0033] 下面結(jié)合附圖對(duì)本發(fā)明進(jìn)行詳細(xì)的描述,以使得本發(fā)明的上述優(yōu)點(diǎn)更加明確。其 中, 圖1是本發(fā)明文件存儲(chǔ)保護(hù)實(shí)現(xiàn)方法的流程示意圖; 圖2是本發(fā)明文件存儲(chǔ)保護(hù)實(shí)現(xiàn)方法的實(shí)施例的流程示意圖; 圖3是本發(fā)明文件存儲(chǔ)保護(hù)實(shí)現(xiàn)方法的實(shí)施例的流程示意圖; 圖4是本發(fā)明文件存儲(chǔ)保護(hù)實(shí)現(xiàn)系統(tǒng)的結(jié)構(gòu)示意圖。
【具體實(shí)施方式】
[0034] 以下將結(jié)合附圖及實(shí)施例來詳細(xì)說明本發(fā)明的實(shí)施方式,借此對(duì)本發(fā)明如何應(yīng)用 技術(shù)手段來解決技術(shù)問題,并達(dá)成技術(shù)效果的實(shí)現(xiàn)過程能充分理解并據(jù)以實(shí)施。需要說明 的是,只要不構(gòu)成沖突,本發(fā)明中的各個(gè)實(shí)施例以及各實(shí)施例中的各個(gè)特征可以相互結(jié)合, 所形成的技術(shù)方案均在本發(fā)明的保護(hù)范圍之內(nèi)。
[0035] 其中,首先對(duì)本發(fā)明涉及的英文縮寫進(jìn)行解釋如下:
[0036] USF:User Shell Folder,用戶外殼目錄,在打開、另存對(duì)話框中直接顯示的非標(biāo) 準(zhǔn)路徑目錄,如"我的文檔","桌面"這些目錄。
[0037] Register Filter:注冊(cè)表過濾,在內(nèi)核層(RingO)過濾上層應(yīng)用(Ring3)對(duì)注冊(cè)表 的操作。
[0038] 實(shí)施例一:
[0039] 如圖1和3所示,一種文件存儲(chǔ)保護(hù)實(shí)現(xiàn)方法,包括:
[0040] 1)設(shè)定沙箱文件目錄,并將該沙箱文件目錄與系統(tǒng)敏感目錄相映射;
[0041 ] 2)監(jiān)視沙箱應(yīng)用程序?qū)ξ募鎯?chǔ)目錄的訪問;
[0042] 3)當(dāng)沙箱應(yīng)用程序要將文件寫入系統(tǒng)敏感目錄時(shí),獲取沙箱文件目錄與系統(tǒng)敏感 目錄之間的映射關(guān)系,并向沙箱應(yīng)用程序返回沙箱文件目錄的位置,以使得沙箱應(yīng)用程序 直接將文件直接寫入該沙箱文件目錄中。
[0043] 其中,在實(shí)施例中,基于操作系統(tǒng)的注冊(cè)表過濾(Register Filter)的方式將所述 沙箱文件目錄與所述系統(tǒng)敏感目錄相映射,其中,所述系統(tǒng)敏感目錄為操作系統(tǒng)中的用戶 外殼目錄(USF)。
[0044] 并且,在進(jìn)行讀取時(shí),還具有以下步驟4):
[0045] 當(dāng)沙箱應(yīng)用程序要讀取系統(tǒng)敏感目錄中的文件時(shí);
[0046] 向沙箱應(yīng)用程序返回沙箱文件目錄的位置,以使得沙箱應(yīng)用程序直接讀取該沙箱 文件目錄中的文件。
[0047]其中,本發(fā)明基于Register Filter進(jìn)行了USF映射,并且,在操作系統(tǒng)中,由于所 有的USF都在注冊(cè)表中定義,則在上層應(yīng)用獲取USF目錄時(shí)在內(nèi)核中對(duì)原USF值進(jìn)行修改,BP 可達(dá)到讓上層應(yīng)用改變USF目錄的目的,如程序在讀取desktop值時(shí),為程序返回D:\ desktop則上層應(yīng)用就會(huì)認(rèn)為D: \desktop就是桌面。
[0048] 也即是說,與現(xiàn)有技術(shù)不同,本發(fā)明不封堵用戶對(duì)USF目錄(如桌面)的訪問,而是 讓上層應(yīng)用在訪問USF目錄時(shí),將其定向到沙箱文件目錄中,并進(jìn)行存儲(chǔ),由此,實(shí)現(xiàn)了較高 層級(jí)的安全防護(hù)。
[0049] 實(shí)施例二:
[0050] 具體對(duì)實(shí)施例一進(jìn)行說明,其中,步驟3)中,具體包括:
[0051]獲取沙箱應(yīng)用程序要將文件寫入系統(tǒng)敏感目錄的信息,在系統(tǒng)內(nèi)核中對(duì)系統(tǒng)敏感 目錄的訪問位置值進(jìn)行修改,并向沙箱應(yīng)用程序返回修改后的沙箱文件目錄訪問位置值。 [0052] 并且,步驟1 ),具體包括以下子步驟:
[0053] 11)獲取當(dāng)前系統(tǒng)采取的注冊(cè)表過濾(Register Filter)方式;12)制訂用戶外殼 目錄(USF)映射策略,指明原值與映射后新值的關(guān)聯(lián)關(guān)系,以使得用戶外殼目錄和沙箱文件 目錄相關(guān)聯(lián);
[0054]其中,步驟2)中,將所有沙箱應(yīng)用程序進(jìn)程都HOOK到注冊(cè)表中,并基于被動(dòng)地監(jiān)聽 注冊(cè)表讀取的方式監(jiān)視對(duì)文件存儲(chǔ)目錄的訪問;
[0055] 步驟3)中,具體包括以下子步驟:
[0056] 判斷是否應(yīng)向沙箱應(yīng)用程序返回修改值,其中,如果應(yīng)該修改則根據(jù)子步驟12)制 訂的策略返回修改值。
[0057] 此外,在一個(gè)詳細(xì)實(shí)施例中,步驟3)中,具體還包括:
[0058] 根據(jù)沙箱應(yīng)用程序是否訪問系統(tǒng)敏感目錄,將沙箱應(yīng)用程序進(jìn)程分為沙箱進(jìn)程和 非沙箱進(jìn)程,并直接放行非沙箱進(jìn)程。
[0059] 具體來說,如圖2所示,其基于沙箱應(yīng)用程序是否存在另存為對(duì)話框、沙箱應(yīng)用程 序?qū)ψ?cè)表訪問的判斷KeyValuelnformationClass值是否等于 KeyValuePartialInformation、數(shù)據(jù)類型是否是REG_SZ或REG_EXPAND_SZ,以判斷當(dāng)前沙箱 應(yīng)用程序要將文件寫入到系統(tǒng)敏感目錄中。
[0060] 實(shí)施例三:
[0061] 結(jié)合實(shí)施例對(duì)本發(fā)明進(jìn)行說明如下,其中,本實(shí)施例中,主要基于微軟公司的 windows系統(tǒng)進(jìn)行說明,但是,本發(fā)明不限于此。
[0062]其中,在起始步驟1)首先需要區(qū)分系統(tǒng)版本選擇不同的Register Filter方式。
[0063] 其中,XP及以下系統(tǒng)使用SSDT HOOK內(nèi)核API ZwQueryValueKey,VISTA以上平臺(tái)使 用CmRegisterCal Iback注冊(cè)注冊(cè)表操作回調(diào)。
[0064]步驟2)由Ring3層制訂USF映射策略,指明哪個(gè)值應(yīng)映射為什么新值。
[0065]步驟3)-直被動(dòng)地監(jiān)聽注冊(cè)表讀取,并在原有讀取完成后進(jìn)行判斷是否應(yīng)修改返 回值,如果應(yīng)該修改則根據(jù)步驟2制訂的策略修改返回值。
[0066]其中制訂策略比較簡(jiǎn)單,使用IOCTL進(jìn)行Ring3RingO的通訊即可做到,單條策略的 結(jié)構(gòu)如下:
[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]; // 要修改為的 數(shù)據(jù),如 D:\desktop } GDRF_N4AP_RULE_R3, ^PCxDRF_MAP_KULE_R3·
[0068] 其中,本發(fā)明的關(guān)鍵點(diǎn)在于修改系統(tǒng)的返回值,下面分別針對(duì)XP(及以下)和VISTA (及以上)的處理流程進(jìn)行描述:
[0069] XP上的修改:
[0070] XP依賴于SSDK HOOK ZwQueryValueKey實(shí)現(xiàn),函數(shù)原型如下:
[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處理中先調(diào)用原有的ZwQuery Va IueKey,如果失敗,則直接返回原值。
[0073] 2)判斷是否是放行進(jìn)程,即如果不是沙箱進(jìn)程則應(yīng)該放行。因?yàn)閮?nèi)核中的行為對(duì) 所有進(jìn)程都生效,所以沙箱進(jìn)程和非沙箱進(jìn)程都會(huì)被Η00Κ到注冊(cè)表讀取行為,這里直接放 行非沙箱進(jìn)程。
[0074] 3)判斷 Key Value InformationClass 值是否等于Key ValuePartial Informat ion,此 值含義是真正讀取數(shù)據(jù);并判斷數(shù)據(jù)類型是否是REG_SZ或REG_EXPAND_SZ,因?yàn)閁SF目錄在 注冊(cè)表中只會(huì)存放成這兩種類型。
[0075] 4)從策略中找是否有對(duì)應(yīng)的值的策略,如果沒有,說明不需要改,則放行。5)將策 略中的制直接復(fù)制內(nèi)存到原有的緩沖區(qū),完成值的修改。
[0076] VISTA上的修改:
[0077] VISTA使用CmRegisterCallback注冊(cè)一個(gè)注冊(cè)表操作回調(diào),這是因?yàn)樵?4位上不 容易使用SSDT HOOK,而CmRegisterCalIback更穩(wěn)定高效?;卣{(diào)分操作前回調(diào)和操作后回調(diào) (即操作注冊(cè)表前和操作注冊(cè)表后),回調(diào)函數(shù)原型如下: NTSTATUS GdrfRegistryCallbacki IN PVOID CallbackContext,
[0078] IN PVOID Argumentl, IN PVOID Argument〗
[0079] 1)判斷是否是放行進(jìn)程(即非沙箱進(jìn)程),如果是則直接放行。
[0080] 2)判斷Argumentl值是否等于RegNtPostQueryValueKey,等于說明是操作后回調(diào), 因?yàn)椴僮髑?還沒讀取到真正的值)我們不關(guān)心,只關(guān)心讀取到原值之后的事。
[0081] 3)判斷操作是否成功,如果失敗則直接返回。
[0082] 4)判斷 Key Value Informat ionClass 值是否等于Key ValuePart ial Information,此 值含義是真正讀取數(shù)據(jù);并判斷數(shù)據(jù)類型是否是REG_SZ或REG_EXPAND_SZ,因?yàn)閁SF目錄在 注冊(cè)表中只會(huì)存放成這兩種類型。
[0083] 5)從策略中找是否有對(duì)應(yīng)的值的策略,如果沒有,說明不需要改,則放行。
[0084] 6)將策略中的制直接復(fù)制內(nèi)存到原有的緩沖區(qū),完成值的修改。
[0085]由此,可以看出VISTA和XP的后三步都是一樣的,只有在入口處有所差別,這增加 了編碼的可復(fù)用性。
[0086] 實(shí)施例四:
[0087] 在一個(gè)具體實(shí)例中,在同一時(shí)刻在原始桌面和沙箱桌面分別打開同一個(gè)程序,分 別記做進(jìn)程A和進(jìn)程B,進(jìn)程A編輯文件并保存,選擇桌面,保存到了原有的桌面上;進(jìn)程B做 同樣的動(dòng)作,保存到了 D:\desktop,這對(duì)于用戶來說是完全透明的。在沙箱桌面中即使再次 打開進(jìn)程B,打開對(duì)話框中能看到D: \desktop目錄中的內(nèi)容,同時(shí)B進(jìn)程保存到桌面的文件A 進(jìn)程無法從桌面看到。
[0088] 與現(xiàn)有技術(shù)相比較,本發(fā)明具有以下優(yōu)點(diǎn):
[0089] 1.不影響用戶體驗(yàn),給用戶的感覺是仍能正常往桌面、我的文檔等目錄保存。
[0090] 2.完美的軟件兼容性,不用再考慮某款軟件另存為對(duì)話框是如何實(shí)現(xiàn)的,即不再 為程序做適配,直接兼容所有應(yīng)用。
[0091] 實(shí)施例五:
[0092] 與以上方法實(shí)施例相對(duì)應(yīng),本發(fā)明提供了一種文件存儲(chǔ)保護(hù)實(shí)現(xiàn)系統(tǒng),包括:沙箱 文件目錄設(shè)定單元,用于設(shè)定沙箱文件目錄,并將該沙箱文件目錄與系統(tǒng)敏感目錄相映射;
[0093] 進(jìn)程監(jiān)視單元,用于監(jiān)視沙箱應(yīng)用程序?qū)ξ募鎯?chǔ)目錄的訪問;
[0094] 文件目錄轉(zhuǎn)向單元,用于當(dāng)沙箱應(yīng)用程序要將文件寫入系統(tǒng)敏感目錄時(shí),獲取沙 箱文件目錄與系統(tǒng)敏感目錄之間的映射關(guān)系,并向沙箱應(yīng)用程序返回沙箱文件目錄的位 置,以使得沙箱應(yīng)用程序直接將文件直接寫入該沙箱文件目錄中。
[0095]其中,所述沙箱文件目錄設(shè)定單元,進(jìn)一步基于操作系統(tǒng)的注冊(cè)表過濾(Register Filter)的方式將所述沙箱文件目錄與所述系統(tǒng)敏感目錄相映射,其中,所述系統(tǒng)敏感目錄 為操作系統(tǒng)中的用戶外殼目錄(USF)。
[0096]本發(fā)明具有以上方法實(shí)施例相同的效果,即其不封堵用戶對(duì)USF目錄(如桌面)的 訪問,而是讓上層應(yīng)用在訪問USF目錄時(shí),將其定向到沙箱文件目錄中,并進(jìn)行存儲(chǔ),由此, 實(shí)現(xiàn)了較高層級(jí)的安全防護(hù)。
[0097]需要說明的是,對(duì)于上述方法實(shí)施例而言,為了簡(jiǎn)單描述,故將其都表述為一系列 的動(dòng)作組合,但是本領(lǐng)域技術(shù)人員應(yīng)該知悉,本申請(qǐng)并不受所描述的動(dòng)作順序的限制,因 為依據(jù)本申請(qǐng),某些步驟可以采用其他順序或者同時(shí)進(jìn)行。其次,本領(lǐng)域技術(shù)人員也應(yīng)該知 悉,說明書中所描述的實(shí)施例均屬于優(yōu)選實(shí)施例,所涉及的動(dòng)作和模塊并不一定是本申請(qǐng) 所必須的。
[0098]本領(lǐng)域內(nèi)的技術(shù)人員應(yīng)明白,本申請(qǐng)的實(shí)施例可提供為方法、系統(tǒng)、或計(jì)算機(jī)程序 產(chǎn)品。因此,本申請(qǐng)可采用完全硬件實(shí)施例、完全軟件實(shí)施例、或結(jié)合軟件和硬件方面的實(shí) 施例的形式。
[0099]最后應(yīng)說明的是:以上所述僅為本發(fā)明的優(yōu)選實(shí)施例而已,并不用于限制本發(fā)明, 盡管參照前述實(shí)施例對(duì)本發(fā)明進(jìn)行了詳細(xì)的說明,對(duì)于本領(lǐng)域的技術(shù)人員來說,其依然可 以對(duì)前述各實(shí)施例所記載的技術(shù)方案進(jìn)行修改,或者對(duì)其中部分技術(shù)特征進(jìn)行等同替換。 凡在本發(fā)明的精神和原則之內(nèi),所作的任何修改、等同替換、改進(jìn)等,均應(yīng)包含在本發(fā)明的 保護(hù)范圍之內(nèi)。
【主權(quán)項(xiàng)】
1. 一種文件存儲(chǔ)保護(hù)實(shí)現(xiàn)方法,其特征在于,包括: 1) 設(shè)定沙箱文件目錄,并將該沙箱文件目錄與系統(tǒng)敏感目錄相映射; 2) 監(jiān)視沙箱應(yīng)用程序?qū)ξ募鎯?chǔ)目錄的訪問; 3) 當(dāng)沙箱應(yīng)用程序要將文件寫入系統(tǒng)敏感目錄時(shí),獲取沙箱文件目錄與系統(tǒng)敏感目錄 之間的映射關(guān)系,并向沙箱應(yīng)用程序返回沙箱文件目錄的位置,以使得沙箱應(yīng)用程序直接 將文件直接寫入該沙箱文件目錄中。2. 根據(jù)權(quán)利要求1所述的文件存儲(chǔ)保護(hù)實(shí)現(xiàn)方法,其特征在于,步驟1)中,基于操作系 統(tǒng)的注冊(cè)表過濾(Register Filter)的方式將所述沙箱文件目錄與所述系統(tǒng)敏感目錄相映 射,其中,所述系統(tǒng)敏感目錄為操作系統(tǒng)中的用戶外殼目錄(USF)。3. 根據(jù)權(quán)利要求2所述的文件存儲(chǔ)保護(hù)實(shí)現(xiàn)方法,其特征在于,步驟3)中,具體包括: 獲取沙箱應(yīng)用程序要將文件寫入系統(tǒng)敏感目錄的信息,在系統(tǒng)內(nèi)核中對(duì)系統(tǒng)敏感目錄 的訪問位置值進(jìn)行修改,并向沙箱應(yīng)用程序返回修改后的沙箱文件目錄訪問位置值。4. 根據(jù)權(quán)利要求3所述的文件存儲(chǔ)保護(hù)實(shí)現(xiàn)方法,其特征在于,步驟1 ),具體包括以下 子步驟: 11)獲取當(dāng)前系統(tǒng)采取的注冊(cè)表過濾(Register Filter)方式;12)制訂用戶外殼目錄 (USF)映射策略,指明原值與映射后新值的關(guān)聯(lián)關(guān)系,以使得用戶外殼目錄和沙箱文件目錄 相關(guān)聯(lián); 其中,步驟2)中,將所有沙箱應(yīng)用程序進(jìn)程都HOOK到注冊(cè)表中,并基于被動(dòng)地監(jiān)聽注冊(cè) 表讀取的方式監(jiān)視對(duì)文件存儲(chǔ)目錄的訪問; 步驟3)中,具體包括以下子步驟: 判斷是否應(yīng)向沙箱應(yīng)用程序返回修改值,其中,如果應(yīng)該修改則根據(jù)子步驟12)制訂的 策略返回修改值。5. 根據(jù)權(quán)利要求1所述的文件存儲(chǔ)保護(hù)實(shí)現(xiàn)方法,其特征在于,步驟3)中,具體還包括: 根據(jù)沙箱應(yīng)用程序是否訪問系統(tǒng)敏感目錄,將沙箱應(yīng)用程序進(jìn)程分為沙箱進(jìn)程和非 沙箱進(jìn)程,并直接放行非沙箱進(jìn)程。6. 根據(jù)權(quán)利要求1所述的文件存儲(chǔ)保護(hù)實(shí)現(xiàn)方法,其特征在于,進(jìn)一步還包括:步驟4) 當(dāng)沙箱應(yīng)用程序要讀取系統(tǒng)敏感目錄中的文件時(shí); 向沙箱應(yīng)用程序返回沙箱文件目錄的位置,以使得沙箱應(yīng)用程序直接讀取該沙箱文件 目錄中的文件。7. 根據(jù)權(quán)利要求1所述的文件存儲(chǔ)保護(hù)實(shí)現(xiàn)方法,其特征在于,基于沙箱應(yīng)用程序是否 存在另存為對(duì)話框、沙箱應(yīng)用程序?qū)ψ?cè)表訪問的判斷KeyValuelnformationClass值是否 等于KeyValuePartialInformation、數(shù)據(jù)類型是否是REG_SZ或REG_EXPAND_SZ,以判斷當(dāng)前 沙箱應(yīng)用程序要將文件寫入到系統(tǒng)敏感目錄中。8. -種文件存儲(chǔ)保護(hù)實(shí)現(xiàn)系統(tǒng),其特征在于,包括: 沙箱文件目錄設(shè)定單元,用于設(shè)定沙箱文件目錄,并將該沙箱文件目錄與系統(tǒng)敏感目 錄相映射; 進(jìn)程監(jiān)視單元,用于監(jiān)視沙箱應(yīng)用程序?qū)ξ募鎯?chǔ)目錄的訪問; 文件目錄轉(zhuǎn)向單元,用于當(dāng)沙箱應(yīng)用程序要將文件寫入系統(tǒng)敏感目錄時(shí),獲取沙箱文 件目錄與系統(tǒng)敏感目錄之間的映射關(guān)系,并向沙箱應(yīng)用程序返回沙箱文件目錄的位置,以 使得沙箱應(yīng)用程序直接將文件直接寫入該沙箱文件目錄中。9.根據(jù)權(quán)利要求8所述的文件存儲(chǔ)保護(hù)實(shí)現(xiàn)系統(tǒng),其特征在于,所述沙箱文件目錄設(shè)定 單元,進(jìn)一步基于操作系統(tǒng)的注冊(cè)表過濾(Register Filter)的方式將所述沙箱文件目錄 與所述系統(tǒng)敏感目錄相映射,其中,所述系統(tǒng)敏感目錄為操作系統(tǒng)中的用戶外殼目錄 (USF)〇
【文檔編號(hào)】G06F21/53GK105844151SQ201610157970
【公開日】2016年8月10日
【申請(qǐng)日】2016年3月18日
【發(fā)明人】范龍龍
【申請(qǐng)人】山東華軟金盾軟件股份有限公司