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