專利名稱:文件系統(tǒng)過濾驅(qū)動加密實現(xiàn)方法
技術(shù)領(lǐng)域:
本發(fā)明提出了在驅(qū)動層實現(xiàn)對文件的加解密方案,主要解決了在驅(qū)動層透明加解密的過程,更加的安全。
背景技術(shù):
微過濾驅(qū)動加密技術(shù),它基于Windows文件系統(tǒng)驅(qū)動技術(shù),工作在Windows的內(nèi)核層。當(dāng)應(yīng)用程序打開指定的進(jìn)程時,該驅(qū)動會監(jiān)視到程序的操作,并改變其打開,讀寫等操作方式,從而達(dá)到透明加解密的效果。與傳統(tǒng)的應(yīng)用層加密相比,它因為在底層會更加的安全而高效。它與傳統(tǒng)的過濾驅(qū)動相比,過濾管理器模型有著下面的優(yōu)點 加載順序更易控制,不像傳統(tǒng)過濾驅(qū)動,一個minifilter驅(qū)動可以在任何時候被加載且因其Altitude被綁定到合適的位置。 在系統(tǒng)運(yùn)行期間的卸載能力。不像在系統(tǒng)運(yùn)行期間不能被卸載的傳統(tǒng)過濾驅(qū)動,minifilter驅(qū)動能在任意時間被卸載且必要時它能阻止它自己被卸載。過濾管理器同步所有minifilter驅(qū)動綁定體的安全移除,且它會處理minifilter驅(qū)動被卸載之后完成的操作。 僅需處理必要操作的能力。在這個模型中可以挑選自己感興趣的要過濾的I/O 操作的類型(基于IRP的,fast I/O或FSFi Iter)。Minifi Iter驅(qū)動只接收它已經(jīng)為其注冊了回調(diào)例程的I/O操作。微過濾驅(qū)動可以注冊一個唯一的pre-oper或post-oper callback 例程,或兩者都注冊,它可以忽略某些類型的操作,比如分頁1/0和緩存的1/0。 內(nèi)核棧的應(yīng)用更加高效。過濾管理器使用“callback”模型,過濾管理器通過支持非重入過濾初始化的1/0(這僅能被棧中低層驅(qū)動看見)減少了遞歸1/0的沖突。 更易于添加新操作。微過濾驅(qū)動僅為其將要處理的1/0操作注冊,對新操作的支持可以在不破壞現(xiàn)有為過濾驅(qū)動的前提下被添加到過濾管理器中。 允許微過濾器帶有私有數(shù)據(jù)信息到一系統(tǒng)對象上(卷上下文,實例上下文,流上下文,流句柄上下文和文件上下文)。 對用戶模式應(yīng)用程序的更好支持。過濾管理器為與為過濾驅(qū)動一起工作的用戶模式服務(wù)及控制程序提供一般功能。過濾管理器用戶模式庫,F(xiàn)ilterlib.dll激活了用戶模式服務(wù)或控制程序同minifilter驅(qū)動之間的通信。Filterlib. dll也為管理工具提供了接口。
發(fā)明內(nèi)容
技術(shù)問題本發(fā)明的目的是提供一種文件系統(tǒng)過濾驅(qū)動加密實現(xiàn)方法,與傳統(tǒng)型的文件過濾驅(qū)動相比,微軟的內(nèi)核開發(fā)者開發(fā)出了一個新的驅(qū)動,稱為過濾管理器,但這個驅(qū)動本身恰恰是一個傳統(tǒng)型的文件系統(tǒng)過濾驅(qū)動。但是這個驅(qū)動提供了接口,接受一些注冊過的內(nèi)核模塊。因此對基本IRP的操作就交給了過濾管理器。
技術(shù)方案本發(fā)明的文件系統(tǒng)過濾驅(qū)動加密實現(xiàn)方法具體實現(xiàn)步驟如下第一步,驅(qū)動程序啟動后,首先在打開文件操作返回給應(yīng)用程序時獲取文件名和文件大小,第二步,隨后判斷打開文件的進(jìn)程是否是機(jī)密進(jìn)程打開,如果是機(jī)密進(jìn)程,那么此時進(jìn)一步判斷文件的大小是否是零,若文件的大小是零,且要執(zhí)行寫操作,則首先寫入加密標(biāo)識頭部,第三步,如果文件的大小大于加密標(biāo)識結(jié)構(gòu)體大小,先從文件頭部中讀取同樣大小的信息與加密標(biāo)識結(jié)構(gòu)體信息進(jìn)行比較,相同說明是加密文件;如果文件小于加密標(biāo)識結(jié)構(gòu)體,則不做處理,第四步,在讀取文件時,若是已經(jīng)加密的文件,首先進(jìn)行解密操作,在返回給應(yīng)用程序,在寫操作時,首先判斷該文件原先是否是加密文件,如果是,進(jìn)行加密處理后存儲到磁盤文件中,如果不是,則不進(jìn)行加密處理,直接存儲到磁盤文件上。第三步所述的先從文件頭部中讀取同樣大小的信息與加密標(biāo)識結(jié)構(gòu)體信息進(jìn)行比較,具體實現(xiàn)方法是根據(jù)自定義的加密標(biāo)識結(jié)構(gòu)體的大小,從文件頭部中讀取同樣大小的內(nèi)容,并將它強(qiáng)制轉(zhuǎn)換成加密標(biāo)識結(jié)構(gòu)體類型,然后把讀取的內(nèi)容與加密標(biāo)識結(jié)構(gòu)體信息逐個字節(jié)比較。有益效果這兩個結(jié)構(gòu)體能很好的管理文件系統(tǒng)微過濾驅(qū)動注冊的所有信息, 并能夠準(zhǔn)確及時的處理注冊后的各種類型的消息。其中第一個結(jié)構(gòu)體中的最有意義的是 ContextRegistration, OperationRegistration, FiIterUnloadCallback,其目的是 InstanceSetupCallback, InstanceQueryTeardownCallback。 ContextRegistration 用于注冊上下文信息;OperationRegistration是注冊處理I/O請求時的回調(diào)函數(shù)的; FilterUnloadCallback是用于卸載驅(qū)動時需要做的操作Jnstanc必etupCalIback是在用于新的卷被安裝時調(diào)用,其目的是為了使Minifilter驅(qū)動能監(jiān)控到卷的安裝和移除, 從而動態(tài)的安裝Minifilter驅(qū)動JnstanceQueryTeardownCallback是在用戶手動移除 Minifilter驅(qū)動時被調(diào)用。第二個結(jié)構(gòu)體是對這個域OperationRegistration詳細(xì)結(jié)構(gòu), 處理指定的IRP請求。
圖1是文件請求過程圖,說明文件層用戶模式傳遞到內(nèi)核模式的流程。圖2是驅(qū)動功能模塊圖。圖3是應(yīng)用通信功能模塊示意圖。圖4是執(zhí)行流程圖。圖 5 是微文件系統(tǒng)注冊過程圖,其中 FltRegisterFilter,F(xiàn)ltStartMinifilter, FltCreateCommunicationPort 是系統(tǒng)庫函數(shù)。圖6是創(chuàng)建自定義輸入輸出請求包示意圖,其中 IoGetDeviceAttachmentBaseRef, IoAllocateIrp, IoSetCompletionRoutine, IoCallDriver是系統(tǒng)庫函數(shù)。
具體實施例方式過濾管理器隨Windows —起被安裝,但它只在一個Minifi Iter驅(qū)動被加載時才會起作用,過濾管理器綁定到目標(biāo)卷的文件系統(tǒng)棧上。Minifilter驅(qū)動為它要過濾的I/O操作而通過向過濾管理器注冊來間接綁定到文件系統(tǒng)棧上。像傳統(tǒng)型過濾驅(qū)動一樣,Minifilter驅(qū)動的綁定也按照一個特定的順序。不過, 綁定體的順序是由一個叫Altitude的唯一標(biāo)識符決定的。Minifilter驅(qū)動在特定卷上的一個特定altitude的綁定體被稱為這個Minif ilter驅(qū)動的一個instance。Minifilter驅(qū)動的Altitude確保它的實例總是在相應(yīng)的位置被加載,它決定過濾管理器以什么順序來調(diào)用Minifilter驅(qū)動來處理I/O。Altitudes由微軟分配和管理。Minifilter 驅(qū)動能過濾 IRP-I/0 操作、Fast I/O 和 FSFilter Callback 操作。但它只會對自己感興趣的操作進(jìn)行注冊,會對每一個它要過濾的I/O操作它都可以注冊一個 pre-oper callback例程,一個post-oper callback例程或二者都注冊。當(dāng)處理一個I/O 操作時,過濾管理器調(diào)用每個Minifilter為此操作注冊的callkick例程。當(dāng)該callkick 例程返回時,過濾管理器調(diào)用下一 minif ilter驅(qū)動為此操作注冊的callback例程。舉個例子,假設(shè)圖1中的三個Minifilter驅(qū)動都為同一 I/O操作注冊了 callkick 例程,則過濾管理器會以altitude由高到低的順序(A,B, C)調(diào)用它們的pre-oper callback例程,然后把此1/0操作轉(zhuǎn)寄給下一較低級的驅(qū)動進(jìn)一步處理。當(dāng)過濾管理器接收到此1/0請求的完成時,它以相反的順序即由低到高(C,B,A)調(diào)用每一個Minifilter驅(qū) ^jStJ post-oper callback 歹|J禾呈。系統(tǒng)框架加密方案由兩部分,其一是底層的過濾驅(qū)動,它的功能包括下面幾個主要方面1) 機(jī)密進(jìn)程的判斷(需要監(jiān)視的進(jìn)程);2)加解密點的判斷該進(jìn)程打開的文件是否已經(jīng)被加密了 ;幻文件名獲??;4)加密標(biāo)識的設(shè)置,來區(qū)分是否已經(jīng)加密力)加解密操作。其二是應(yīng)用層建立的DLL程序,包括下面主要功能1)通信端口的連接初始化;2) 傳遞數(shù)據(jù),在應(yīng)用程序關(guān)閉后關(guān)閉該端口。功能結(jié)構(gòu)過濾驅(qū)動層的目的是完成機(jī)密進(jìn)程的判斷,獲取文件名,加解密點判斷,與應(yīng)用層通信端口,加密標(biāo)識設(shè)置,文件加解密。具體的功能結(jié)構(gòu)如圖2所示 獲取文件名模塊它是在文件打開或創(chuàng)建時執(zhí)行的,用來獲取文件的絕對路徑,為以后的操作做準(zhǔn)備。 機(jī)密進(jìn)程模塊當(dāng)獲取文件名后,會執(zhí)行這個模塊,完成進(jìn)程類型的判斷,是否是需要特殊處理的進(jìn)程(進(jìn)行加解密處理)。 加解密點模塊當(dāng)是機(jī)密進(jìn)程時,執(zhí)行該模塊時,當(dāng)打開已有文件時,若是文件大小不為零,首先, 讀取文件頭的前面一部分,大小是加密標(biāo)識結(jié)構(gòu)的大小,若是加密標(biāo)識,則說明是加密的文件,可以進(jìn)行操作;若不是,則不做任何處理,直接交給下層驅(qū)動。當(dāng)文件大小是零,且要執(zhí)行寫操作時,則首先在文件頭部首先寫入加密標(biāo)識數(shù)據(jù)。
加解密標(biāo)識模塊該模塊用來初始化加密標(biāo)識結(jié)構(gòu)體的內(nèi)容。 加解密模塊在文件進(jìn)行寫操作時,在寫預(yù)操作回調(diào)函數(shù)中自動對文件內(nèi)容進(jìn)行加密處理在存儲到磁盤文件中;在讀文件時,在讀后操作回調(diào)函數(shù)中自動對該文件進(jìn)行解密操作在返回給用戶程序。眷通信端口模塊為了方便用戶態(tài)與內(nèi)核態(tài)的通信,該模塊完成接收用戶態(tài)傳遞進(jìn)來的信息,并對信息處理后返回給用戶。應(yīng)用層建立的DLL程序的目的是完成與驅(qū)動層的連接通信端口,傳遞數(shù)據(jù)。具體功能結(jié)構(gòu)圖如圖3所示 連接驅(qū)動通信端口模塊該模塊完成建立到底層驅(qū)動端口的連接,為下面?zhèn)鬏敂?shù)據(jù)做準(zhǔn)備。眷通信模塊在連接成功的基礎(chǔ)上,完成向下底層驅(qū)動傳遞數(shù)據(jù)信息并接受處理后的返回的數(shù)據(jù)信息。方法流程驅(qū)動程序啟動后,首先在IRP_MJ_CREATE的后操作回調(diào)函數(shù)中,獲取文件的全路徑名和文件大小;隨后判斷打開文件的進(jìn)程是否是機(jī)密進(jìn)程打開,若是,如果文件的大小是零,且要執(zhí)行寫操作,則首先寫入加密標(biāo)識頭部;如果文件大小大于加密標(biāo)識結(jié)構(gòu)體大小, 先讀取同樣大小的文件頭與加密標(biāo)識頭部進(jìn)行比較,相同說明是加密文件;如果文件大小小于加密標(biāo)識結(jié)構(gòu)體大小,則不做處理。在讀取文件時,若是已經(jīng)加密的文件,首先進(jìn)行解密操作,在返回給應(yīng)用程序。在寫操作時,首先進(jìn)行加密處理后在存儲到磁盤文件中。具體工作如圖4所示主要數(shù)據(jù)結(jié)構(gòu)在注冊為過濾器時,我們需要填寫一個名為微過濾器注冊結(jié)構(gòu)(FLT_ REGISTRATION)的數(shù)據(jù)結(jié)構(gòu),其定義如下typedef struct _FLT_REGISTRATION{ USHORT Size; USHORT Version; FLT_REGISTRATI0N_FLAGS Flags;
CONST FLT_CONTEXT_REGISTRATION ^ContextRegistration; CONST FLT_OPERATION—REGISTRATION ^OperationRegistration; PFLT_FILTER_UNLOAD_CALLBACK FiIterUnloadCal!back; PFLT_INSTANCE_SETUP_CALLBACK InstanceSetupCal!back; PFLT_INSTANCE_QUERY_TEARDOWN_CALLBACK InstanceQueryTeardownCal!back;
PFLT_INSTANCE_TEARDOWN_CALLBACK InstanceTeardownStartCal!back; PFLT_INSTANCE_TEARDOWN_CALLBACK InstanceTeardownCompleteCallback; PFLT_GENERATE_FILE_NAME GenerateFileNameCal!back; PFLT_NORMALIZE_NAME_COMPONENT NormalizeNameComponentCal!back; PFLT_NORMALIZE_CONTEXT_CLEANUP NormalizeContextCleanupCal!back;
} FLT_REGISTRATION, * PFLT_REGISTRATION第一個域的Size表示FLT_REGISTRATION結(jié)構(gòu)的大小。第二個域Version是版本號,對于此域,直接按照慣例填寫FLT_REGISTRATION_ VERSION。第三個域Flags是標(biāo)志位,標(biāo)記是否要收到這類的操作。有兩種設(shè)法一種設(shè)法是NULL,不齊任何作用;另一種設(shè)法則設(shè)置為FLTFL_REGISTRATION_DO_ NOT_SUPPORT_SERVICE_STOP,代表當(dāng)停止服務(wù)時Minifilter不會影響且不會調(diào)用 FilterUnloadCallback,即使 FiIterUnloadCalIback 并不是 NULL。第四個域ContextRegistration 上下文注冊,注冊處理上下文的函數(shù)。第五個域是OoerationRegistration 操作回調(diào)函數(shù)集注冊。我們將要過濾的文件操作回調(diào)函數(shù)寫在其中,可以定義所有功能代碼對應(yīng)的回調(diào)函數(shù)。注冊時用到下面的結(jié)構(gòu)體
typedef struct _FLT_OPERATION_REGISTRATION{ UCHAR MajorFunction; FLT_OPERATI0N_REGISTRATI0N_FLAGS Flags; PFLT_PRE_OPERATION一CALLBACK PreOperation;PFLT_P0ST_0PERATI0N_CALLBACK PostOperation; PVOID Reservedl;
}FLT_0PERAT10N_REGISTRATION, *PFLT_OPERATION_REGISTRATION;MaiorFunction域說明要處理的I/O操作,它不能為空。Flags是標(biāo)志位。它有三種寫法第一種是些0,這個標(biāo)志僅僅對讀寫調(diào)用有用;
第二種是寫 FLTFL_0PERATI0N_REGISTRATI0N_SKIP_CACHED_I0,表示不過濾緩沖讀寫請求;
第三種是FLTFL_0PERATI0N_REGISTRATI0N_SKIP_PAGING_I0,表示不過濾分頁讀寫請求。接
下來的兩個域是預(yù)操作回調(diào)函數(shù)和后操作回調(diào)函數(shù)。Reservedl是為系統(tǒng)使用,必須設(shè)置為NULL。1)微文件系統(tǒng)過濾的注冊注冊是向過濾管理器宣告過濾器的存在,注冊一股是在驅(qū)動程序的入口函數(shù)
DriverEntry中執(zhí)行,步驟如下圖5所示在FltRegisterFilter注冊函數(shù)中設(shè)定我們需要處理的各種IRP操作,具體結(jié)構(gòu)
如上面的數(shù)據(jù)結(jié)構(gòu)介紹。FltCreateCommunicationPort 函數(shù)原型如下
NTSTATUS
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 );里面有三個回調(diào)函數(shù),用于與應(yīng)用層通信,如下表1所示
ConnectNotifyCallback是用戶態(tài)與內(nèi)核態(tài)建立連接時會調(diào)用的函數(shù)DisconnectNotifyCallback是用戶態(tài)與內(nèi)核態(tài)連接結(jié)束時會調(diào)用的函數(shù)MessageNotifyCallback是用戶態(tài)與內(nèi)核態(tài)傳遞數(shù)據(jù)時會調(diào)用的函數(shù)表1微文件系統(tǒng)過濾注冊回調(diào)函數(shù)說明表2)文件名獲取獲取文件名一般在IRP_MJ_CREATE的后操作回調(diào)函數(shù)中進(jìn)行,它是在打開文件時首先執(zhí)行的過程。調(diào)用FltGetFileNamehformation獲取一個文件的文件名信息的結(jié)構(gòu)。 而在該函數(shù)中根據(jù)需求的不同可以獲取三種文件名信息,函數(shù)原型中的NameOptions值如下所示> FLT_FILE_NAME_NORMALIZED 請求路徑全名,包括卷名。所有的短名被擴(kuò)展成長名。任何流名組件會去掉后邊的“$DATA”。如果這是一個目錄名,且不是根目錄,最后的 “\”,會被去掉。> FLT_FILE_NAME_OPENED 包含全路徑,包括卷名。但是這個名字和打開這個對象所用的名字相同。因此可能包含一些短名。> FLT_FILE_NAME_SHORT 僅僅含有路徑中最后一個元素的短名,不會包含全路徑名。這該程序中我們需要把他設(shè)置成FLT_FILE_NAME_NORMALUED。3)刷新進(jìn)程信息列表在MessageNotifyCallback這個回調(diào)函數(shù)中,根據(jù)應(yīng)用層傳遞的消息碼可以處理刷新進(jìn)程列表,應(yīng)用層通過自定義結(jié)構(gòu)體的形式傳遞數(shù)據(jù)內(nèi)容,它包括進(jìn)程名,進(jìn)程ID,進(jìn)程是否還存在的標(biāo)志,是否設(shè)為監(jiān)視進(jìn)程等信息,在驅(qū)動層里有一鏈表結(jié)構(gòu),每當(dāng)收到該消息時,根據(jù)進(jìn)程ID會逐個的在鏈表中檢查每個進(jìn)程信息,若該鏈表中不存在該進(jìn)程就把該進(jìn)程信息加入到鏈表節(jié)點中;若是有,則比較進(jìn)程是否存在標(biāo)志,若是FALSE說明該進(jìn)程已經(jīng)不存在,從鏈表中把該節(jié)點刪除。4)如何判斷該進(jìn)程是機(jī)密進(jìn)程應(yīng)用程序在傳遞數(shù)據(jù)信息的時,每隔一段時間就會刷新進(jìn)程列表,并把其信息存儲在一個結(jié)構(gòu)體中,并把指定的進(jìn)程標(biāo)志為加密進(jìn)程,用一個BOOLEAN型變量來表示,在把結(jié)構(gòu)體信息傳到驅(qū)動程序里面。而驅(qū)動里面也有一個同樣的結(jié)構(gòu)體,用鏈表的形式把每個進(jìn)程的信息表示為一個節(jié)點連接起來,存儲所有進(jìn)程的信息。首先調(diào)用I^sGetCurrentProcessId獲取當(dāng)前進(jìn)程的ID號,然后在進(jìn)程鏈表中查找該ID,找到后在根據(jù)節(jié)點中的機(jī)密進(jìn)程標(biāo)識符號就可以知道是否是機(jī)密進(jìn)程。5)如何判斷文件加密信息實現(xiàn)過濾驅(qū)動文件系統(tǒng)加密的一個難點就是如何判斷該文件是否已經(jīng)加密了。本系統(tǒng)采用了一種簡單的方式,創(chuàng)建一個文件加密標(biāo)識結(jié)構(gòu)體,在加密文件的文件頭部都填充同樣內(nèi)容的結(jié)構(gòu),這樣首先讀取文件頭的部分內(nèi)容和其比較就可以判斷文件是否是已經(jīng)加密的了,若相同說明是加密的文件,不同說明是沒有加密的文件。6)創(chuàng)建自己的輸入輸出請求包在創(chuàng)建自己的輸入輸出請求包請求時,只有此過濾器以下的過濾器才能收到這些 1/0請求,具體執(zhí)行過程如下圖6所示應(yīng)用層程序打開并讀取文件時,在驅(qū)動層的IRP_MJ_CREATE的后操作處理函數(shù)中應(yīng)用自定義輸入輸出請求包讀取標(biāo)志信息結(jié)構(gòu)體大小的數(shù)據(jù)。
權(quán)利要求
1.一種文件系統(tǒng)過濾驅(qū)動加密實現(xiàn)方法,其特征在于該加密方法具體實現(xiàn)步驟如下 第一步,驅(qū)動程序啟動后,首先在打開文件操作返回給應(yīng)用程序時獲取文件名和文件大小,第二步,隨后判斷打開文件的進(jìn)程是否是機(jī)密進(jìn)程打開,如果是機(jī)密進(jìn)程,那么此時進(jìn)一步判斷文件的大小是否是零,若文件的大小是零,且要執(zhí)行寫操作,則首先寫入加密標(biāo)識頭部,第三步,如果文件的大小大于加密標(biāo)識結(jié)構(gòu)體大小,先從文件頭部中讀取同樣大小的信息與加密標(biāo)識結(jié)構(gòu)體信息進(jìn)行比較,相同說明是加密文件;如果文件小于加密標(biāo)識結(jié)構(gòu)體,則不做處理,第四步,在讀取文件時,若是已經(jīng)加密的文件,首先進(jìn)行解密操作,在返回給應(yīng)用程序, 在寫操作時,首先判斷該文件原先是否是加密文件,如果是,進(jìn)行加密處理后存儲到磁盤文件中,如果不是,則不進(jìn)行加密處理,直接存儲到磁盤文件上。
2.根據(jù)權(quán)利要求1所述的文件系統(tǒng)過濾驅(qū)動加密實現(xiàn)方法,其特征在于第三步所述的先從文件頭部中讀取同樣大小的信息與加密標(biāo)識結(jié)構(gòu)體信息進(jìn)行比較,具體實現(xiàn)方法是根據(jù)自定義的加密標(biāo)識結(jié)構(gòu)體的大小,從文件頭部中讀取同樣大小的內(nèi)容,并將它強(qiáng)制轉(zhuǎn)換成加密標(biāo)識結(jié)構(gòu)體類型,然后把讀取的內(nèi)容與加密標(biāo)識結(jié)構(gòu)體信息逐個字節(jié)比較。
全文摘要
本發(fā)明是一種文件系統(tǒng)過濾驅(qū)動加密實現(xiàn)方法,該加密方法具體實現(xiàn)步驟如下第一步,驅(qū)動程序啟動后,首先在打開文件操作返回給應(yīng)用程序時獲取文件名和文件大小,第二步,隨后判斷打開文件的進(jìn)程是否是機(jī)密進(jìn)程打開,第三步,如果文件的大小大于加密標(biāo)識結(jié)構(gòu)體大小,先從文件頭部中讀取同樣大小的信息與加密標(biāo)識結(jié)構(gòu)體信息進(jìn)行比較,第四步,在讀取文件時,若是已經(jīng)加密的文件,首先進(jìn)行解密操作,在返回給應(yīng)用程序,在寫操作時,首先判斷該文件原先是否是加密文件,如果是,進(jìn)行加密處理后存儲到磁盤文件中,如果不是,則不進(jìn)行加密處理,直接存儲到磁盤文件上。與傳統(tǒng)型的文件過濾驅(qū)動相比,微軟的內(nèi)核開發(fā)者開發(fā)出了一個新的驅(qū)動,稱為過濾管理器。
文檔編號G06F21/00GK102567670SQ201110447650
公開日2012年7月11日 申請日期2011年12月28日 優(yōu)先權(quán)日2011年12月28日
發(fā)明者孫力娟, 張偉, 李紳, 李鵬, 王汝傳, 肖甫, 黃海平 申請人:南京郵電大學(xué)