1.動態加密
動態加密(也稱實時加密,透明加密等,其英文名為encrypt on-the-fly),是指數據在使用過程中自動對數據進行加密或解密操作,無需用戶的干預,合法用戶在使用加密的檔案前,也不需要進行解密操作即可使用,表面看來,訪問加密的檔案和訪問未加密的檔案基本相同,對合法用戶來說,這些加密檔案是“透明的”,即好像沒有加密一樣,但對於沒有訪問許可權的用戶,即使通過其它非常規手段得到了這些檔案,由於檔案是加密的,因此也無法使用。由於動態加密技術不僅不改變用戶的使用習慣,而且無需用戶太多的干預操作即可實現文檔的安全,因而近年來得到了廣泛的套用。
2.動態加密實現的層次級別
在不同的操作系中(如WINDOWS、LINUX、UNIX等),雖然數據的具體組織和存儲結構會有所不同,但它們均可用圖1的模型進行表示,即應用程式在訪問存儲設備數據時,一般都通過作業系統提供的API 調用檔案系統,然後檔案系統通過存儲介質的驅動程式訪問具體的存儲介質。其中層次I和II屬於套用層;層次III和IV屬於作業系統核心層。這種組織結構決定了加密系統的實現方式,在數據從存儲介質到應用程式所經過的每個路徑中,均可對訪問的數據實施加密/解密操作,其中模型中的層次I只能捕獲應用程式自身讀寫的數據,其他應用程式的數據不經過該層,因此,在層次I中只能實現靜態加密,無法實現動態加密;即使是層次II,也並不是所有檔案數據均通過該層,但在該層可以攔截到各種檔案的打開、關閉等操作。因此,在套用層實現的動態加解密產品無法真正做到“實時”加密/解密操作,一般只能通過其他變相的方式進行實現(一般均在層次II進行實現)。例如,在應用程式打開檔案時,先直接解密整個檔案或解密整個檔案到其他路徑,然後讓應用程式直接(重定向)訪問這個完全解密的檔案,而在應用程式關閉這個檔案時,再將已解密的檔案進行加密。其實質是靜態加解密過程的自動化,並不屬於嚴格意義上的動態加密。
由於目前的作業系統,如Windows/Linux/Unix等,只有在核心層才能攔截到各種檔案或磁碟操作,因此,真正的動態加解密產品只能在核心層進行實現。在圖1給出的模型中,在核心層中的檔案系統可以攔截到所有的檔案操作,但並不能攔截到所有的存儲設備(在下面的敘述中,我們一般用磁碟來表示存儲設備)操作,要攔截所有的存儲設備操作,必須在存儲設備驅動程式中進行攔截,作業系統的對存儲設備的訪問形式決定了動態加解密安全產品的兩大種類:基於檔案級的動態加解密產品和基於磁碟級的動態加解密產品。
3.檔案級動態加解密技術
在檔案系統層,不僅能夠獲得檔案的各種信息,而且能夠獲得訪問這些檔案的進程信息和用戶信息等,因此,可以研製出功能非常強大的文檔安全產品。就動態加解密產品而言,有些檔案系統自身就支持檔案的動態加解密,如Windows系統中的NTFS檔案系統,其本身就提供了EFS(Encryption File System)支持,但作為一種通用的系統,雖然提供了細粒度的控制能力(如可以控制到每個檔案),但在實際套用中,其加密對象一般以分區或目錄為單位,難以做到滿足各種用戶個性化的要求,如自動加密某些類型檔案等。雖然有某些不足,但支持動態加密的檔案系統在某種程度上可以提供和磁碟級加密技術相匹敵的安全性。由於檔案系統提供的動態加密技術難以滿足用戶的個性化需求,因此,為第三方提供動態加解密安全產品提供了足夠的空間。
要研發在檔案級的動態加解密安全產品,雖然與具體的作業系統有關,但仍有多種方法可供選擇,一般可通過Hook或過濾驅動等方式嵌入到檔案系統中,使其成為檔案系統的一部分,從某種意義上來說,第三方的動態加解密產品可以看作是檔案系統的一個功能擴展,這種擴展往往以模組化的形式出現,能夠根據需要進行掛接或卸載,從而能夠滿足用戶的各種需求,這是作為檔案系統內嵌的動態加密系統難以做到的。
下面我們以億賽通公司的SmartSec為例,分析一下檔案動態加解密的具體實現方式。圖2給出了SmartSec的實現原理,從中可以看出,SmartSec的動態加解密是以檔案過濾驅動程式的方式進行實現的(位於層次III),同時在套用層(層次II)和核心層(層次III)均提供訪問控制功能,除此之外,還提供了日誌和程式行為控制等功能,這種通過套用層和核心層相互配合的實現方式,不僅能提供更高的安全性,而且有助於降低安全系統對系統性能的影響。
4.磁碟級動態加解密技術
對於信息安全要求比較高的用戶來說,檔案級加密是難以滿足要求的。例如,在Windows系統中(在其它作業系統中也基本類似),我們在訪問檔案時,會產生各種臨時檔案,雖然這些臨時檔案在大多數情況下,會被應用程式自動刪除,但某些情況下,會出現漏刪的情況,即使臨時檔案被刪除,但仍然可以通過各種數據恢復軟體將其進行恢復,在實際套用中,這些臨時檔案一般不會被加密,從而成為信息泄密的一個重要渠道。更進一步,即使將臨時檔案也進行了加密處理,但系統的頁面交換檔案等(如Windows的pagefile.sys等,除檔案系統內嵌的加密方式外,第三方動態加解密產品一般不能對系統檔案進行加密,否則會引起系統無法啟動等故障)也會保留用戶訪問檔案的某些信息,從而引起信息的泄密。
有一種方式可以避免上述提到的各種漏洞,那就是將存儲設備上包括作業系統在內的所有數據全部加密,要達到這個目的,只有基於磁碟級的動態加解密技術才能滿足要求。靜態加密技術在這種情況下,一般無法使用,這是因為作業系統被加了密,要啟動系統,必須先解密作業系統才能啟動,如果採用靜態加解密方式,只能在每次關機後將磁碟上的所有數據進行加密,在需要啟動時再解密磁碟上的所有數據(至少也得解密所有的作業系統檔案,否則系統無法啟動),由於作業系統占用的空間越來越大,這個過程所需要的時間是難以忍受的。
與靜態方式不同,在系統啟動時,動態加解密系統實時解密硬碟的數據,系統讀取什麼數據,就直接在記憶體中解密數據,然後將解密後的數據提交給作業系統即可,對系統性能的影響僅與採用的加解密算法的速度有關,對系統性能的影響也非常有限,這類產品對系統性能總體的影響一般不超過10%(取目前市場上同類產品性能指標的最大值)。圖3給出了億賽通公司基於磁碟級動態加解密的安全產品DiskSec的實現原理,從中可以看出,DiskSec的動態加解密算法位於作業系統的底層,作業系統的所有磁碟操作均通過DiskSec進行,當系統向磁碟上寫入數據時,DiskSec首先加密要寫入的數據,然後再寫入磁碟;反之,當系統讀取磁碟數據時,DiskSec會自動將讀取到的數據進行解密,然後再提交給操作系,因此,加密的磁碟數據對作業系統是透明的,也就是說,在作業系統看來,磁碟上的加密數據和未加密的狀態是一樣的。
5.檔案級和磁碟級動態加密的比較
這兩類加密方法均有各自的優點和缺點,磁碟級加密與檔案級加密方式相比,主要優點是:加密強度高,安全性好。
由於這一級別的加密方式直接對磁碟物理扇區進行加密,不考慮檔案等存儲數據的邏輯概念,在這種加密方式下,任何存儲在磁碟上的數據均是加密的,相反,採用檔案級的加密方式一般只對用戶指定的某些檔案進行加密,而這些檔案在用戶日常使用中,由於臨時檔案等均會帶來安全隱患。因此,採用磁碟級的加密方式要較檔案級的加密方式安全。
磁碟級加密的主要缺點是:不夠靈活方便,適用面比較窄。
與檔案級的加密方式不同,由於磁碟級的加密方式沒有檔案、目錄等概念,難以對指定的檔案或目錄進行加密、隱藏等操作,反之,檔案級的加密方式可以採用各種靈活的加密手段,能夠做到更細粒度的控制,用戶不僅可以指定要加密的檔案類型或目錄,同時也可以隱藏某些目錄等。