實時加解密

實時加解密

實時加解密(Real Time Encryption/Decryption)是一種檔案加密、解密技術。這種技術能夠在用戶的正常工件中對數據的加解密需求進行實時處理,沒有顯示的加解密過程,也不產生臨時檔案。實時加解密技術在提供用戶透明操作體驗的同時避免了數據在存儲介質上反覆加解密的過程,解決了傳統加解密技術操作繁雜、效率低下的問題。

實時加解密技術概述

實時加解密技術(Real Time Encryption/Decryption)是上世紀末開始出現的的一種檔案加密技術。這種技術在用戶的正常工件中對數據的加解密需求進行實時處理,沒有顯式的加解密過程,也不產生臨時檔案。國外早期文獻中也稱為“On the Fly Encryption/Decryption”,意指其數據“不落地”,是相對傳統加密檔案必須解密成磁碟上的明文檔案才能使用來說的。
上世紀九十年代末,微軟公司(Microsoft)推出了劃時代的Windows 2000作業系統,Windows 2000不但淘汰了之前取得巨大成功的Windows 95/98系統,也進一步鞏固了Windows作業系統在PC機上的絕對統治地位。基於NT核心的Windows 2000引領PC機真正進入了32位時代。此後的Windows XP、2003 Server、Vista以及最近的Windows 7作業系統都是基於NT核心。NT核心的作業系統擁有規範的擴展開發層次架構,並引入了過濾驅動的概念,這為作業系統的第三方擴展提供了標準接口。
檔案是作業系統管理數據的唯一方式,因此檔案系統是任何作業系統的重要組成部分,作業系統和套用軟體的數據維護都離不開檔案系統。Windows 特別為檔案系統擴展定義了不同用途的接口以及多個擴展並存時的優先權關係,這種標準為同樣採用檔案系統擴展技術的不同軟體的兼容並存提供了保障(也有些採用這種擴展技術的軟體與其它同類軟體衝突,主要是沒有遵守優先權規範,請參考“檔案系統過濾驅動的優先權關係”)。
檔案系統的擴展技術首先被反病毒軟體採用,今天我們熟悉的反病毒軟體的實時監控技術就是採用這一技術的成果。通過檔案系統擴展監視檔案系統的活動,實時掃描正在操作的檔案,發現病毒時進行查殺,這就是反病毒軟體實時監控技術的原理。實時加解密技術也採用了類似的原理,只不過實時加解密技術有更高的要求,對數據的處理必須真正做到“實時”,因為上層套用請求的數據依賴於實時加解密處理的結果。而反病毒軟體的實時掃描並不需要為上層套用提供數據,其行為是獨立的,延遲處理或忽略部分檔案系統事件一般不影響病毒實時監控。
採用檔案系統擴展技術可以不影響前台用戶的前提下提供軟體需要實現的功能,因此成熟的商用工具軟體大量採用的檔案系統擴展技術。除各種反病毒軟體外,實時備份軟體、磁碟壓縮軟體、檔案活動監視軟體、系統還原軟體、虛擬磁碟軟體、Direct CD形式的刻錄軟體等大都採用了這項技術以提高軟體運行效率和提供用戶透明操作體驗。實時加解密技術在提供用戶透明操作體驗的同時避免了數據在存儲介質上反覆加解密的過程,解決了傳統加解密技術操作繁雜、效率低下的問題,把加密技術的實用性向前推進了一大步。

實時加解密技術的特點和優勢

完全透明的用戶體驗

用戶在使用基於實時加解密技術的加密檔案時與一般的明文檔案感覺上沒有任何區別,這種檔案加密後在使用上與非加密檔案完全相同的用戶體驗稱為“透明”。透明用戶體驗意味著使用者不需要因為使用保密系統而改變他們即有的操作方式和使用習慣。由於加解密工作是全自動按需進行,因此實時加解密技術在處理加密檔案時也不需要使用者做任何配合性的額外工作。這些特點使實時加解密技術在實現檔案加密的同時幾乎不降低任何人工效率。

傳統加密技術下的加密檔案使用流程傳統加密技術下的加密檔案使用流程
傳統加密技術加密的檔案必須先解密後才能使用。按照保密規範,在查看一個加密檔案時,必須經過解密成明文->查看明文->刪除明文的過程。如果需要修改一個加密檔案,則需要經過解密->修改->保存->加密的過程。這些操作中有一半以上步驟是因為檔案加密而造成的額外工作。而在實時加解密技術系統中,透明用戶體驗沒有解密過程,加密檔案可以直接查看或修改;同樣因為磁碟檔案實際並沒有解密成明文,也就沒有刪除明文或再次加密的步驟了。
實時加解密技術下加密檔案的使用流程實時加解密技術下加密檔案的使用流程
加密檔案不會因為使用而被解密

