王川
長沙學院教務處 湖南 410003
數據加密是計算機數據的安全常用的保護手段,它使用各種加密算法對重要文件進行加密,使盜竊者無法獲得真實的數據內容。市場上很多加密軟件是基于應用層開發,由于其沒有與操作系統集成,用戶使用加密文件時每次使用都要輸入密碼,使用起來不方便。雖然微軟提供的EFS系統的加/解密處理過程位于操作系統內核,得到系統內核的保護,可以進行文件透明加/解密,使用起來也很方便,但是它的缺點也是很多:安全控制需要在NTFS文件系統上使用;加密算法的安全性相對較低,且不能夠更改;EFS只能針對指定文件和文件夾進行加密,而不能對某一類型的文件進行加密,靈活性不夠。
文件系統過濾驅動技術可以使文件保護與 Windows系統緊密結合,在內核級實現了實時安全的文件加/解密,可以進行實時的文件訪問控制,適用于Windows 2003/XP系統下的多種文件系統格式,不依賴于具體的應用程序。
Windows驅動模型(WDM)采用的是分層的結構。應用程序發出對磁盤設備的操作請求后,由I/O管理器構造相應的IRP,發往下層的文件系統驅動程序,文件系統驅動程序則把相對應于文件系統的操作轉換為相對應于磁盤設備的操作,并通過I/O管理器來調用磁盤驅動程序。
根據WDM的特點,可以構造一個位于文件系統驅動程序之上的一種特殊的中間層驅動程序,我們稱為文件系統過濾驅動程序,文件系統過濾驅動程序的位置如圖1所示。有了文件系統過濾驅動程序后,I/O管理器構造的IRP則會先送給文件系統過濾驅動程序,然后再由文件過濾驅動程序在I/O管理器的幫助下將IRP傳給下層的文件系統驅動程序。
因此,我們可以在文件系統過濾驅動程序這一層實現對文件系統操作的截取、監控甚至替換工作,由此實現許多新功能:①防病毒引擎。在系統讀寫文件時,捕獲讀寫的數據內容,對內容檢測是否含有病毒代碼。②對用戶透明的文件加解密。在文件寫過程時對數據進行加密,在讀文件的過程中進行解密。③對數據的讀寫進行訪問控制。可以防止惡意進程對受保護文件的進行破壞。

圖1 文件系統過濾驅動層次結構
文件保護系統的功能主要由文件系統過濾驅動、密鑰管理、加/解密處理、配置程序和訪問控制組成。各模塊之間的關系如圖2所示。文件系統過濾驅動是系統的核心,利用它實現對文件操作的截獲,與系統中的其它模塊進行交互,控制整個系統。密鑰管理負責密鑰的產生、分配、更換和銷毀等方面管理工作。加/解密處理使用密鑰對文件進行加/解密運算,也是對用戶透明動態加/解密的實現部分。配置程序是用戶用來定制和修改策略文件的模塊。訪問控制根據配置程序生成的策略配置文件對受保護的文件進行加/解密前的處理,包括安全目錄識別、用戶身份識別、安全目錄訪問控制、密鑰文件訪問控制和共享目錄訪問控制等,有利于提高文件保護系統的安全性和效率。

