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