實時加解密技術在使用加密檔案時沒有在存儲器上的解密過程,因此存儲器上的加密檔案是不會因為使用而被解密的,即使操作者當前正在使用中的檔案也不會有明文數據在存儲器上存在,這種特點相對傳統加密技術具有更高的安全性。傳統加密技術由於加密檔案在使用時解密成為明文檔案,因此在使用時沒有任何防護,最容易受到攻擊造成泄密。

不增加輸入輸出數據量

傳統加密技術不管應用程式需要使用檔案中的多少數據總是先一股腦把整個檔案解密。實時加解密技術在應用程式請求加密檔案數據時並不解密整個加密檔案,而是按需解密,僅向應用程式提供即時運行所需的明文數據。應用程式運行時的數據請求往往是隨機的數據片斷,這就要求實時加解密技術必須支持對加密檔案任意位置任意長度的密文數據隨機加解密。因此,從理論上講,實時加解密技術這種按需加解密的方式不會增加存儲器輸入輸出的數據量。我們知道,數據輸入輸出是計算機性能的瓶頸,如果在運行中增加了數據輸入輸出,必定會降低計算機的運行效率。

實時加解密技術原理

實時加解密技術類似於一個介於計算機記憶體和永久存儲器(硬碟等存儲裝置)之間的編碼器,其加解密是以管道方式進行的,管道的一端是明文端,連線著應用程式,數據流向應用程式時必須是明文,從而使應用程式獲得正確的運行時數據。管道的另一端是密文端,連線著存儲器。不管數據的流向如何,管道兩端的數據屬性不會改變。

實時加解密技術原理實時加解密技術原理
實時加解密技術把計算機的記憶體與永久存儲器隔離開,保證所有進入永久存儲器的數據都是密文,而進入記憶體的數據都是明文。為什麼採用這種設計呢?我們知道計算機運行的部件是CPU,而CPU能夠操作的數據全部處於記憶體。即使在保護模式CPU可定址的範圍遠大於物理記憶體總量,但當CPU實際存取這個地址的數據時這塊數據必須處於物理記憶體中。因此,即使外部存儲器上的數據是加密的,但只要進入記憶體後被解密成明文,對於計算機來說就和沒有加密的數據是一樣的了。實時加解密就是利用這個原理實現加密數據的透明操作。安全性角度上看,計算機記憶體不是永久存儲器,作業系統的重啟、掉電都會清除記憶體中的數據。另外,計算機記憶體中的數據即使在運行時也是雜亂無章,在作業系統的多任務調度和VMM分頁機制下,即使打開正在使用的加密檔案在記憶體中也難以獲得其完整的明文數據。因此,實時加解密技術的安全性優於傳統加密技術。如果結合主動加密技術,可以限制加密數據不能以任何明形式式流出當前計算機,即使是加密數據的片斷或其轉換後的數據。這就是基於實時加解密和主動加密技術的區域網路防泄密方案原理。

實時加解密技術在Windows平台上的實現