圖2 文件安全保護系統結構
(1)構造文件系統過濾驅動對象,并附著在要過濾的文件系統對象之上。
(2)創建文件系統過濾驅動程序所需的分派例程,用于對IRP進行預處理。分派例程是用來響應應用程序的打開、讀、寫、關閉等I/O請求的一組回調函數,這些函數由系統在相應情況下調用。
(3)取消對目標設備的綁定過濾。
實現文件系統過濾驅動程序除了上述三個必要方面外,還有一些功能需要加入進來。如:實現文件系統過濾驅動程序與上層應用程序通信。實現過濾驅動的動態附著,以便能夠過濾新加載的文件系統。
密鑰管理負責密鑰的產生、分配、更換和銷毀等方面管理工作。文件保護系統采用兩類加/解密算法,在保證安全性的同時保證了加密效率。對稱加密算法的加密速度較快,但安全性較低,適合對文件內容進行加密。非對稱加密算法安全性較高,但加密速度較慢。適合用來對加密密鑰進行加密,這樣有助于提高密鑰的安全性,也方便文件共享。
在安全目錄中對每一個文件都隨機分配一個不同的文件密鑰(文件密鑰可以通過合理增加密鑰長度提高破解密鑰的難度,在保證一定加密速度的情況下適當地增強安全性),該目錄下的所有文件密鑰(不包括子文件夾)被存放在該目錄下的同一個密鑰文件中。密鑰文件中存放著多條文件密鑰信息,文件密鑰信息的主要結構是:被加密的文件名、所有者、共享者、加密密鑰等內容。密鑰文件存放在安全目錄中,每一個目錄(包括子目錄)都有一個。密鑰文件是在安全目錄創建時有密鑰管理模塊自動生成,刪除安全目錄及子目錄時刪除密鑰文件。
對密鑰文件我們采取兩類保護措施:一是對密鑰文件中的文件密鑰信息使用文件所有者的公鑰進行加密,這里不是對整個密鑰文件整體用公鑰加密,而是對每個文件密鑰單獨加密。而創建、修改或刪除文件密鑰都需要文件所有者插入私鑰U盤才能進行。二是通過文件保護系統的訪問控制模塊對密鑰文件進行保護,不準非授權程序進行創建、修改或者刪除。通過這兩類措施,大大提高了文件密鑰安全性。
加/解密處理模塊是位于內核模式中實現的,這樣可以利用操作系統來提高加/解密過程的安全。在文件系統過濾驅動程序的讀寫處理中實現對文件的加密和解密。對攔截上層發送的讀寫 IRP,通過訪問控制檢查判斷是否為合法訪問,如是非法訪問將阻止訪問繼續,對于合法訪問還要判斷是否為共享訪問,共享訪問不進行加解密,直接采用默認的處理。對于合法的非共享訪問,按以下的流程進行訪問,流程如圖3所示。
應用程序寫操作時,文件系統過濾驅動程序從I/O管理器截獲IRP中的明文后,若該文件是已建文件,從密鑰文件中取出文件密鑰,從文件所有者私鑰U盤中讀出私鑰,用私鑰解密文件密鑰,再用文件密鑰加密明文并將其向下層驅動程序傳遞,在完成方法中恢復緩沖區的明文;若該文件是新建文件,首先由密鑰管理模塊生成文件密鑰,用文件密鑰加密明文的同時,還利用文件所有者公鑰加密文件密鑰并保存在密鑰文件中。
應用程序讀操作時,文件系統過濾驅動程序從文件驅動程序截獲密文后,從密鑰文件中讀取文件對應的文件密鑰,從文件所有者私鑰U盤中讀出私鑰,用私鑰解密文件密鑰,在完成方法中用文件密鑰解密密文并向上層傳送明文至應用程序。

圖3 加/解密處理流程
用戶使用配置程序將配置好的策略生成策略文件,以加密的形式存放在操作系統下。系統的訪問控制模塊可以直接讀取并解密策略文件,然后根據策略文件對保護文件進行加解密前的處理。訪問控制功能主要有以下幾個方面。
密鑰訪問控制:由于密鑰的特殊性,除密鑰管理模塊外,不允許任何進程直接創建、修改、刪除或讀取該文件,密鑰只允許過濾驅動程序通過密鑰管理模塊訪問。用戶訪問控制:對于能提供私鑰的文件所有者用戶和合法的共享用戶可以訪問文件。安全文件識別:為提高工作效率,文件系統過濾驅動程序只處理訪問安全文件的 IRP,不處理訪問非安全文件的IRP。
本文提出的文件保護系統適用于Windows XP/2003操作系統,屬于操作系統內核程序,系統的安全性得到操作系統的安全保障。系統采用了雙密鑰體系增強了文件系統的安全性,經測試表明,使用雙密鑰體系的文件加/解密與文件直接明文讀取在效率上差距不大,具有較好的實用性。加密算法可以靈活采用并且不公開,提高了加密的安全性。系統也存在一定風險性,文件密鑰保存在密鑰文件里,如果該文件損壞或丟失將會導致密文無法解密。今后的研究重點放在密鑰文件的安全保護和高效訪問方面。
[1]胡宏銀,姚峰,何成萬.一種基于文件過濾驅動的Windows文件安全保護方案[J].計算機應用.2009.
[2]于飛,胡平.基于文件過濾驅動的局域網安全系統設計[J].計算機工程與設計.2008.
[3]沈瑋,王雷,陳佳捷.基于文件系統過濾驅動的加密系統設計與實現[J].計算機工程.2009.
[4]王全民,周清,劉宇明,朱二夫.文件透明加密技術研究[J].計算機技術與發展.2010.
[5]王德明,劉淳,邱俊山.基于過濾器驅動程序的文件保護系統軟件設計[J].四川理工學院學報(自然科學版).2006.
[6]Chris Cant.Windows WDM設備驅動程序開發指南[M].北京:機械工業出版社.2005.
[7]鄭玉彤,王志娟.Windows驅動程序開發[M].北京:中央名族大學出版社.2006.