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