在Windows作業系統中,代碼的運行級別被分為兩個特權級ring0RING3,通常我們把RING3稱為用戶層,RING0稱為核心層。應用程式運行於用戶層,作業系統提供應用程式接口(API)支持各種應用程式的運行。用戶層與核心層數據是隔離的,用戶層不能直接訪問核心層的數據,作業系統通過功能調用實現用戶層和核心層代碼的切換。90%以上的應用程式是不關心這種代碼切換機制的,因為一般應用程式只調用API,從用戶層到核心層的代碼切換是提供API的作業系統組件完成的。日常使用的套用軟體如Office辦公、CAD設計、工程計算、企業ERP、Internet瀏覽/電子郵件等都運行於作業系統的用戶層。用戶層提供了豐富的人機界面和邏輯功能,但用戶層實際上是不和任何計算機硬體打交道的,所有套用軟體邏輯功能的實現最終必須在計算機硬體動作上體現,作業系統在核心層把所有用戶層的邏輯功能轉換成核心層的硬體動作,這通過各種硬體驅動實現。存儲器也是一種硬體設備,為了管理存儲器上存儲的數據,作業系統在存儲器物理驅動之上設計了檔案系統,這通過檔案系統驅動實現,作業系統中的所有的檔案輸入輸出請求最終都會經過檔案系統驅動進入實際的物理存儲器
實時加解密技術必須在應用程式和物理存儲器之間找一個合適的接入位置,從Windows系統的架構上,可以看出有以下幾個位置可以接入,一個是在用戶層的API接口上,一個是核心層的檔案系統與物理存儲器驅動之間,還有一個在物理存儲器驅動與存儲器硬體之間。我們稱第一種為“API攔截”方式,第二種為“檔案系統驅動”方式,第三種為“存儲驅動方式”。下面對這幾種方式作一個比較:
1. 通用性
API攔截方式只能對調用API的用戶層應用程式有效,如果一個應用程式不是以調用一般檔案操作API的方式存取檔案(如以VMM的記憶體映射方式直接讀取或修改檔案),API攔截方式就無效了。Windows作業系統中最經典的記事本(NotePad)程式就是以記憶體映射方式存取檔案的,經常看到一些保密系統可以支持大型軟體的檔案格式,卻不能支持最簡單的TXT文本檔案。這是因為API攔截方式從原理無法支持記憶體映射方式存取檔案。因此API攔截方式只能適用於測試通過的已知軟體。
不管以何種方式存取檔案,作業系統最終都會請求檔案系統驅動執行相應的動作。因此基於檔案系統驅動方式的實時加解密技術支持所有應用程式。而且理論上可以支持運行在這個作業系統下的未知應用程式和將來發布的新應用程式。
存儲驅動方式是檔案系統驅動最後的存儲動作實現者,因此存儲驅動方式與檔案系統驅動方式具有相似的廣泛支持性。
2. 規範性
API攔截方式是一種編程技巧,卻不是公開的編程規範。由於沒有規範,當系統中有兩個以上採用這種技術的軟體存在時常會發生衝突造成應用程式崩潰。而檔案系統驅動和存儲驅動都可以使用標準的作業系統過濾驅動方案,多個採用相同技術的軟體並存時也能協同工作。
3. 性能
API攔截方式處於作業系統的用戶層,作業系統在這一層更多地考慮到應用程式調用的方便性,與驅動層的實際功能並沒有一對一的關係,實際上用戶層的API接口數量遠大於驅動層的功能數量。作業系統一般在檔案系統驅動中對來自用戶層的請求重新最佳化整合,以減少實際的物理存取。作業系統的檔案系統快取技術就是這一最佳化技術的體現。在快取技術的作用下,大部分用戶層的檔案操作並沒有產生真正的物理存儲器動作。如果以API攔截方式實現實時加解密,因為用戶層無法確定一次檔案存取是否會實際產生存儲器動作,就不得不對所有檔案輸入輸出數據請求進行加解密處理。而檔案系統驅動層可以僅處理那些產生存儲器實際輸入輸出的請求。可見支持同樣的檔案實時加解密驅動方式執行的加解密動作次數比API攔截方式要少得多,從而具有更高的性能。
存儲驅動方式與上述兩種加密方案有所不同,API攔截方式和檔案系統驅動方式都可以按需加密檔案,因此可以對系統中的檔案按加密和不加密分別處理,基本可以不影響不加密的檔案的存取性能。而存儲驅動的加密只能對整個存儲器加密,只要使用就會對存儲器的數據一股腦加密,因此在實際套用中損耗會比較大,其加密效果與一些有加密功能的存儲器自身的加密效果相似(如筆記本硬碟的內置加密功能)。硬體存儲器本身的加密效率遠高於軟體驅動的實現,因此在保密系統中單純採用這種方式的不多見,一般以虛擬磁碟分區的方式實現,而不是直接支持現有的物理存儲器。

