基于USB的存儲設備信息安全防護設計
0 引言
計算機和計算機網(wǎng)絡(luò )已經(jīng)成為當前企業(yè)、政府和其它各種組織的重要信息載體和傳輸渠道。但是,人們在享受計算機以及計算機網(wǎng)絡(luò )所帶來(lái)的方便性的同時(shí),信息安全也成為目前受到廣泛關(guān)注的問(wèn)題。美國聯(lián)邦調查局(FBI)和計算機安全機構(CSl)等權威機構的研究證明:超過(guò)80%的信息安全隱患是來(lái)自組織內部。內部的安全狀況較差,不僅會(huì )給攻擊者以可乘之機,還會(huì )使已構建的安全設施形同虛設,為內部安全違規事件的發(fā)生打開(kāi)方便之門(mén)。目前廣泛采用的安全設備和安全措施,均側重于對付外部的攻擊、侵犯和威脅,而無(wú)法阻止內部不懷好意的員工盜取涉密信息并將其拷貝或傳播出去。因此,數據資源的保密以及非法外泄的防范已成為當前迫在眉睫的安全需求。而利用USB存儲設備的單向控制技術(shù)可對接人計算機的存儲介質(zhì)進(jìn)行控制,以防止信息被有意或者無(wú)意地從移動(dòng)存儲設備泄漏出去。由于用戶(hù)可以根據需要設定存儲設備的使用權限(比如只讀或者讀寫(xiě)等),因此,該方法既保留了移動(dòng)設備的方便性,又堵截了移動(dòng)存儲設備可能帶來(lái)的安全隱患。
1 單向控制的設計與實(shí)現
本文采用對磁盤(pán)驅動(dòng)器進(jìn)行過(guò)濾的方法來(lái)實(shí)現USB存儲設備的單向控制。該技術(shù)以DDK中的filter為原形。采用標準的WDM過(guò)濾,可攔截所有對USB存儲設備的寫(xiě)操作,從而實(shí)現U盤(pán)的單向控制。其中過(guò)濾器驅動(dòng)程序是可選擇的驅動(dòng)程序,它可以給設備增加值或修改設備行為,而且,該過(guò)濾器驅動(dòng)程序能服務(wù)于一個(gè)或多個(gè)設備。由于頂層的過(guò)濾器驅動(dòng)程序主要是為某一設備提供增值特征,而低層過(guò)濾器驅動(dòng)程序則主要修改設備的硬件行為。所以,本文選擇使用低層設備過(guò)濾器驅動(dòng)程序,來(lái)監視和修改磁盤(pán)驅動(dòng)器的I/0請求。
1.1 驅動(dòng)程序的基本結構
一個(gè)WDM驅動(dòng)程序的基本結構包括一組必要的,通過(guò)系統定義的標準驅動(dòng)程序函數,同時(shí)還有一些可選的標準函數與內部函數(取決于驅動(dòng)程序的類(lèi)型和下層設備)。對于所有的驅動(dòng)程序,不管它們在附屬驅動(dòng)程序鏈中所處的是那一層,都必須有一組基本的標準函數來(lái)處理IRP。一個(gè)驅動(dòng)程序是否必須執行附加標準函數,取決于該驅動(dòng)程序的類(lèi)型和下層設備是控制一個(gè)物理設備的驅動(dòng)程序,還是在一個(gè)物理設備驅動(dòng)程序之上的驅動(dòng)程序,同時(shí)也取決于下層物理設備的屬性??刂莆锢碓O備的最低層驅動(dòng)程序比較高層驅動(dòng)程序擁有更多所要求的函數,較高層的驅動(dòng)程序一般將IRP傳送給較低層的驅動(dòng)程序來(lái)處理。
下面所列是本驅動(dòng)程序所需要的標準驅動(dòng)程序函數:
(1)DIiveEntry
該函數可用于初始化驅動(dòng)程序并設置其他標準函數的人口點(diǎn)。當驅動(dòng)程序的DriverEntry函數被調用,它將直接在驅動(dòng)程序對象中設置Dispatch和Unload的入口點(diǎn),方法如下:
在驅動(dòng)程序對象內的DriverExtension中設置它的AddDevice函數的人口點(diǎn)方法如下:
DriverObject->DriverExtension一>AddDevice=DDAddDevice;
驅動(dòng)程序能定義若干Dispatch人口點(diǎn),但是它只能在其驅動(dòng)程序對象中定義一個(gè)AddDevice人口點(diǎn)和一個(gè)Unload人口點(diǎn)。
(2) AddDevice
AddDevice函數主要用于創(chuàng )建設備對象,地址在DriverObject->DriverExtension->AddDevice。
(3)Dispatch
該函數至少應一個(gè)Dispatch人口點(diǎn)。因為要用一個(gè)或多個(gè)主要功能來(lái)編碼處理IRP,以得到請求PnP、電源和I/O操作的IRP。
(4)Unload
如果驅動(dòng)程序能動(dòng)態(tài)地被裝載和/或者替換,還需要一個(gè)Unload人口點(diǎn),以釋放系統資源(諸如驅動(dòng)程序已分配的系統對象或者內存等)。
1.2驅動(dòng)程序的實(shí)現
實(shí)現驅動(dòng)程序時(shí),首先要為設備定義GUID。驅動(dòng)程序使用設備名和GUID(globallv unique identifiers)來(lái)標識不同的物理、邏輯或虛擬設備。PnP驅動(dòng)程序可注冊并激活一個(gè)與GUID連接的設備接口,應用程序和其他系統組件則可通過(guò)接口對設備進(jìn)行I/O請求和控制,WDM用于過(guò)濾驅動(dòng)禁止給它們的設備對象命名,所以,要為設備定義GUID。
評論