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