陳金山
(廣州軍事體育進修學(xué)院,廣東 廣州 510502)
計算機的普及和信息化的推廣應(yīng)用,單位內(nèi)部的各種文檔:標書、報表、設(shè)計圖紙等機密信息大量的以電子文檔的形式存放在計算機中,為確保這些文檔不被非法泄露,各類防止電子文檔泄密的方法應(yīng)運而生:如通過企業(yè)環(huán)境下的Web service安全技術(shù)來保障企業(yè)信息系統(tǒng)整體安全性、可靠性的思路[1],采用無盤工作站+信息中心設(shè)計模式實現(xiàn)涉密單位辦公自動化的方案[2]等,但從內(nèi)網(wǎng)安全角度及信息泄密案件來看,只要是明文文件在硬盤上保存,無論是訪問控制、設(shè)備監(jiān)控、安全審計等手段都無法從根源上徹底解決信息安全問題。一種有效的方法就是直接對信息的載體和源頭終端的文檔進行訪問控制和加密[3]。隨著文件系統(tǒng)過濾驅(qū)動技術(shù)的成熟,使用文件系統(tǒng)過濾驅(qū)動技術(shù)對重要文件進行透明加密已成為解決文件安全保護的重要技術(shù)手段[4-5],但是使用文件系統(tǒng)過濾驅(qū)動實現(xiàn)對文檔動態(tài)透明加解密時,首先要解決動態(tài)透明加解密中區(qū)分加密文件與非加密文件的問題。一種方法是,在文件以外的地方保存這個信息。比如另建一個隱藏文件,保存當前目錄下其他文件的加密標識。這種方法的缺點是文件移動、打包壓縮或者通過網(wǎng)絡(luò)發(fā)送后文件標識很容易丟失。最后可以得出一條結(jié)論:加密標識應(yīng)該保存在文件本身。即是采用文檔標識技術(shù),把文檔加密標識嵌入文檔本身,避免由于文件的移動而造成加密標識丟失的可能性[6]。這樣,問題就變成了:加密標識應(yīng)該保存在文件內(nèi)容的哪個部位?一種方法是將加密標識放在文件末尾[7-8],這種方法比較容易實現(xiàn),但存在重大安全隱患。因為所謂的文件尾不是一個固定的位置,這個位置是隨著文件的修改而不斷改變的,一旦在改變中有什么變故(比如斷電),則容易丟失這個尾部。目前沒有什么好的辦法可以確保這個尾部的安全。林海元等提出了基于LZW(Lempel-Ziv-Walch)壓縮算法將加密標識嵌入文件頭的方法[9]。加密標識嵌入文件頭的好處是位置固定,后面文件的內(nèi)容如何操作都不會影響它;壞處是實現(xiàn)困難。文獻[9]的方法比一般的文件透明加解密過程多了個LZW壓縮/解壓縮處理,增加了系統(tǒng)資源的消耗。因為文件過濾驅(qū)動工作在系統(tǒng)核心態(tài),所以這種方法所帶來的問題是系統(tǒng)效率的明顯下降。
本文提出一種基于微過濾驅(qū)動的加密標識嵌入文件頭方法。即給文件增加一個4kB“隱藏”的文件頭,然后對機密進程所有的文件操作都增加一個偏移設(shè)置,這樣做的好處是文件加解密過程中幾乎不增加系統(tǒng)資源消耗。
文件透明加解密是通過開發(fā)過濾驅(qū)動程序?qū)崿F(xiàn)的?;贜T內(nèi)核的Windows操作系統(tǒng)的驅(qū)動程序是采用分層的結(jié)構(gòu)模型,在這種分層的結(jié)構(gòu)下,I/O管理器所發(fā)出的每個I/O請求包(IRP)的處理分別經(jīng)過各層驅(qū)動程序,直到某層驅(qū)動程序完成這個請求。因此,可以在I/O管理器與文件系統(tǒng)驅(qū)動之間插入過濾驅(qū)動,攔截和處理往返于上下層之間的I RP,從而實現(xiàn)文檔的透明加解密。微過濾驅(qū)動主要通過攔截用戶的文件創(chuàng)建/打開、讀、寫和關(guān)閉操作來實現(xiàn)數(shù)據(jù)的透明加解密,其中涉及到的攔截函數(shù)是:①注冊主功能碼IRP_MJ_CREATE的攔截函數(shù)PreCreate ( )和PostCreate ( );②注冊主功能碼IRP_MJ_WRITE的攔截函數(shù)PreWrite ( )和PostWrite ( );③注冊主功能碼 IRP_MJ_READ的攔截函數(shù) PreRead( )和PostRead( );④注冊主功能碼IRP_MJ_CLEANUP的攔截函數(shù)PreCleanUp ( )和PostCleanUp ( )。
微過濾驅(qū)動的工作原理如圖1所示。
當文檔過濾驅(qū)動檢測到機密進程試圖打開一個新建的或者已存在的文檔時,I/O管理器首先向文件系統(tǒng)驅(qū)動發(fā)出的都是IRP_MJ_CREATE IRP請求包,因此可以利用微過濾驅(qū)動技術(shù)在內(nèi)核中截獲IRP_MJ_CREATE操作,判斷當前打開的是新建的文檔還是已存在的文檔,如果是新建的文檔就申請一個新的密鑰,把密鑰、加密算法和密級信息等寫入新的文檔標識中,然后對文檔標識加密,再把加密的文檔標識嵌入新的文檔中;如果是已存在的文檔,就提取文檔的文檔標識,然后把文檔標識加入加密表。
因為要對所有的機密進程隱藏文件的頭部,則所有的文件操作都要增加一個偏移。下面以記事本為例說明文件加密標識實現(xiàn)過程中的關(guān)鍵技術(shù)。
要對記事本隱藏文件頭,首先是隱藏文件的大小。為此需要處理一系列的查詢請求(IRP的主功能號為 IRP_MJ_QUERY_INFORMATION),這些查詢請求用記事本來查詢文件的大小。在查詢得到結(jié)果之后,在文件過濾驅(qū)動中修改這個結(jié)果,減去文件頭的大小。這樣在記事本看來,文件的大小就不包含文件頭了。如果記事本試圖重新設(shè)置加密文件的大小,也必須有針對性地做出特殊的改變。但是和查詢請求不同的是,查詢的修改是在請求完成之后,在完成結(jié)果中修改;而設(shè)置請求則是在請求完成之前,直接修改請求。比如記事本如果試圖把文件大小設(shè)置為1KB,由于增加了4KB的文件頭,實際上文件應(yīng)該被設(shè)置為5KB。也就是說,應(yīng)該加上隱藏文件頭的大小,對文件的讀/寫當前偏移的設(shè)置也是如此。
文件過濾驅(qū)動處理中有幾個請求會涉及文件的大小和文件讀/寫當前偏移,對記事本而言需要處理好下列函數(shù):FileAllInformation、 FileAllocation Information、FileValidDataLengthInformation、File StandardInformation、FileEndOfFileInformation、File PositionInformation。
下面是FileEndOfFileInformation函數(shù)的處理,其他函數(shù)的處理可參考有關(guān)WDK開發(fā)文檔。
FileEndOfFileInformation函數(shù)處理的代碼如下:
由于在文件頭嵌入了4KB的加密標識,所以當記事本試圖讀取文件位置偏移0~512字節(jié)時,實際上應(yīng)該讀取的是從0+4KB到512+4KB范圍的內(nèi)容。也就是說,對所有的讀/寫操作,必須增加一個位置偏移。而且無論讀/寫,都是要在請求完成之前進行操作。讀操作代碼如下:
性能測試的環(huán)境是:Windows XP操作系統(tǒng),酷睿E6300處理器,2G內(nèi)存,7200轉(zhuǎn)SATA硬盤。采用硬盤速度測試軟件DiskBench在相同的環(huán)境下對一個相同大小的文件進行10次相同條件的測試對比,得出的平均速度結(jié)果如表1所示。
表1 文件讀寫時間測試
從測試結(jié)果可以看出,在文件透明加解密系統(tǒng)啟動后,文件的讀寫速度略有下降,但相比較其提供的安全性能,這點速度損失是可以接受的。
基于微過濾驅(qū)動模型的文件透明加解密系統(tǒng)為Windows文件系統(tǒng)的安全保護提供了一個有效的解決方案。給文件增加一個4KB“隱藏”的文件頭實現(xiàn)的加密標記自動嵌入文件頭的方法,克服了加密標記嵌入文件尾可能存在的重大安全隱患,同時又避免了嵌入文件頭時增加過多的資源消耗,達到了預(yù)期的效果。這種加密標記嵌入技術(shù)為文件透明加解密系統(tǒng)提供了一種更好的文件加密識別方案,不僅可以應(yīng)用于微過濾驅(qū)動的文件透明加解密系統(tǒng),還可以應(yīng)用于其他文件安全保護系統(tǒng)中[10],具有廣闊的應(yīng)用前景。
[1] 許玲.企業(yè)信息系統(tǒng)中的Web Service安全[J].電信技術(shù),2011,44 (05):48-51.
[2] 彭展,李密.可信辦公自動化系統(tǒng)設(shè)計[J].信息安全與通信保密,2012(04):61-63.
[3] 沈瑋,王雷,陳佳捷. 基于文件系統(tǒng)過濾驅(qū)動的加密系統(tǒng)設(shè)計與實現(xiàn)[J].計算機工程,2009,35(20):157-159.
[4] 周峰,凌捷,黃萬民,等.基于文件系統(tǒng)過濾驅(qū)動的透明加解密技術(shù)實現(xiàn)[J].廣東工業(yè)大學(xué)學(xué)報,2010,27(03):68-71.
[5] 劉偉,胡平. 基于文件系統(tǒng)過濾驅(qū)動的文件加密系統(tǒng)設(shè)計[J].微電子學(xué)與計算機,2009,26(04):114-117.
[6] 黎計仲,凌捷,黃萬民,等.微過濾驅(qū)動在終端文檔安全保護中的應(yīng)用[J].計算機工程與設(shè)計,2011,32(07):2245-2248.
[7] 毛銳. 透明加密文件系統(tǒng)模型的研究與實現(xiàn)[D].大連:大連理工大學(xué),2008.
[8] 徐翔. 文件保護系統(tǒng)中透明加解密技術(shù)的設(shè)計與實現(xiàn)[D].北京:北京化工大學(xué),2009.
[9] 林海元,呂麗民. 基于無損壓縮算法的文件加密標記的實現(xiàn)[J].浙江工業(yè)大學(xué)學(xué)報,2010,38(04):430-432.
[10] 孫瑩瑩,鄭扣根. 基于微過濾驅(qū)動的文件監(jiān)控系統(tǒng)[J].計算機應(yīng)用,2010,30(11):3115-3117.
[11] 夏輝,張堯弼. 移動存儲介質(zhì)安全防護系統(tǒng)設(shè)計[J]. 通信技術(shù),2008,41(09):153-155.
[12] 徐月美,芮蘇仙.移動代理服務(wù)器安全性研究[J].通信技術(shù),2003(09):109-111.