王永龍
檔案透明加解密是最近幾年發展出來的一種檔案加解密技術。所謂透明,是指在加解密的時候,使用者是完全感覺不到的,作為使用者,開啟檔案,關閉檔案,讀寫檔案都跟正常的無異,但實際上系統在底層處理的時候,已經做了加解密的處理,在使用者讀取檔案時,系統將檔案解密後放入記憶體中供使用者使用,使用者檔案儲存時,系統將檔案加密並最終寫入磁碟。以windows系統為例,所有這些操作都是在windows的核心層完成,也就是所說的ring 0層完成。
由於windows系統的核心屬於類微核心,不同模組之間具有層次性,因此在實現檔案透明加解密的時候,有幾種不同的實現方法。在windows核心中,除了系統排程等實現以外,重要的乙個大的部分是驅動。windows的驅動是分層的,所以在層與層之間,可以加入我們自己的過濾驅動以達到檔案透明加解密的目的。
乙個檔案最終總是儲存在磁碟上的,磁碟負責二進位制的資料流的讀寫,然後再磁碟上,有捲的概念,也就是俗稱的分割槽,在每乙個卷上面,還有檔案系統的存在。因此對應於檔案加密,我們自己設計的過濾驅動可以分為磁碟過濾驅動、卷過濾驅動、檔案系統過濾驅動三個層次。都是通過對磁碟驅動過濾、卷驅動過濾和檔案系統過濾實現的。這三種驅動在windows系統裡面,磁碟為最底層,其次是卷,最上層是檔案系統。
1、磁碟過濾驅動。是對應於整個磁碟來說的加密,主要是在資料流讀寫的過程中完成加解密的過程,這種方法簡單粗暴,但速度快,效率高,缺點是全盤加密,對於客戶來說,實際上是複雜了。磁碟整體加密之後,如果是系統盤,那麼則要在磁碟讀取系統載入資訊之前就要進行解密處理,這塊兒也是比較複雜的地方之一。如果密碼丟失那麼磁碟相當於完全資料的丟失了。磁碟過濾加密驅動適合保護移動磁碟,電腦硬碟在丟失的情況下的保護。磁碟載入成功後,磁碟上的檔案不能防止第三方的程式的讀取,也就無法保護該資料通過木馬等程式洩露出去。
2、卷過濾驅動。是對乙個分割槽的加密,這種驅動是通過卷驅動的過濾實現的。比如著名的開源加密軟體truecrypt其中乙個重要的功能就是建立乙個卷並加密之。卷加密的處理比磁碟簡單一些,而且對於使用者來說,需要加密的檔案只要放在該分割槽就實現了加密儲存,系統在載入該卷時,需要輸入密碼才能正常載入,達到透明使用的目的。卷加密也是適合加密分割槽,同樣的缺點跟1是一樣的。就是檔案雖然在磁碟本質上是加過密的,但是一旦載入了卷以後,檔案在應用層都是透明的,此時拷貝傳輸等都可以將檔案洩露出去,這種方式適合保護行動硬碟或者硬碟在不載入加密卷的情況下的資料保護(比如丟失了膝上型電腦等狀況)。
3、檔案系統過濾驅動。這是最複雜的一種加解密驅動。但是最為靈活,如果實現的完善和巧妙的話,使用者可以指定對某乙個目錄進行加密,這種方式比較靈活,但實現檔案系統過濾驅動仍然是最為費神的透明加解密方式。從速度上來說,這種方式雖然靈活,但會犧牲一些速度。如果對於目錄進行加解密,那麼過濾驅動就要針對目錄進行過濾,增加分析判斷的處理。檔案系統的透明加解密能夠處理更加複雜的情況,適合目錄加密、檔案加密,防止檔案拷貝等方式洩露檔案等。
綜合分析,在實現層次上,檔案系統過濾驅動比較靈活,客戶的接受程度高,但實現代價最高,也最複雜,而且速度上不佔優勢。卷驅動適合對於電腦系統有一定了解的使用者使用,這種方式效率得到保證,而且可以實現檔案方式的磁碟(file disk),可以靈活的在磁碟卷型別或者檔案卷型別上進行選擇。而且可以自由的選擇是否載入加密卷還是不載入、可以自由選擇何時載入或解除安裝。最需要謹慎處理的是磁碟加密方式,如果使用不當,該磁碟相當於格式化了。對於不需要那種嚴格的資料安全的使用者來說,不建議使用。值得推薦的是軟體是truecrypt,它實現了磁碟過濾驅動和卷過濾驅動兩種方式。還支援建立載入卷檔案的方式來使用。
補充說明:
以上還未談到檔案透明加密後的使用情況。就加密效果而言,truecrypt的卷加密和win7提供的bitlocker的效果是一樣的,在載入了加密卷之後,卷(分割槽)上的檔案在使用者層便是跟沒有加密的是一樣的了,因為這倆者實現加密的方法都是採用卷驅動的過濾加密,這是乙個相當的底層加密方法。假如對檔案系統層進行過濾加密,假設在檔案系統層之上進行過濾的話,有可能達到一種效果,便是本地開啟檔案,則解密之,如果是拷貝或者網路傳輸的話,可能對方收到的檔案就是加密的了,這種方法,可以有效的防止本地檔案的洩密。也就是說員工即使拷貝了工作電腦上的檔案帶走或者通過網路傳送給其他人員,那麼最終的結果就是該檔案無法在非工作機器上開啟,這樣能有效的防止檔案洩密,又不會妨礙員工使用u盤或者上網。
檔案過濾驅動,如何動態透明加解密?
檔案過濾驅動是微軟公開支援進行檔案加密的技術手段,在驅動的層次定義中,微軟定義了防毒 壓縮 加密等各種功能層次,加密的定義如下 load order group fsfilter encryption altitude range 140000 149999 由於檔案過濾驅動處於驅動層面 不像api...
檔案加解密
建立debuglzq 密碼 加密物件 private static symmetricalgorithm createrijndael string password,byte salt 加密檔案隨機數生成 private static randomnumbergenerator rand new ...
檔案加解密 解密版
include stdafx.h include des.h define crt secure no warnings include include include pragma warning disable 4996 int filesymenc const char pfile1,cons...