摘 要: 簡單介紹了當前信息安全技術國內外研究的現狀與趨勢,分析了各種信息安全技術的優點和存在的不足。針對當前信息安全的嚴峻形勢,提出了基于Windows文件系統微過濾驅動的文件透明加解密技術的解決方案。介紹了研究“基于Windows文件系統微過濾驅動的文件透明加/解密技術”過程中必須掌握的一些理論基礎,包括Windows執行體組件、內核機制、驅動開發基礎等基本理論知識。基于微過濾驅動模型,采用3DES加密算法,實現Windows內核層的文件加/解密處理。
關鍵詞: 信息安全; 微過濾驅動; 加/解密; 3DES加密算法
1 網絡信息安全的現狀與研究趨勢
現今存在的一些信息安全保護方法有很多,如網絡信息保險箱(瑞星網絡保險箱、奇虎360網絡保險箱等)、隱藏文件(隱身俠隱私隱藏文件夾加密軟件)等對信息資源的保護方法。但這些方法都是基于Windows的應用層而開發的,不但需要用戶對其基本操作和原理進行掌握,而且并不能安全可靠地保護被竊取走的資源。
因此在驅動層對數據進行加/解密成為提高信息安全的一種重要手段,將數據以密文的形式存儲在PC或者其他移動設備中,即使信息被非法竊取,盜竊者因沒有密鑰,最終得到的也只是無法辨認的亂碼,從而真正達到了對信息資源進行保護的目的。
2 驅動層加密的優勢
驅動層透明加/解密技術是通過Windows提供的可安裝文件系統IFS(Installable File System)開發接口寫設計一個文件過濾驅動,通過此驅動實現透明加/解密功能。
驅動層的透明加/解密技術由于與操作系統的文件系統結合緊密,加/解密效率更高,控制更加靈活,運行更加穩定。
所謂透明,是因為對用戶來說,是不可見的操作。當用戶對指定的文件進行操作處理時,系統將按用戶需要對未受保護的文件進行自動加密處理,對已受保護的文件進行自動解密處理。驅動層加/解密使得文件在硬盤上是以密文形式存在的,而在系統內存中是明文。但如果離開所設置好的系統環境,由于應用程序無法獲得自動解密的驅動程序的服務而無法正常打開指定文件,從而起到保護文件內容的真正目的。
3 微過濾驅動
3.1 過濾驅動模型開發步驟
微軟提供的過濾驅動模型和現在的微過濾驅動模型開發過濾驅動都遵循以下幾個基本步驟:
(1)主要編寫驅動程序中的派遣函數(dispatch functions),將驅動程序加載到目標設備對象上,攔截所能控制發往該對象的IRP。
(2)創建發往管理目標設備對象的IRP。
(3)建立完成派遣例程,從而被所加載的驅動程序來處理完成IRP時所調用。
(4)在需要時將驅動程序從目標設備對象上卸載。
3.2 文件系統過濾驅動開發的推薦模型為mini-filter
將基于過濾管理器模型開發稱做微過濾驅動。
每一個微過濾驅動必須有對應一個“層級”,用來決定微過濾驅動在加載時在I/O stack棧與其他微過濾驅動的相對位置的唯一標識,層級由微軟分配指定和管理。
所謂的“微過濾驅動”就是分層過濾驅動。
分層驅動[1]是指多個驅動程序分別進行設備對象的創建,出現由高到低的設備對象棧,將功能復雜的驅動程序分解成多個功能簡單且容易修改和維護的驅動程序。當IRP被傳送到設備棧的頂部時,可以由頂層的設備對象直接處理IRP或傳遞至底層的設備對象進行處理。
圖1為分層驅動的基本模型。分層架構采用了化整為零的思想,既提高了驅動程序的穩定性,又能非常有效地避免驅動之間的沖突。同時還為開發人員在開發過程中發現問題提供了清晰的思路和方便的環境。
4 3DES加密算法
4.1 算法介紹
3DES又稱Triple DES[2],是DES加密算法的一種模式,使用3條56 bit的加密密鑰對數據進行連續3次疊加加密。數據加密標準(DES)使用對稱密鑰加密法,使用56 bit加密密鑰和密碼塊的方法,而在密碼塊的方法中,文本被分成64 bit大小的文本塊然后再進行加密。比起原始的DES,3DES加密算法的安全強度更高。
3DES加密算法是DES向AES加密算法進行過渡的一種加密算法(1999年,NIST將3-DES指定為過渡的加密標準),是DES算法的一種進化。以DES算法為基本模型,以組合分組的方法設計出分組加密算法,其原理如下:
設Ek()和Dk()代表DES算法的加密和解密過程,K代表DES算法使用的密鑰,P代表明文,C代表密文,這樣:
3DES加密過程為:C=Ek3(Dk2(Ek1(P)))
3DES解密過程為:P=Dk1(EK2(Dk3(C)))
4.2 加密算法的發展趨勢
4.2.1 對稱加密算法
對稱加密算法[3]是應用較早的加密算法,技術成熟,在對稱加密算法中,數據發信方將明文和加密密鑰一起經過特殊加密算法處理后,使其變成密文發送給收信方;收信方收到密文后,讀取原文,通過加密時使用的密鑰及同一加密算法的逆算法[3]對密文進行解密。美國國家標準局倡導的AES算法即將作為新標準取代DES。利用AES算法進行驅動層的文件透明加/解密也是接下來工作中要做的。
4.2.2 AES算法簡介
AES的基本要求是,采用對稱分組密碼體制,密鑰長度最少支持128 bit、192 bit、256 bit,分組長度128 bit,算法易于各種軟件和硬件的實現。
4.2.3 DES算法的趨勢
在應用發面,盡管DES算法在安全強度上并不高,但由于快速DES芯片的大量產生,使得DES仍能繼續使用。為提高安全強度,本設計采用了獨立密鑰的3DES,但無論是DES還是3DES都要被AES算法取締。
4.3 驅動層加解密
4.3.1 文件過濾驅動的基本流程
文件過濾驅動[4]程序的開發基本流程是將編寫好的派遣函數加載到文件系統控制設備上,使驅動程序發揮作用,如圖2所示。
4.3.2 驅動對象與設備對象
所謂的驅動對象[4]是一種數據結構,在驅動開發中名為DRIVER_OBJECT[5]。任何驅動程序都對應一個DRIVER_
OBJECT。驅動程序的入口函數為DriverEntry,因此,驅動程序的開始代碼如下:
NTSTATUS DriverEntry(IN PDRIVER_OBJECT DriverObject, IN PUNICODE_STRING
RegistryPath)
{
}
這就是驅動程序的入口函數。DriverObject 就是所寫的驅動對應的DRIVER_OBJECT, 是系統在加載驅動時所分配的。
RegisteryPath[5] 是專用于記錄驅動相關參數的注冊表路徑[5]。這兩者都由系統分配并通過這兩個參數傳遞的。
DriverObject[5]重要之處在于它擁有一組函數指針,稱為dispatch functions。
開發驅動程序時,核心任務就是編寫派遣函數。當系統用到此驅動,會向此驅動發送IRP(這是Windows所有驅動的共同工作方式)。其任務是在派遣函數中處理這些請求。可以拒絕某些IRP,可以使其成功返回,也可以修改這些IRP,甚至可以通過這些IRP自己發出新的IRP。
設備對象[4]則是指DEVICE_OBJECT(以下簡稱為DO)。但是事實上任何IRP都是針對而DO而發出的,它們之間是一一對應的,由該驅動生的DO的IRP也應該由該驅動來處理。當一個應用程序對某文件進行操作的時候,Windows系統將這些IRP發送給文件系統驅動。
文件系統過濾驅動可以通過其中的派遣函數對這些IRP進行攔截或釋放,于是系統就有了捕捉和改變文件系統操作的能力。
5 驅動層的文件加密實例
5.1 開發軟件及環境
實現一個簡單的分層驅動的文件加/解密功能,系統實現將在Windows 7系統(使用虛擬機)下進行,采用VS2008(編譯器)、WDK(編譯器)、WinDbg(調試工具)、fltMc(調試工具)等工具構成的平臺,使用C語言進行代碼編寫。
5.2 開發實例圖片
用WDK軟件將程序進行編譯,得到.sys文件,通過fltMC和Windbg進行調試,將實例驅動加載并綁定到虛擬機上。加載成功后,在虛擬機上新建一個空的.txt文件,打開,輸入隨意字符,如圖3所示。
點擊保存文件,此時系統用到本驅動,由設備對象發出IRP,進行加密變換。
由于在代碼中并沒有加入解密算法,所以當再打開此文件時會看到如圖4所示界面。
如果在代碼中正確的地方加入解密算法,在保存文件以后再打開文件,系統再次用到此驅動,由對象設備發出IRP,進行解密,打開文件后看到的依然是明文。
文件在硬盤上是密文,在內存中是明文。所以當保存的文件被別人獲取后,沒有所加載的驅動,故無法獲取信息的明文。而用戶在使用過程中,并不會受到影響,也就是所謂的透明加解密。
驅動與驅動之間的層級帶來的沖突問題是目前驅動開發中遇到的最大的問題。
例如,一個antivirus(殺毒)過濾驅動在棧中的位置應該高于一個“加密操作”的過濾驅動,因而它能在文件被加密之前探測病毒并消除文件中的病毒。這就使得有些所做的驅動無法正常發揮作用,所以今后工作中要盡力解決的是驅動之間的沖突問題。
參考文獻
[1] 侯春明, 陳斌. 基于分層驅動的Windows內核rootkit關鍵技術[J]. 吉首大學學報(自然科學版), 2009,30(4):48-51.
[2] 鄭衛國. 加密技術在數據安全中的應用[J]. 農業網絡信息,2007(6):115-117.
[3] 廖凌云.基于包過濾的對稱加密系統的研究與實現[D]. 上海:同濟大學軟件學院, 2009.
[4] 周斌.主機入侵保護系統的研究與實現[D]. 濟南:山東大學,2008.
[5] 高靜.智能卡在網絡管理系統中的研究和應用[D].北京: 北京郵電大學,2009.