Windows平台檔案系統層次關係圖Windows平台檔案系統層次關係圖
4. 實現難度
API攔截雖然不是規範的編程方式,擔這項技術早在16位Windows時代就已經成功套用於商業化軟體產品,早期的電子詞典軟體就是使用這項技術實現抓屏。因此API攔截技術的實現並不難。
作業系統驅動編程相對比較困難,無論從設計還是開發階段的調試。能夠進入穩定商用則需要大規模的測試和較長時間的考驗。驅動程式一旦出現錯誤會造成整個作業系統的崩潰,也就是我們常見的“藍屏”。而檔案系統驅動的繁雜性又遠大於存儲驅動,因為檔案系統驅動中有複雜的邏輯數據劃分,而存儲器驅動一般只需要基本的數據輸入輸出。
從兼容性來說,檔案系統驅動卻好於存儲器驅動。作業系統在所有存儲器上載入檔案系統,沒有檔案系統的存儲器不會被作業系統識別,因此一個檔案系統過濾驅動可以支持所有的不同類型的物理存儲器。而存儲器驅動是與物理設備有關的,不同物理存儲器有不同的存儲驅動,必須對不同的存儲器驅動分別處理。支持一個物理存儲器就必須單獨寫一個對應的存儲器過濾驅動,這樣顯然十分麻煩,因此採用這種技術的產品一般都不支持物理存儲器,而是僅支持自己的虛擬驅動器(虛擬區)。
綜上所述,基於檔案系統驅動方式的實時加解密技術具有壓倒性優勢,唯一的問題是實現難度。因此檔案系統驅動方式的實時加解密技術最關鍵的指標是其系統穩定性(驅動程式的健壯性)。

實時加解密技術與透明用戶體驗

有一種說法叫“透明加解密”,這種說法不是太恰當。“透明”實際上是一種用戶體驗,也就是用戶的感覺。實時加解密可以提供透明用戶體驗,反之提供透明用戶體驗的加密系統卻未必就是實時加解密。
怎樣才算是透明用戶體驗?一般認為不改變用戶的操作方式就是透明用戶體驗。對於加密檔案來說就是加密檔案可以直接使用。而直接使用有多種方法,在Windows系統中最常用的就是通過滑鼠雙點擊檔案打開。所以一般加密檔案可以直接雙點擊打開的就被稱為“提供透明用戶體驗”了。
檔案壓縮技術的套用比加密技術要早,我們以壓縮軟體提供的透明用戶體驗來說明各種透明用戶體驗之間的區別。WinRAR是目前套用十分廣泛的壓縮軟體,WinRAR為其壓縮的檔案提供了比較完善的透明用戶體驗,用戶可以通過雙點擊打開壓縮檔案內部的文檔、執行內部的執行檔等。NTFS檔案系統也提供了檔案的壓縮功能,壓縮過的檔案也可以直接使用。這兩者有什麼區別呢?WinRAR在用戶打開壓縮檔內部的一個檔案時實際上是把這個檔案解壓縮到系統的臨時資料夾,然後再打開臨時資料夾中的檔案。而NTFS的壓縮卻是以檔案系統驅動實現的,使用了前文提到的管道原理,沒有中間檔案產生。
有些提供透明用戶體驗的加密技術與WinRAR的處理類似,這種處理就是加密技術中所謂的“殼式加密”,加密時叫“加殼”,解密時叫“脫殼”,提供透明用戶體驗時實際上已經自己“脫殼”了。這種技術實現上仍然屬於傳統加密技術,因為其在使用加密檔案時的操作步驟與傳統加密完全相同,只是解密過程和修改後的加密過程由加密系統在後台自動實現,從而給前台工作的用戶以透明操作體驗。殼式加密的透明用戶操作體驗有一定局限性,因為在使用加密檔案時要完全解密,這在用戶打開檔案時會造成前台應用程式的明顯遲滯感,尤其在檔案很大的時候。

