透明加密技術是近年來針對企業文件保密需求應運而生的一種文件加密技術。所謂透明,是指對使用者來說是未知的。當使用者在打開或編輯指定文件時,系統將自動對未加密的文件進行加密,對已加密的文件自動解密。文件在硬盤上是密文,在內存中是明文。一旦離開使用環境,由于應用程序無法得到自動解密的服務而無法打開,從而起來保護文件內容的效果。
透明加密有以下特點:
強制加密:安裝系統后,所有指定類型文件都是強制加密的;
使用方便:不影響原有操作習慣,不需要限止端口;
于內無礙:內部交流時不需要作任何處理便能交流;
對外受阻:一旦文件離開使用環境,文件將自動失效,從而保護知識產權。
透明加密技術原理
透明加密技術是與Windows緊密結合的一種技術,它工作于Windows的底層。通過監控應用程序對文件的操作,在打開文件時自動對密文進行解密,在寫文件時自動將內存中的明文加密寫入存儲介質。從而保證存儲介質上的文件始終處于加密狀態。
監控Windows打開(讀)、保存(寫)可以在Windows操作文件的幾個層面上進行。現有的32位CPU定義了4種(0~3)特權級別,或稱環(ring),如圖1所示。其中0級為特權級,3級是最低級(用戶級)。運行在0級的代碼又稱內核模式,3級的為用戶模式。常用的應用程序都是運行在用戶模式下,用戶級程序無權直接訪問內核級的對象,需要通過API函數來訪問內核級的代碼,從而達到最終操作存儲在各種介質上文件的目的。
為了實現透明加密的目的,透明加密技術必須在程序讀寫文件時改變程序的讀寫方式。使密文在讀入內存時程序能夠識別,而在保存時又要將明文轉換成密文。Window允許編程者在內核級和用戶級對文件的讀寫進行操作。內核級提供了虛擬驅動的方式,用戶級提供HookAPI的方式。因此,透明加密技術也分為APIHOOK技術和VDM(WindowsDriver Model)內核設備驅動方式兩種技術。APIHOOK俗稱鉤子技術,VDM俗稱驅動技術。
鉤子透明加密技術簡介
所有Windosw應用程序都是通過WindowsAPI函數對文件進行讀寫的。程序在打開或新建一個文件時,一般要調用Windows的CreateFile、OpenFile或ReadFile等WindowsAPI函數;而在向磁盤寫文件時要調用WriteFile函數。
同時Windows支持這樣一種消息處理機制:允許應用程序將自己安裝一個子程序到其它的程序中,以監視指定窗口某種類型的消息。當消息到達后,先處理安裝的子程序后再處理原程序。這就是鉤子(Hook)技術。
鉤子透明加密技術就是將上述兩種技術組合而成的。通過Windows的鉤子技術,監控應用程序對文件的打開和保存,當打開文件時,先將密文轉換后再讓程序讀入內存,保證程序讀到的是明文,而在保存時,又將內存中的明文加密后再寫入到磁盤中。其工作原理如圖2所示。
鉤子透明加密技術通過監控應用程序的讀寫操作,同時對文件進行自動加密與解密。由于不同應用程序在讀寫文件時所用的方式方法不盡相同,同一個軟件不同的版本在處理數據時也有變化,鉤子透明加密必須針對每種應用程序或程序的每個版本進行配置。
驅動透明加密技術簡介
驅動加密技術基于Windows的文件系統(過濾)驅動(IFS)技術,工作在Windows的內核層。我們在安裝計算機硬件時,經常要安裝其驅動,如打印機、U盤的驅動。文件系統驅動就是把文件作為一種設備來處理的一種虛擬驅動。當應用程序對某種后綴文件進行操作時,文件驅動會監控到程序的操作,并改變其操作方式,從而達到透明加密的效果。
驅動加密技術與應用程序無關,其工作于WindowsAPI函數的下層。當API函數對指定類型文件進行讀操作時,系統自動將文件解密;當進入寫操作時,自動將明文進行加密。由于工作在受Windows保護的內核層,運行速度更快,加解密操作更穩定。因與系統內核關聯較密切,系統內核的任何變化(如系統更新、補丁安裝后)均會對驅動透明加密造成影響,因此驅動透明加密必須對操作系統的每個SP版本進行開發。
驅動透明加密要達到文件保密的目的,還必須與用戶層的應用程序打交道。通知系統哪些程序是合法的程序,哪些程序是非法的程序。其系統配置方面的易用性不如鉤子透明加密。
驅動透明加密工作在內核層,但其無法進行靈活的權限控制應用,權限控制應用必須在應用層完成。其工作原理如圖3所示。
驅動加密技術雖然控制層次較深,但由于涉及到Windows底層的諸多處理,開發難度較大。如果處理不好與其它驅動的沖突,應用程序白名單等問題,將難以成為一個好的透明加密產品。
兩種加密
技術比較兩種加密技術由于工作在不同的層面,從應用效果、開發難度上各有特點。下表從幾個方面進行了簡單比較。
比較項目 | 鉤子透明加密 | 驅動透明加密 |
工作層面 | 應用層 | 內核層 |
工作方式 | Hook應用程序和文件類型 | 接受系統IRP進行處理 |
應用程序關聯性 | 基于系統API的變化而改動,和應用程序處理方式無關 | 與程序工作方式無關,但要監控應用程序名單,這時需要用到應用層技術 |
加解密可靠性 | 應用層加解密,大文件(32位系統下超過2G)操作時速度較慢 | 內核層加解密,在32位系統下處理大文件速度較快 |
網絡操作能力 | 不受限制 | 需要專門處理 |
開發難度 | Hook技術,相對較易 | 驅動技術,開發難度較大,只有專業的人員可以維護 |
系統維護 | 企業維護工作量較小 | 企業維護工作量較大,需專業人員維護 |
容災性 | 出現bug時,不會影響系統核心,僅影響當前處理的應用程序。 | 出現bug時,會出現不可預知的錯誤,可能導致整個系統崩潰(藍屏),或者磁盤系統破壞 |
兼容性 | 操作系統升級時,不需要做太多的更改 | 驅動和操作系統的兼容性較差 |
綜上所述,
鉤子透明加密技術開發和應用難度較小,系統維護較容易,運行過程中即使出現Bug也不會影響整個操作系統運行;但其存在技術缺陷,可被反Hook技術所破解。驅動透明加密技術開發難度較大,維護工作量也較大,因其工作于操作系統內核層,在運行過程中易影響整個客戶端系統運行,且帶來數據災難。