一種基于uefi的軟件實(shí)時(shí)保護(hù)系統(tǒng)和方法
【技術(shù)領(lǐng)域】
[0001]本發(fā)明涉及計(jì)算機(jī)安全技術(shù)領(lǐng)域,具體涉及一種基于UEFI固件,在開(kāi)機(jī)引導(dǎo)操作系統(tǒng)啟動(dòng)后,對(duì)軟件進(jìn)行實(shí)時(shí)保護(hù)的方法
【背景技術(shù)】
[0002]目前,在計(jì)算機(jī)安全領(lǐng)域,運(yùn)行程序主要是通過(guò)本地操作系統(tǒng)的守護(hù)進(jìn)程或遠(yuǎn)程的認(rèn)證服務(wù)器進(jìn)行保護(hù),主要是對(duì)程序文件的完整性和程序運(yùn)行狀態(tài)的檢測(cè)。
[0003]在操作系統(tǒng)層或通過(guò)網(wǎng)絡(luò)對(duì)應(yīng)用程序進(jìn)行實(shí)時(shí)保護(hù),特別是對(duì)關(guān)鍵可執(zhí)行程序進(jìn)行保護(hù),有著以下的不足,主要包括:
[0004](I)在計(jì)算設(shè)備更換硬盤(pán)、Flash等存儲(chǔ)被保護(hù)程序的裝置后,將不能自動(dòng)地恢復(fù)被保護(hù)可執(zhí)行程序文件、進(jìn)行重啟及監(jiān)控運(yùn)行狀態(tài)。
[0005](2)在對(duì)硬盤(pán)、Flash等被保護(hù)程序的存儲(chǔ)空間進(jìn)行重新分區(qū)后,計(jì)算設(shè)備將不能自動(dòng)地恢復(fù)被保護(hù)可執(zhí)行程序文件、進(jìn)行重啟及監(jiān)控運(yùn)行狀態(tài)。
[0006](3)在對(duì)硬盤(pán)、Flash等被保護(hù)程序的存儲(chǔ)空間進(jìn)行格式化后,計(jì)算設(shè)備將不能自動(dòng)地恢復(fù)被保護(hù)可執(zhí)行程序文件、進(jìn)行重啟及監(jiān)控運(yùn)行狀態(tài)。
[0007](4)當(dāng)被保護(hù)可執(zhí)行程序文件不屬于操作系統(tǒng)自帶軟件的情況下,在計(jì)算設(shè)備重新安裝操作系統(tǒng)后,將不能自動(dòng)地恢復(fù)被保護(hù)可執(zhí)行程序文件、進(jìn)行重啟及監(jiān)控運(yùn)行狀態(tài)。
[0008](5)不能阻止合法的終端使用用戶非法地刪除本地終端上的程序文件、中止程序文件的運(yùn)行。
[0009](6)當(dāng)終端的操作系統(tǒng)中的特定軟件文件被病毒或木馬篡改和刪除后,將不能自動(dòng)地進(jìn)行恢復(fù)。
[0010](7)守護(hù)進(jìn)程比較容易地被合法的終端用戶進(jìn)行關(guān)閉。
[0011](8)網(wǎng)絡(luò)認(rèn)證方法的實(shí)時(shí)性容易受到網(wǎng)絡(luò)狀態(tài)的影響。
【發(fā)明內(nèi)容】
[0012]本發(fā)明的目的是為了克服已有技術(shù)的缺陷,為了解決在更換硬盤(pán)、Flash等存儲(chǔ)空間的情況下,無(wú)法恢復(fù)被保護(hù)文件、特別是關(guān)鍵程序文件的問(wèn)題,提出一種基于UEFI的軟件實(shí)時(shí)保護(hù)系統(tǒng)和方法。
[0013]一種基于UEFI的軟件實(shí)時(shí)保護(hù)系統(tǒng),包括軟件實(shí)時(shí)守護(hù)程序驅(qū)動(dòng)模塊、軟件實(shí)時(shí)保護(hù)系統(tǒng)服務(wù)端、定時(shí)守護(hù)|吳塊和被保護(hù)程序;
[0014]所述軟件實(shí)時(shí)守護(hù)驅(qū)動(dòng)模塊是符合UEFI規(guī)范的固件模塊,包括環(huán)境加載和安裝器子模塊、文件檢測(cè)器子模塊、狀態(tài)檢測(cè)器子模塊和程序存儲(chǔ)器子模塊;其中,環(huán)境加載子模塊和安裝器子模塊是在開(kāi)機(jī)過(guò)程中加載相應(yīng)的驅(qū)動(dòng),建立文件檢測(cè)器的運(yùn)行環(huán)境;文件檢測(cè)器子模塊的作用是在操作系統(tǒng)啟動(dòng)后,對(duì)計(jì)算機(jī)等設(shè)備的硬盤(pán)或Flash等存儲(chǔ)空間中的特定文件進(jìn)行檢測(cè),如果發(fā)現(xiàn)文件被篡改或刪除,將釋放儲(chǔ)存在固件中的被保護(hù)文件到硬盤(pán)或Flash等其他存儲(chǔ)設(shè)備;狀態(tài)檢測(cè)器子模塊的作用是在操作系統(tǒng)啟動(dòng)后,對(duì)指定的被保護(hù)程序的狀態(tài)進(jìn)行檢測(cè),如果發(fā)現(xiàn)被保護(hù)程序未能啟動(dòng)或運(yùn)行狀態(tài)錯(cuò)誤,將對(duì)被保護(hù)程序進(jìn)行恢復(fù)和重啟;
[0015]所述軟件實(shí)時(shí)保護(hù)系統(tǒng)服務(wù)端通過(guò)網(wǎng)絡(luò)將新的被保護(hù)程序文件和校驗(yàn)值發(fā)送到客戶端設(shè)備,更新被保護(hù)程序相關(guān)文件;同時(shí),軟件實(shí)時(shí)保護(hù)系統(tǒng)客戶端還可以對(duì)被保護(hù)程序及被保護(hù)程序校驗(yàn)值進(jìn)行更新,更新的方式包括網(wǎng)絡(luò)或外部存儲(chǔ)設(shè)備;
[0016]所述定時(shí)守護(hù)模塊用于根據(jù)配置文件中的時(shí)間間隔,調(diào)用軟件實(shí)時(shí)保護(hù)系統(tǒng)驅(qū)動(dòng)模塊,進(jìn)行軟件保護(hù);
[0017]所述被保護(hù)程序是通過(guò)服務(wù)端發(fā)送的,可以動(dòng)態(tài)綁定的第三方應(yīng)用軟件。
[0018]一種基于UEFI的可執(zhí)行程序?qū)崟r(shí)保護(hù)方法,其實(shí)現(xiàn)步驟如下:
[0019]步驟一、計(jì)算機(jī)等設(shè)備開(kāi)機(jī)上電;
[0020]步驟二、開(kāi)始進(jìn)入U(xiǎn)EFI的開(kāi)機(jī)引導(dǎo)過(guò)程,加載所需的硬件驅(qū)動(dòng);
[0021]步驟三、檢測(cè)是否進(jìn)入更新模式;如果不需要進(jìn)入更新模式,則轉(zhuǎn)入步驟四;如果進(jìn)入了更新模式,將在固件層對(duì)被保護(hù)程序進(jìn)行更新;
[0022]步驟四、檢查操作系統(tǒng)是否安裝了定時(shí)守護(hù)模塊和被保護(hù)程序文件;
[0023]步驟五、啟動(dòng)操作系統(tǒng);
[0024]步驟六、檢測(cè)定時(shí)守護(hù)模塊是否啟動(dòng);如果啟動(dòng),則轉(zhuǎn)入步驟七;如果檢測(cè)定時(shí)模式未能啟動(dòng),則在固件層釋放和啟動(dòng)定時(shí)守護(hù)模塊;
[0025]步驟七、定時(shí)守護(hù)模塊將根據(jù)擬定的時(shí)間定時(shí)調(diào)用UEFI的軟件實(shí)時(shí)保護(hù)系統(tǒng)驅(qū)動(dòng)模塊,對(duì)被保護(hù)程序文件進(jìn)行檢測(cè);
[0026]步驟八、檢測(cè)被保護(hù)程序的文件是否存在;如果程序文件存在,則轉(zhuǎn)入步驟九;如果程序文件不存在,則通過(guò)服務(wù)器或本地存儲(chǔ)空間,恢復(fù)可執(zhí)行程序文件,并進(jìn)行安裝;
[0027]步驟九、根據(jù)配置腳本中的路徑和程序名,啟動(dòng)被保護(hù)程序;
[0028]步驟十、檢測(cè)被保護(hù)程序是否已經(jīng)啟動(dòng);如果啟動(dòng),則轉(zhuǎn)入步驟十一;否則,根據(jù)配置文件,重啟被保護(hù)程序;
[0029]步驟十一、檢測(cè)被保護(hù)程序運(yùn)行狀態(tài)是否正確;如果正確,則轉(zhuǎn)入步驟十二,否則,恢復(fù)被保護(hù)程序文件,并根據(jù)配置文件,重啟被保護(hù)程序;
[0030]步驟十二、繼續(xù)運(yùn)行程序,該流程結(jié)束。
[0031]在所述步驟三中,將首先檢測(cè)是否要進(jìn)行固件更新;進(jìn)行固件更新的主要目的是對(duì)被保護(hù)程序的文件和校驗(yàn)值進(jìn)行更新;包括以下步驟,如圖4所示;
[0032]步驟1、開(kāi)機(jī)上電后,進(jìn)入固件開(kāi)機(jī)引導(dǎo)流程;
[0033]步驟2、檢測(cè)當(dāng)前開(kāi)機(jī)引導(dǎo)過(guò)程是否需要進(jìn)入固件文件更新模式;如果進(jìn)入了更新模式將進(jìn)入步驟3,否則,繼續(xù)進(jìn)行開(kāi)機(jī)引導(dǎo);
[0034]步驟3、檢測(cè)當(dāng)前的更新模式是否需要通過(guò)網(wǎng)絡(luò)進(jìn)行更新;如果通過(guò)網(wǎng)絡(luò)更新則轉(zhuǎn)入步驟4 ;否則,檢測(cè)是否有本地或外接存儲(chǔ)空間中有固件更新文件;如果有更新文件則從存儲(chǔ)設(shè)備中讀取更新文件,根據(jù)配置文件,對(duì)存儲(chǔ)文件的固件部分進(jìn)行更新,轉(zhuǎn)入步驟5 ;
[0035]步驟4、將向軟件實(shí)時(shí)保護(hù)系統(tǒng)服務(wù)端發(fā)送下載請(qǐng)求,下載相應(yīng)的被保護(hù)文件、定時(shí)守護(hù)模塊;
[0036]步驟5、根據(jù)配置文件,對(duì)存儲(chǔ)文件的固件部分進(jìn)行更新;
[0037]步驟6、重啟,進(jìn)入開(kāi)機(jī)引導(dǎo)過(guò)程,該流程結(jié)束。
[0038]在步驟四中,將會(huì)檢查操作系統(tǒng)是否安裝了定時(shí)守護(hù)模塊和被保護(hù)程序文件;主要包括以下步驟:
[0039]步驟1、進(jìn)入開(kāi)機(jī)引導(dǎo)過(guò)程,檢測(cè)硬盤(pán)是否存在,如果存在,則進(jìn)入步驟2,否則結(jié)束;
[0040]步驟2、在固件層加載讀取硬盤(pán)或Flash等存儲(chǔ)空間的驅(qū)動(dòng)模塊;
[0041]步驟3、在固件層識(shí)別相應(yīng)的系統(tǒng)分區(qū);
[0042]步驟4、對(duì)每個(gè)分區(qū)進(jìn)行檢測(cè),查看分區(qū)的文件系統(tǒng);
[0043]步驟5、針對(duì)不同的文件系統(tǒng),加載相應(yīng)的驅(qū)動(dòng)模塊;
[0044]步驟6、在識(shí)別分區(qū)的文件系統(tǒng)后,將會(huì)根據(jù)配置文件,檢測(cè)實(shí)時(shí)守護(hù)驅(qū)動(dòng)程序安裝路徑的文件是否存在;如果存在,則轉(zhuǎn)入步驟7 ;否則,將固件中保存的定時(shí)守護(hù)模塊文件恢復(fù)到指定的硬盤(pán)分區(qū)上,轉(zhuǎn)入步驟10 ;
[0045]步驟7、對(duì)定時(shí)守護(hù)模塊進(jìn)行完整性度量;
[0046]步驟8、判斷定時(shí)守護(hù)模塊文件是否完整,是否被篡改或刪除;如果文件存在,并無(wú)異常,則轉(zhuǎn)入步驟9;否則,將固件中保存的定時(shí)守護(hù)模塊文件恢復(fù)到指定的硬盤(pán)分區(qū)上,轉(zhuǎn)入步驟10 ;
[0047]步驟9、根據(jù)配置文件,檢測(cè)被守護(hù)軟件路徑上的文件是否存在;如果存在,則轉(zhuǎn)入步驟10,否則,將固件中保存的被保護(hù)文件恢復(fù)到指定的硬盤(pán)分區(qū)上;
[0048]步驟10、對(duì)被守護(hù)軟件進(jìn)行完整性度量;判斷被守護(hù)軟件文件是否完整,是否被篡改或刪除;如果文件存在,并無(wú)異常,則轉(zhuǎn)入步驟11,否則,將固件中保存的被保護(hù)文件恢復(fù)到指定的硬盤(pán)分區(qū)上;
[0049]步驟11、繼續(xù)引導(dǎo)流程,流程結(jié)束。
[0050]在步驟十中,將通過(guò)定時(shí)守護(hù)模塊對(duì)調(diào)用固件層的軟件實(shí)時(shí)保護(hù)系統(tǒng)驅(qū)動(dòng)程序,對(duì)操作系統(tǒng)中的程序進(jìn)行檢查,如圖6所示;包括以下步驟:
[0051]步驟1、定時(shí)守護(hù)模塊跟隨操作系統(tǒng)自啟動(dòng);
[0052]步驟2、定時(shí)守護(hù)模塊根據(jù)默認(rèn)的時(shí)間間隔調(diào)用UEFI定時(shí)守護(hù)模塊;
[0053]步驟3、檢測(cè)定時(shí)守護(hù)模塊與實(shí)時(shí)守護(hù)驅(qū)動(dòng)程序的時(shí)間間隔是否同步;如果時(shí)間一致,則轉(zhuǎn)入步驟4 ;否則,對(duì)實(shí)時(shí)守護(hù)驅(qū)動(dòng)程序的時(shí)間間隔進(jìn)行更新,轉(zhuǎn)入步驟2 ;
[0054]步驟4、UEFI實(shí)時(shí)守護(hù)程序檢測(cè)被守護(hù)軟件的完整性度量;
[0055]步驟5、檢測(cè)被守護(hù)軟件是否完整;如果文件完整,則進(jìn)入步驟6 ;