複製鏈接
請複製以下鏈接發送給好友

實時加解密

鎖定
實時加解密(Real Time Encryption/Decryption)是一種文件加密、解密技術。這種技術能夠在用户的正常工作中對數據的加解密需求進行實時處理,沒有顯示的加解密過程,也不產生臨時文件。實時加解密技術在提供用户透明操作體驗的同時避免了數據在存儲介質上反覆加解密的過程,解決了傳統加解密技術操作繁雜、效率低下的問題。
中文名
實時加解密
外文名
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操作系統中,代碼的運行級別被分為兩個特權級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攔截方式要少得多,從而具有更高的性能。
Windows平台文件系統層次關係圖 Windows平台文件系統層次關係圖
存儲驅動方式與上述兩種加密方案有所不同,API攔截方式和文件系統驅動方式都可以按需加密文件,因此可以對系統中的文件按加密和不加密分別處理,基本可以不影響不加密的文件的存取性能。而存儲驅動的加密只能對整個存儲器加密,只要使用就會對存儲器的數據一股腦加密,因此在實際應用中損耗會比較大,其加密效果與一些有加密功能的存儲器自身的加密效果相似(如筆記本硬盤的內置加密功能)。硬件存儲器本身的加密效率遠高於軟件驅動的實現,因此在保密系統中單純採用這種方式的不多見,一般以虛擬磁盤分區的方式實現,而不是直接支持現有的物理存儲器。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在網絡上共享的加密文件在網絡線上傳輸時總是保持密文狀態。因此加密文件的共享是安全的。只有使用這個密文的客户機實時加解密引擎具備解碼密文的條件(擁有解碼密鑰)才能解讀這個共享加密文件。
數據未加密時的網絡攔截 數據未加密時的網絡攔截
數據加密時的網絡竊聽 數據加密時的網絡竊聽