採用殼式加密技術的加透明用戶體驗處理流程採用殼式加密技術的加透明用戶體驗處理流程
前面提到的利用存儲器驅動實現的虛擬磁碟分區加密技術實現的透明用戶體驗則要完善得多,虛擬分區上的數據無論對用戶還是作業系統都是透明的,因為虛擬磁碟完全以一個獨立的存儲器設備出現在作業系統中。這種虛擬磁碟分區的技術最早的套用並不是加密而是映像盤。著名的虛擬光碟機軟體Daemon-Tools就是採用的這種技術。但作為基於存儲器驅動技術的產物,其缺點在前文已做過分析,存儲器驅動上沒有檔案系統的邏輯數據,作業系統在存儲器驅動上載入的檔案系統已經脫離存儲器驅動的控制,因此不能對虛擬磁碟上的檔案作單獨控制和細化區分。另外由於虛擬磁碟沒有能夠做到對物理存儲器的支持,必須把需要加密的數據挪到虛擬分區里才能夠加密,這也限制了虛擬分區所能夠加密的對象必須是孤立的數據檔案。由於其不能支持對除虛擬分區以外的存儲區域數據加密,因此難以基於虛擬磁碟分區技術實現主動加密技術。但因其突出的數據透明性和相對獨立性,比較適合文檔、圖片等私人資料的加密。
基於檔案系統驅動的實時加解密技術不僅實現完全透明的用戶體驗,對作業系統中的任何套用,甚至包括來自核心層的請求其數據都是透明的。檔案系統實時加解密技術加密檔案不改變這個檔案的物理存儲位置,這一點與基於虛擬分區的技術不同。另外其加密的檔案完全融入到原來存儲器的檔案系統中,因此這種技術可以嵌入現有的應用程式,加密應用程式的全部或部分數據檔案甚至程式檔案。因其能夠支持作業系統能夠識別的所有存儲器,適合結合其它訪問控制技術(如主動加密技術)組成適用範圍廣、操作透明度高的防內部泄密系統。
理想的透明用戶體驗,應當做到以下幾點:
1. 不限定可以加密的檔案類型
2. 不限定可以使用加密文檔的應用程式
3. 不限定加密文檔的打開方式
4. 不限定加密文檔的存放位置
加密技術做到這些,可以保障加密檔案的使用者感覺不到檔案加密後與加密前的差異。以下是幾中加密技術的比較(◎:有限制,-:不限制)。
 檔案類型限制 應用程式限制 打開方式限制 存放位置限制
殼式加密
API攔截
虛擬分區
檔案系統驅動

secWall 中的實時加解密技術

secWall 是提出實時加解密概念和並率先將該技術套用到商業化加密產品。secWall 全系統產品中的檔案加密均基於實時加解密引擎。從secWall的加密產品中還可以看出實時加解密技術下加密檔案還有很多擴展的功能特徵:
1. 結合硬體,加密文檔即插即用,拔離隱藏
secWall的實時加解密技術把secWall IC的即插即用特徵擴展到實時加解密技術中,使加密檔案可以隨硬體身份認證IC即插即用。在IC拔離系統時,加密檔案立刻對作業系統不可見並不可訪問。
2. 任何檔案系統對象都可以加密
檔案系統對象,小到單個檔案,大到整個邏輯盤(驅動器)都可以加密。一些作業系統中特殊的對象和應用程式的數據對象,如程式組、桌面圖示、收藏夾、Internet訪問記錄、郵件收件箱、QQ/MSN聊天記錄等都可以被加密。
3. 集成的授權訪問控制技術
secWall把檔案加密和授權訪問控制技術集成在一起,阻止未授權者看到、移動、複製、刪除、更改和執行加密檔案,可以使用內置訪問控制技術加密執行檔以限制特定套用軟體的使用者。
4. 使用檔案系統的容器對象繼承加密屬性,自動加密新建數據
檔案系統中可以容納其它對象的資料夾或驅動器稱為容器對象。secWall可以加密這些容器對象,儘管這些容量對象沒有數據內容關聯。在加密後的容器對象中新建的對象將自動繼承其父對象的加密屬性,從而在新建時自動加密。因此在secWall系統中任何一個加密的資料夾或驅動器都是一個獨立的“保險箱”,數據存放到這些“保險箱”中會被自動加密。

加密屬性的繼承加密屬性的繼承
5. 擴展的存儲介質支持,包括遠程網路共享
secWall把實時加解密技術擴展到支持遠程網路檔案,可以在遠程伺服器的共享路徑中使用實時加解密技術,遠程伺服器甚至可以是其他非Windows作業系統。如Unix或IBM小型機,甚至可以是未知的系統。只要可以以網上鄰居的方式訪問這些遠程資源,就可以使用secWall的實時加解密技術。secWall將實時加解密技術擴展到網路支持極大提高了實時加解密技術在企業聯網工作環境的實用性。網路支持技術也為企業內部涉密資料共享和涉密許可權劃分奠定了基礎。
6. 加密對象在傳輸過程中始終保持密文狀態,杜絕網路竊聽
secWall在網路上共享的加密檔案在網路線上傳輸時總是保持密文狀態。因此加密檔案的共享是安全的。只有使用這個密文的客戶機實時加解密引擎具備解碼密文的條件(擁有解碼密鑰)才能解讀這個共享加密檔案。
數據未加密時的網路攔截數據未加密時的網路攔截
數據加密時的網路竊聽數據加密時的網路竊聽

相關詞條

相關搜尋

熱門詞條

聯絡我們