實時加解密技術概述 實時加解密技術(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作業系統中,代碼的運行級別被分為兩個
特權級 RING0和
RING3 ,通常我們把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攔截方式和檔案系統驅動方式都可以按需加密檔案,因此可以對系統中的檔案按加密和不加密分別處理,基本可以不影響不加密的檔案的存取性能。而存儲驅動的加密只能對整個
存儲器 加密,只要使用就會對存儲器的數據一股腦加密,因此在實際套用中損耗會比較大,其加密效果與一些有加密功能的存儲器自身的加密效果相似(如
筆記本硬碟 的內置加密功能)。硬體
存儲器 本身的加密效率遠高於軟體驅動的實現,因此在保密系統中單純採用這種方式的不多見,一般以虛擬磁碟分區的方式實現,而不是直接支持現有的物理存儲器。4. 實現難度
Windows平台檔案系統層次關係圖 API攔截雖然不是規範的編程方式,擔這項技術早在16位Windows時代就已經成功套用於商業化軟體產品,早期的電子詞典軟體就是使用這項技術實現抓屏。因此API攔截技術的實現並不難。
作業系統驅動編程相對比較困難,無論從設計還是開發階段的調試。能夠進入穩定商用則需要大規模的測試和較長時間的考驗。驅動程式一旦出現錯誤會造成整個作業系統的崩潰,也就是我們常見的“藍屏”。而檔案系統驅動的繁雜性又遠大於存儲驅動,因為檔案系統驅動中有複雜的邏輯數據劃分,而
存儲器 驅動一般只需要基本的數據輸入輸出。
從
兼容性 來說,檔案系統驅動卻好於
存儲器 驅動。作業系統在所有
存儲器 上載入檔案系統,沒有檔案系統的存儲器不會被作業系統識別,因此一個檔案系統過濾驅動可以支持所有的不同類型的物理存儲器。而
存儲器 驅動是與
物理設備 有關的,不同物理存儲器有不同的存儲驅動,必須對不同的存儲器驅動分別處理。支持一個物理
存儲器 就必須單獨寫一個對應的存儲器過濾驅動,這樣顯然十分麻煩,因此採用這種技術的產品一般都不支持物理存儲器,而是僅支持自己的
虛擬驅動器 (虛擬區)。
綜上所述,基於檔案系統驅動方式的實時加
解密技術 具有壓倒性優勢,唯一的問題是實現難度。因此檔案系統驅動方式的實時加
解密技術 最關鍵的指標是其系統穩定性(
驅動程式 的健壯性)。
實時加解密技術與透明用戶體驗 有一種說法叫“
透明加解密 ”,這種說法不是太恰當。“透明”實際上是一種用戶體驗,也就是用戶的感覺。實時加解密可以提供透明用戶體驗,反之提供透明用戶體驗的加密系統卻未必就是實時加解密。
怎樣才算是透明用戶體驗?一般認為不改變用戶的操作方式就是透明用戶體驗。對於加密檔案來說就是加密檔案可以直接使用。而直接使用有多種方法,在Windows系統中最常用的就是通過滑鼠雙點擊檔案打開。所以一般加密檔案可以直接雙點擊打開的就被稱為“提供透明用戶體驗”了。
檔案壓縮 技術的套用比加密技術要早,我們以壓縮軟體提供的透明用戶體驗來說明各種透明用戶體驗之間的區別。WinRAR是目前套用十分廣泛的壓縮軟體,WinRAR為其壓縮的檔案提供了比較完善的透明用戶體驗,用戶可以通過雙點擊打開
壓縮檔案 內部的文檔、執行內部的
執行檔 等。NTFS檔案系統也提供了檔案的壓縮功能,壓縮過的檔案也可以直接使用。這兩者有什麼區別呢?WinRAR在用戶打開壓縮檔內部的一個檔案時實際上是把這個檔案
解壓縮 到系統的
臨時資料夾 ,然後再打開臨時資料夾中的檔案。而NTFS的壓縮卻是以檔案系統驅動實現的,使用了前文提到的管道原理,沒有中間檔案產生。
有些提供透明用戶體驗的加密技術與WinRAR的處理類似,這種處理就是加密技術中所謂的“殼式加密”,加密時叫“加殼”,解密時叫“
脫殼 ”,提供透明用戶體驗時實際上已經自己“脫殼”了。這種技術實現上仍然屬於傳統加密技術,因為其在使用加密檔案時的操作步驟與傳統加密完全相同,只是解密過程和修改後的加密過程由加密系統在後台自動實現,從而給前台工作的用戶以透明操作體驗。殼式加密的透明用戶操作體驗有一定局限性,因為在使用加密檔案時要完全解密,這在用戶打開檔案時會造成前台應用程式的明顯遲滯感,尤其在檔案很大的時候。
前面提到的利用存儲器驅動實現的虛擬磁碟分區加密技術實現的透明用戶體驗則要完善得多,虛擬分區上的數據無論對用戶還是作業系統都是透明的,因為虛擬磁碟完全以一個獨立的存儲器設備出現在作業系統中。這種虛擬磁碟分區的技術最早的套用並不是加密而是映像盤。著名的
虛擬光碟機軟體 Daemon-Tools就是採用的這種技術。但作為基於
存儲器 驅動技術的產物,其缺點在前文已做過分析,存儲器驅動上沒有檔案系統的邏輯數據,作業系統在存儲器驅動上載入的檔案系統已經脫離存儲器驅動的控制,因此不能對
虛擬磁碟 上的檔案作單獨控制和細化區分。另外由於
虛擬磁碟 沒有能夠做到對物理存儲器的支持,必須把需要加密的數據挪到虛擬分區里才能夠加密,這也限制了虛擬分區所能夠加密的對象必須是孤立的數據檔案。由於其不能支持對除虛擬分區以外的
存儲區域 數據加密,因此難以基於虛擬磁碟分區技術實現主動加密技術。但因其突出的數據
透明性 和相對獨立性,比較適合文檔、圖片等私人資料的加密。
採用殼式加密技術的加透明用戶體驗處理流程
基於檔案系統驅動的實時加
解密技術 不僅實現完全透明的用戶體驗,對作業系統中的任何套用,甚至包括來自核心層的請求其數據都是透明的。檔案系統實時加
解密技術 加密檔案不改變這個檔案的物理存儲位置,這一點與基於虛擬分區的技術不同。另外其加密的檔案完全融入到原來存儲器的檔案系統中,因此這種技術可以嵌入現有的應用程式,加密應用程式的全部或部分數據檔案甚至
程式檔案 。因其能夠支持作業系統能夠識別的所有存儲器,適合結合其它
訪問控制 技術(如主動加密技術)組成適用範圍廣、操作透明度高的防內部泄密系統。
理想的透明用戶體驗,應當做到以下幾點:
1. 不限定可以加密的檔案類型
2. 不限定可以使用加密文檔的應用程式
3. 不限定加密文檔的打開方式
4. 不限定加密文檔的存放位置
加密技術做到這些,可以保障加密檔案的使用者感覺不到
檔案加密 後與加密前的差異。以下是幾中加密技術的比較(◎:有限制,-:不限制)。
檔案類型限制
應用程式限制
打開方式限制
存放位置限制
殼式加密
◎
◎
◎
-
API攔截
-
◎
-
-
虛擬分區
-
-
-
◎
檔案系統驅動
-
-
-
-
secWall 中的實時加解密技術 secWall 是提出實時加解密概念和並率先將該技術套用到商業化加密產品。secWall 全系統產品中的
檔案加密 均基於實時加解密引擎。從secWall的加密產品中還可以看出實時加解密技術下加密檔案還有很多擴展的功能特徵:
secWall 的實時加
解密技術 把secWall IC的
即插即用 特徵擴展到實時加解密技術中,使加密檔案可以隨硬體
身份認證 IC即插即用。在IC拔離系統時,加密檔案立刻對作業系統不可見並不可訪問。
2. 任何檔案系統對象都可以加密
檔案系統對象,小到單個檔案,大到整個邏輯盤(
驅動器 )都可以加密。一些作業系統中特殊的對象和應用程式的
數據對象 ,如程式組、桌面圖示、
收藏夾 、Internet訪問記錄、
郵件 收件箱、QQ/MSN聊天記錄等都可以被加密。
3. 集成的授權訪問控制技術
secWall 把
檔案加密 和授權訪問控制技術集成在一起,阻止未授權者看到、移動、複製、刪除、更改和執行加密檔案,可以使用內置訪問控制技術加密執行檔以限制特定套用軟體的使用者。
4. 使用檔案系統的容器對象繼承加密屬性,自動加密新建數據
檔案系統中可以容納其它對象的資料夾或驅動器稱為容器對象。
secWall 可以加密這些容器對象,儘管這些容量對象沒有數據內容關聯。在加密後的容器對象中新建的對象將自動繼承其父對象的加密屬性,從而在新建時自動加密。因此在
secWall 系統中任何一個加密的資料夾或驅動器都是一個獨立的“保險箱”,數據存放到這些“保險箱”中會被自動加密。
5. 擴展的存儲介質支持,包括遠程網路共享
加密屬性的繼承 secWall 把實時加
解密技術 擴展到支持遠程網路檔案,可以在遠程伺服器的共享
路徑 中使用實時加解密技術,遠程伺服器甚至可以是其他非Windows作業系統。如Unix或IBM
小型機 ,甚至可以是未知的系統。只要可以以
網上鄰居 的方式訪問這些遠程資源,就可以使用
secWall 的實時加解密技術。
secWall 將實時加
解密技術 擴展到網路支持極大提高了實時加解密技術在企業聯網工作環境的實用性。網路支持技術也為企業內部涉密資料共享和涉密許可權劃分奠定了基礎。
6. 加密對象在傳輸過程中始終保持密文狀態,杜絕網路竊聽
secWall 在網路上共享的加密檔案在網路線上傳輸時總是保持密文狀態。因此加密檔案的共享是安全的。只有使用這個密文的客戶機實時加解密引擎具備解碼密文的條件(擁有解碼
密鑰 )才能解讀這個共享加密檔案。
數據未加密時的網路攔截 數據加密時的網路竊聽