邊金良
(青島酒店管理職業(yè)技術(shù)學(xué)院,山東 青島266100)
計算機(jī)和網(wǎng)絡(luò)技術(shù)的發(fā)展,使得企業(yè)的信息化程度不斷提高,但同時也給企業(yè)信息安全帶來了巨大的風(fēng)險,如網(wǎng)絡(luò)入侵、病毒感染等,越來越多的企業(yè)開始重視對數(shù)據(jù)的保護(hù)。
訪問權(quán)限控制是人們在數(shù)據(jù)保護(hù)中采用的傳統(tǒng)技術(shù),但即使這樣控制,仍然會發(fā)生有訪問權(quán)限的人將機(jī)密文件泄露的事件發(fā)生。因此數(shù)據(jù)加密漸漸成為保證數(shù)據(jù)安全的有效手段,如企業(yè)內(nèi)部的重要數(shù)據(jù)在寫入磁盤時通過某種方法進(jìn)行加密,從磁盤讀出時對其進(jìn)行解密。本文針對數(shù)據(jù)的安全性,設(shè)計了一套數(shù)據(jù)安全保護(hù)系統(tǒng),通過對文件進(jìn)行強(qiáng)制加密來實現(xiàn)數(shù)據(jù)的安全防護(hù)。
透明加解密OTFE(on-the-fly encryption),是指數(shù)據(jù)在使用過程中自動進(jìn)行加密或解密操作,不改變對文件的訪問(打開、讀、寫等)習(xí)慣,整個過程無需用戶的干預(yù),操作自動完成,數(shù)字內(nèi)容的保護(hù)過程對用戶透明[1],但是當(dāng)文件一旦離開這種環(huán)境,文件就無法打開。
加密解密技術(shù)中主要包含兩個要素,加密算法和密鑰。加密算法可以選擇對稱加密算法,也可以選擇非對稱加密算法;密鑰可以通過文件的創(chuàng)建時間來獲取。這樣我們先將加密算法和密鑰保存在操作系統(tǒng)中,并依據(jù)加密策略,自動對文件進(jìn)行加解密的操作。利用加解密技術(shù),數(shù)據(jù)被存儲在磁盤中時,系統(tǒng)對其進(jìn)行加密,密文保存在磁盤中,對于非授權(quán)用戶無權(quán)進(jìn)行讀取,即使通過其他的途徑獲得文件,也無法正常讀出內(nèi)容。而授權(quán)用戶在不改變自己行為的情況下,讀出磁盤中存儲的明文數(shù)據(jù),整個過程對用戶來講是透明的,這也是透明加解密的特點(diǎn)。
系統(tǒng)在實現(xiàn)過程中,使用加密策略對整個加解密的過程進(jìn)行安排。加密策略并不是唯一的,它可能隨著整個環(huán)境的變化而發(fā)生變化,它主要規(guī)定了在加解密過程中使用的加密算法、密鑰以及加密和解密的時機(jī)。比如,對doc、xls等office文檔,可以采用非對稱的加密算法,對jpg、cad等文件采用對稱的加密算法。而進(jìn)程識別主要是根據(jù)進(jìn)程的特征,對進(jìn)程進(jìn)行識別,從而判斷該進(jìn)程是否有權(quán)限訪問那些受保護(hù)的文件以及是否需要對文件進(jìn)行加密或者解密操作。在系統(tǒng)實現(xiàn)過程中,進(jìn)程的識別不僅僅對名字識別,還對進(jìn)程對應(yīng)的程序進(jìn)行分析對比,從而保證操作文件的合法性。
和傳統(tǒng)的加密軟件一樣,透明加解密技術(shù)也是通過改變文件內(nèi)容,以達(dá)到保護(hù)文件安全的目的。但是,透明加解密技術(shù)又和傳統(tǒng)的加解密技術(shù)有很大的不同。傳統(tǒng)加密技術(shù)需要用戶的參與,手動的進(jìn)行加密和解密,而透明加解密技術(shù)是事先加載到操作系統(tǒng)的內(nèi)核中,根據(jù)加密策略和進(jìn)程,自動地對文件進(jìn)行加密和解密,從而將安全性和便捷性有機(jī)地結(jié)合在一起[2]。
透明加解密的功能主要體現(xiàn)在系統(tǒng)自動地進(jìn)行密碼的核對或加密硬件的連接,它在操作系統(tǒng)的內(nèi)存中進(jìn)行,不會在磁盤上產(chǎn)生任何的臨時文件,從而操作文件的安全性得以提高。透明加解密技術(shù)的工作原理如圖1所示。
圖1 透明加解密技術(shù)的工作原理
圖1中,當(dāng)用戶要操作磁盤的文件時,首先會向Windows操作系統(tǒng)的I/O管理器發(fā)出請求,I/O管理器通過透明加解密技術(shù)平臺向下通過Windows的文件系統(tǒng),定位到磁盤的一個或多個頁面。在這個過程中,系統(tǒng)通過內(nèi)置在透明加解密技術(shù)平臺上的加密策略,決定加密算法、加密密鑰以及被加密的文件,從而在用戶訪問的過程中實現(xiàn)明文的讀出和密文的存儲。同時,加密策略是由系統(tǒng)管理員統(tǒng)一管理,普通用戶無權(quán)讀取和修改。
文件系統(tǒng)的透明加解密的實現(xiàn)需要在Windows I/O和Windows文件系統(tǒng)之間,必須要利用操作系統(tǒng)內(nèi)核的特殊工作機(jī)制。這種特殊的工作機(jī)制,可以通過Hook和驅(qū)動過濾兩種方式實現(xiàn)。這兩種方法的不同之處體現(xiàn)在不同的系統(tǒng)內(nèi)核層上,其中Hook方式是工作在系統(tǒng)API層;驅(qū)動過濾工作在系統(tǒng)驅(qū)動層,又分為底層驅(qū)動過濾和高層驅(qū)動過濾兩種。
API Hook是在應(yīng)用層實現(xiàn)的動態(tài)加解密,主要通過鉤子API的文件函數(shù)來對用戶操作文件進(jìn)行攔截,而且與應(yīng)用程序的關(guān)聯(lián)非常密切,因此相對來講安全性較差。驅(qū)動過濾技術(shù)是基于windows文件系統(tǒng)(NTFS)的驅(qū)動技術(shù),主要工作在系統(tǒng)的內(nèi)核層。通常情況下,API Hook相對于驅(qū)動過濾來講,安全性較差,而驅(qū)動過濾相對于上層的應(yīng)用來講透明度相對高些。本系統(tǒng)采用驅(qū)動過濾技術(shù)來實現(xiàn)數(shù)據(jù)的透明加解密。
該防護(hù)系統(tǒng)主要由客戶端和服務(wù)端兩部分組成。服務(wù)器端主要為管理員提供快捷的控制中心,并在服務(wù)器端部署策略服務(wù),所有客戶端的請求均有策略服務(wù)進(jìn)行響應(yīng),主要包括認(rèn)證、審計以及密鑰的管理等;客戶端主要提供身份認(rèn)證、透明加密解密、上傳下載文件等功能。其系統(tǒng)結(jié)構(gòu)圖如圖2所示。
圖2 安全防護(hù)系統(tǒng)的系統(tǒng)結(jié)構(gòu)
客戶端主要為普通用戶提供文件的讀取、寫入以及權(quán)限控制,其主要功能如下:
*從服務(wù)器獲取密鑰,為整個系統(tǒng)提供加密和解密服務(wù)。
*對用戶進(jìn)行身份認(rèn)證,根據(jù)用戶的身份進(jìn)行環(huán)境配置以及系統(tǒng)對用戶的反饋信息。
*對用戶的操作進(jìn)行操控并記錄到服務(wù)器中,方便日后的審計和追蹤。
*對用戶操作的文件設(shè)定特定的使用權(quán)限。
*為客戶端和服務(wù)器端提供通信支持。
服務(wù)器端主要為系統(tǒng)提供運(yùn)行的必要設(shè)置和監(jiān)控,其主要功能如下:
*管理員對系統(tǒng)的正常運(yùn)行進(jìn)行有效的配置,包括密鑰、加密算法等。
*整個系統(tǒng)的運(yùn)行進(jìn)行有效的監(jiān)控和管理,如系統(tǒng)認(rèn)證、系統(tǒng)日志等。
*為客戶端提供各項服務(wù),如訪問權(quán)限的控制、密鑰的發(fā)送等。
*管理員對文件的加密和解密功能。
2.3.1 過濾驅(qū)動模塊設(shè)計
過濾驅(qū)動模塊是負(fù)責(zé)驅(qū)動程序的引導(dǎo)、初始化和配置等工作[3]。該模塊由入口函數(shù)(DriverEntry)開始,結(jié)合其他的函數(shù)完成操作。其主要功能如下:
*對全局變量進(jìn)行初始化,如用戶環(huán)境變量;并將對象、字符串等與服務(wù)器進(jìn)行同步;初始化數(shù)據(jù)庫的加密文件表、文件的訪問規(guī)則等。
*聲明并定義該模塊中所有的函數(shù)。
*創(chuàng)建并生成接受IRP的驅(qū)動實例,這個驅(qū)動實例叫設(shè)備控制器,設(shè)備控制器要保證在任何情況下都可以接受IRP,及時過濾設(shè)備沒有生成。
*將回調(diào)函數(shù)進(jìn)行注冊,幾乎所有的IRP的處理都由毀掉函數(shù)處理,包括創(chuàng)建動態(tài)例程、派遣例程等。系統(tǒng)負(fù)責(zé)將所有函數(shù)的入口進(jìn)行加載。
不同的派遣函數(shù)處理不同的IRP,這些IRP由用戶發(fā)出的所有I/O請求而來,如IRP_MJ_CREATE、IRP_MJ_READ等。
2.3.2 文件加解密設(shè)計
文件加解密是對文件進(jìn)行保護(hù)的必要操作,其工作流程如圖3和圖4所示。
圖3 文件加密流程
圖4 文件解密流程
其加密過程的詳細(xì)描述為:
(1)加密進(jìn)程向I/O管理器發(fā)出寫入數(shù)據(jù)的請求,該寫入的數(shù)據(jù)應(yīng)該是明文數(shù)據(jù)。
(2)I/O管理器接到請求后, 將其轉(zhuǎn)換為IRP_MJ_WRITE,然后發(fā)送給過濾設(shè)備的寫派遣例程。
(3)判斷IRP_MJ_WRITE是否帶有IRP_NOCACHE(不需要緩存)、IRP_PAGING_IO(I/O管理器的結(jié)束行為)和IRP_SYNCHRONOUS_PAGING_IO標(biāo)志,如果帶則用密鑰加密IRP指向的內(nèi)存數(shù)據(jù);否則,讀取文件偏移,然后計算請求的數(shù)據(jù)在哪些頁面中,并向下發(fā)送新的IRP。
(4)下層設(shè)備將頁面的數(shù)據(jù)以密文的方式發(fā)送給過濾設(shè)備,然后再發(fā)送給寫派遣函數(shù)例程。
(5)完成例程調(diào)用解密函數(shù)將數(shù)據(jù)進(jìn)行解密,解密后的數(shù)據(jù)覆蓋原始的頁面數(shù)據(jù)。再用初始的IRP_MJ_WRITE對這些頁面進(jìn)行刷新,然后用密鑰進(jìn)行加密。
(6)加密算法為AES-128,密鑰以創(chuàng)建文件的時間作為種子。
其回調(diào)函數(shù)的注冊和派遣函數(shù)的定義如下:
而文件解密的過程和加密的過程類似,筆者在這里不再進(jìn)行闡述。在這個處理的過程中,所有的操作都在SwapBuffer中完成,不管是對文件進(jìn)行加密還是解密,原始IRP所帶的數(shù)據(jù)如果在Swap-Buffer中則為明文,如果對磁盤進(jìn)行讀寫,則全部都是密文。
2.3.3 訪問策略控制模塊設(shè)計
訪問策略控制主要是對I/O管理器發(fā)送來的所有IRP進(jìn)行判斷,根據(jù)判斷的結(jié)構(gòu)確定哪些數(shù)據(jù)需要進(jìn)行加密,哪些數(shù)據(jù)用來解密,哪些數(shù)據(jù)不進(jìn)行處理,哪些直接拒絕訪問[4]。由于系統(tǒng)中大部分對磁盤文件的操作都是IRP_MJ_CREATE,因此系統(tǒng)通過數(shù)據(jù)庫中的三個配置表中進(jìn)行控制,即加密文件表、加密進(jìn)程表和加密的明細(xì)表。這三張表分別保存已經(jīng)被加密的文件的加密信息、加密進(jìn)程的名稱以及要進(jìn)行加密的文件或者目錄列表。文件加密列表的部分代碼如下:
如果客戶端進(jìn)程發(fā)起加密IRP,首先判斷該文件是否在文件加密列表中,如果是則進(jìn)行加解密操作;否則不予處理。
2.3.4 文件監(jiān)控模塊設(shè)計
文件監(jiān)控模塊的實現(xiàn)需要對文件系統(tǒng)進(jìn)行動態(tài)或者靜態(tài)的綁定。該模塊主要用來將發(fā)往文件系統(tǒng)的IRP進(jìn)行攔截,由于現(xiàn)有的文件系統(tǒng)不太容易枚舉,所以在過濾驅(qū)動安裝后,要重啟機(jī)器以便回調(diào)函數(shù)的調(diào)用,將文件系統(tǒng)載入內(nèi)存。然后獲取I/O堆棧的當(dāng)前指針,再通過該指針得到設(shè)備指針,只有對文件系統(tǒng)進(jìn)行了綁定,才能實現(xiàn)對文件的監(jiān)控。
本研究通過透明加解密技術(shù),在不影響用戶使用習(xí)慣的前提下,對磁盤存儲的數(shù)據(jù)進(jìn)行安全防護(hù),有效提高了數(shù)據(jù)的安全性,避免了非法用戶的越權(quán)訪問和有意的信息泄露。
[1]張漢寧,房鼎益,陳曉江,湯戰(zhàn)勇.基于透明加解密的數(shù)字內(nèi)容安全防護(hù)系統(tǒng)[J].西北大學(xué)學(xué)報:自然科學(xué)版,2010,40(3):437-447.
[2]李志勇,葉柏龍.基于文件過濾驅(qū)動的文檔透明加解密系統(tǒng)原理[J].東莞理工學(xué)院學(xué)報,2010,17(3):48-50.
[3]張杲軒.WindowsNT的驅(qū)動級加解密技術(shù)研究與實現(xiàn):碩士學(xué)位論文[D].西安:電子科技大學(xué),2010:26.
[4]鄒家銀,李培峰.透明加解密系統(tǒng)原理與實現(xiàn)分析[J].計算機(jī)與現(xiàn)代化,2012(3):85-88.