劉意先 吳限 羅康健 張巍耀
【摘要】 為解決計算機(jī)主機(jī)系統(tǒng)存在的安全漏洞,增強(qiáng)全性,開發(fā)出一款基于移動存儲設(shè)備的主機(jī)安全保護(hù)系統(tǒng)(以下簡稱系統(tǒng))。系統(tǒng)針對當(dāng)前個人主機(jī)的安全性問題,通過修改主機(jī)MBR引導(dǎo),以及主機(jī)喚醒后的Hook函數(shù)的訪問控制,提出了一種新式的、操作簡單,同時具有拓展性的主機(jī)安全保護(hù)措施,保證非專業(yè)行的普通用戶的主機(jī)不受威脅。系統(tǒng)具有唯一性和不可否認(rèn)性,防止偽造驗證信息.同時驗證設(shè)備與方式具有可更改和可拓展性,由移動存儲設(shè)備進(jìn)行動態(tài)加密,使以后每次解密的密鑰都是不一樣的,即使丟失移動存儲設(shè)備,MBR很難被破解。經(jīng)過測試,系統(tǒng)可以有效的解決主機(jī)的安全問題,實現(xiàn)主機(jī)安全保護(hù)。
【關(guān)鍵詞】 訪問控制 附加硬件 隨機(jī)密鑰
隨著科技的不斷發(fā)展,計算機(jī)已經(jīng)成為人們的必需品,但是計算機(jī)的安全問題一直困擾著廣大用戶。近年來,計算機(jī)丟失后資料被輕松竊取的情況頻頻發(fā)生。反映出目前的計算機(jī)應(yīng)用中存在著以下不足[1]:易于泄漏[2]、易于猜測、易于攻擊,無法提供足夠的訪問安全性。針對以上問題開發(fā)出一款基于移動存儲設(shè)備的主機(jī)安全保護(hù)系統(tǒng)。系統(tǒng)提出了一種新式的、操作簡單,同時具有拓展性的主機(jī)安全保護(hù)措施[3]。以此來保證非專業(yè)行的普通用戶也能確保自己的主機(jī)不受威脅。系統(tǒng)包含上位機(jī)程序模塊以實現(xiàn)基于windows操作系統(tǒng)的主機(jī)鎖定和對訪問權(quán)限的控制。底層匯編程序模塊以實現(xiàn)對主機(jī)喚醒之前的引導(dǎo)區(qū)域程序的控制,使主機(jī)操作系統(tǒng)的跳轉(zhuǎn)在移動存儲設(shè)備模塊實現(xiàn)。移動存儲設(shè)備模塊實現(xiàn)計算機(jī)使用過程中如果拔出移動存儲設(shè)備,實現(xiàn)整個系統(tǒng)輸入鎖死。操作者需要再次刷入驗證信息,驗證正確后,操作者方可對主機(jī)進(jìn)行操作。系統(tǒng)的主要特點是移動存儲設(shè)備在經(jīng)過軟件安裝后具有唯一性與不可否認(rèn)性,防止偽造驗證信息。驗證設(shè)備與方式具有可更改和可拓展性,移動存儲設(shè)備模塊可由智能手機(jī)替換,通過手機(jī)的屏幕滑動解鎖方式,操作方便快捷。同時由移動存儲設(shè)備進(jìn)行動態(tài)加密,使以后每次解密的密鑰都是不一樣的,即使丟失移動存儲設(shè)備,我們的MBR很難被破解。
在測試中,針對BIOS讀取引導(dǎo)扇區(qū)將匯編信息顯示在屏幕上和Hook API自動鎖死鍵鼠等功能進(jìn)行了測試,還針對客戶機(jī)掉電或強(qiáng)行關(guān)機(jī)后重啟機(jī)器,不丟失數(shù)據(jù)等可靠性,安全性,兼容性進(jìn)行了測試。測試的結(jié)果表明,本系統(tǒng)可以有效的解決主機(jī)的安全問題,實現(xiàn)基于移動存儲設(shè)備的主機(jī)安全保護(hù)。
一、系統(tǒng)結(jié)構(gòu)
系統(tǒng)針對當(dāng)前個人主機(jī)的安全性問題,通過修改主機(jī)MBR引導(dǎo),以及主機(jī)喚醒后的Hook函數(shù)的訪問控制,提出了一種新式的、操作簡單,同時具有拓展性的主機(jī)安全保護(hù)措施。以此來保證非專業(yè)行的普通用戶也能確保自己的主機(jī)不受威脅。
系統(tǒng)如圖1包括兩部分:1.基于主機(jī)的軟件程序中包含了上位機(jī)程序:基于windows操作系統(tǒng),利用Hook API對喚醒后的主機(jī)進(jìn)行鎖定,直到接受到移動存儲設(shè)備板傳遞來的操作指令。并根據(jù)操作指令對訪問權(quán)限進(jìn)行控制。底層匯編程序:軟件面向cpu編程。主機(jī)喚醒之前的引導(dǎo)區(qū)域程序,通過修改硬盤1磁道0扇區(qū)的整個64字節(jié)匯編代碼,使主機(jī)操作系統(tǒng)的跳轉(zhuǎn)在移動存儲設(shè)備模塊實現(xiàn)。 2.安全終端載體移動存儲設(shè)備。
二、核心技術(shù)
2.1 移動存儲設(shè)備驗證模塊
移動存儲設(shè)備模塊實現(xiàn)動態(tài)加密和問題。首先將MBR放到ARM的扇區(qū)中,然后進(jìn)行每一位的按位加密,寫好簡單加密算法對MBR進(jìn)行加密。然后調(diào)用隨機(jī)函數(shù)生成一個512B的字符串,與原來字符串進(jìn)行按位加密運(yùn)算,解密的時候用原來的字符串與加密MBR進(jìn)行按位解密運(yùn)算,然后再與原來第一步實現(xiàn)的加密算法進(jìn)行解密,得到真正的MBR。在進(jìn)入計算機(jī)之前,只有BIOS,而BIOS有著非常簡單的計算和處理能力,那么移動存儲設(shè)備和計算機(jī)BIOS的通信只能通過字符串傳遞,而不能通過文件的形式傳遞,那么用512個字符當(dāng)成文件,將512個字符傳送到MBR指定的位置上,然后由固化在硬盤扇區(qū)中的程序?qū)⒄嬲腗BR加載到指定扇區(qū),就能夠開機(jī)啟動。
2.2 計算機(jī)引導(dǎo)匯編部分
(1)分析計算機(jī)啟動的引導(dǎo)過程:按下開機(jī)電源→固化在計算機(jī)主板上的BIOS進(jìn)行開機(jī)自檢→如果自檢成功→檢測第一存儲外設(shè)的第一塊扇區(qū)標(biāo)志位是否是55AA→是則BIOS將第一外設(shè)存儲的第一個扇區(qū)(也就是MBR)加載到計算機(jī)內(nèi)存0000:7C00H處,不是則檢測第二存儲外設(shè)…… →然后將計算機(jī)的控制權(quán)力給了第一外設(shè)的第一快硬盤分區(qū)→計算機(jī)開始執(zhí)行該扇區(qū)上的代碼 →代碼將執(zhí)行一系列代碼引導(dǎo)計算機(jī)啟動。
(2)由于系統(tǒng)主要在重寫MBR,所以下面來分析下MBR:MBR一共512B,是446B+64B+2B的結(jié)構(gòu):446B是功能性引導(dǎo)代碼部分,這一部分是寫功能代碼的區(qū)域,代碼的長度不能超過446B,如果超過就要跨扇區(qū)寫代碼,對于程序的穩(wěn)定性和可移植性都有一定的影響,所以將代碼控制在446B;64B是計算機(jī)分區(qū)表,分區(qū)表的功能是為電腦的磁盤劃分多個分區(qū)便于用戶管理,最多四個表項每個表項16B,如果這一部分丟失,那么計算機(jī)識別的硬盤就是一整硬盤,毫無意義,如果加密該64B的內(nèi)容,那么對于磁盤的信息保護(hù)有了極大的保障。
2B是MBR標(biāo)識符,常為55AA,如果不是這個數(shù)值,那么則該扇區(qū)不會當(dāng)做MBR。
(3)匯編程序大體思路
第一步將計算機(jī)真正的MBR備份,以防丟失,把MBR存儲到移動存儲設(shè)備的存儲器中,然后將MBR進(jìn)行按位加密,這樣即使以后有人得到移動存儲設(shè)備外設(shè),也很難能夠分析出來MBR在什么地方;
第二步向計算機(jī)磁盤的第一扇區(qū)寫上代碼,代碼功能是在屏幕上顯示如圖2。
第三步是將移動存儲設(shè)備的代碼寫入到移動存儲設(shè)備指定扇區(qū),代碼功能是在屏幕上顯示,如圖3。
ENTER THE SYSTEM然后等待驗證識別,如果成功將MBR解密寫入扇區(qū),如果失敗將虛擬MBR寫入扇區(qū),最后都會把計算機(jī)的引導(dǎo)權(quán)給計算機(jī)。
2.3 上位機(jī)程序模塊
模塊如圖4所示。
2.3.1 開機(jī)自啟原理
在上位機(jī)程序代碼中使用RegCreateKey等注冊表函數(shù)在注冊表HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\Run下新建一個字符串,值為所要自動執(zhí)行的程序名,將數(shù)據(jù)設(shè)置為程序所在的目錄,即可將該程序設(shè)置自動執(zhí)行。當(dāng)程序第一次執(zhí)行時,寫入注冊表行為同時得到執(zhí)行,由此實現(xiàn)了上位機(jī)程序的開機(jī)自啟動。主機(jī)喚醒后,由于Hook程序的自啟動,因此,主機(jī)屏蔽所有鍵盤鼠標(biāo)消息。
2.3.2 程序相關(guān)源代碼
Hook模塊定義文件
1 LIBRATY Hook
2 EXPORTS
3 SetHook @2
4 SEGMENTS
5 MySec READ WRITE SHARED
由于單一程序調(diào)用的HOOK API是僅在當(dāng)前程序下的線程消息,所以需要設(shè)置動態(tài)鏈接庫(DLL)實現(xiàn)Hook對系統(tǒng)全局消息的屏蔽。由于DLL由模塊定義文件及Hook函數(shù)設(shè)置編譯得到,所以此處無法附上DLL代碼
加載全局定義
5 #pragma data_seg(“MySec”)
6 HWND g_hWnd=NULL;
7 #pragma data_seg()
8 //#pragma comment (lib,”Hook.lib”)
9 #pragma comment(linker,”/section:MySec,RWS”)
Hook函數(shù)定義
調(diào)用聲明
_declspec(dllimport) void SetHook(HWND hwnd);
DLL及客戶端程序聯(lián)調(diào)
int cxScreen,cyScreen;
cxScreen=GetSystemMetrics(SM_CXSCREEN);
cyScreen=GetSystemMetrics(SM_CXSCREEN);
SetwindowPos(&wndTopMost,0,0,cxScreen,cy
Screen,SWP_SHOWWINDOW);
SetHook(m_hWnd);
直到接收到ARM嵌入式板傳遞來的指紋特征信息碼。
三、創(chuàng)新性、可拓展性
(1)獨立于主機(jī)的移動存儲設(shè)備:通過外置的移動存儲設(shè)備,將個人安全信息識別提取傳遞的實現(xiàn)在主機(jī)系統(tǒng)之外,避免由于主機(jī)系統(tǒng)可能存在的漏洞或者其他可以繞過系統(tǒng)安全設(shè)置的工具,突破針對個人主機(jī)設(shè)置的安全環(huán)境。(2)對系統(tǒng)引導(dǎo)扇區(qū)的轉(zhuǎn)移與重寫:仍然通過外置移動存儲設(shè)備,將系統(tǒng)1磁道0扇區(qū)的系統(tǒng)引導(dǎo)轉(zhuǎn)移至移動存儲設(shè)備閃存,在主機(jī)喚醒之前就已經(jīng)設(shè)置了安全屏障。將提示信息寫入0扇區(qū),為用戶提供操作指南。(3)啟動后的主機(jī)訪問控制:以HOOK API對系統(tǒng)全局消息進(jìn)行屏蔽,同時寫入注冊表運(yùn)行,避免非法用戶對喚醒后主機(jī)進(jìn)行重啟、注銷等操作的以此突破訪問控制。(4)驗證方式的可拓展性與多樣性:智能手機(jī)的使用已經(jīng)普遍化、大眾化,手機(jī)用戶的滑屏、手勢解鎖可用以對系統(tǒng)個人信息驗證進(jìn)行替代,再根據(jù)鍵鼠無線輸入輸出的原理,手機(jī)用戶即可方便快捷地對主機(jī)進(jìn)行喚醒前后的安全控制。省去了外置生物模塊設(shè)備對大眾的陌生感與操作困難。
四、結(jié)論
針對當(dāng)前主機(jī)訪問控制所面臨的嚴(yán)重安全問題,系統(tǒng)從移動存儲設(shè)備與密碼體制結(jié)合的角度實現(xiàn)了對主機(jī)系統(tǒng)的安全訪問,實現(xiàn)了對計算機(jī)加解密,訪問唯一性,開關(guān)機(jī)驗證等安全認(rèn)證功能。與現(xiàn)有的主機(jī)身份認(rèn)證方式相比,系統(tǒng)實現(xiàn)了主機(jī)安全的自主防護(hù),以移動存儲設(shè)備為硬件載體,結(jié)合上層軟件形成了多層次、立體化的安全防御體系,賦予了多層權(quán)限訪問控制策略,極大地保證了主機(jī)訪問控制安全。基于移動存儲設(shè)備的主機(jī)安全保護(hù)系統(tǒng)應(yīng)用前景極其廣闊,根據(jù)生物特征識別技術(shù)的拓展性與多樣性,可廣泛應(yīng)用于個人、企事業(yè)單位、政府、軍隊等用戶存儲隱私或機(jī)密數(shù)據(jù),也可以擴(kuò)展應(yīng)用到銀行業(yè)務(wù)、電子商務(wù)、數(shù)字版權(quán)、專利等更廣泛的領(lǐng)域。
參 考 文 獻(xiàn)
[1] 尤一名. 主機(jī)安全檢測系統(tǒng)的研究和實現(xiàn)[D]. 北京:北京交通大學(xué),2010
[2] 單國棟. 計算機(jī)電磁信息泄露與防護(hù)研究[J]. 電子技術(shù)應(yīng)用,2002,(04):3-6
[3] 侯興超. 基于移動存儲設(shè)備管理的主機(jī)防信息泄露系統(tǒng)研究[D]. 北京:解放軍信息工程大學(xué),2007