一種bios自更新保護系統(tǒng)及方法
【技術領域】
[0001]本發(fā)明涉及計算機系統(tǒng)領域,具體而言是一種B1S安全更新和防篡改保護的系統(tǒng)和方法。
【背景技術】
[0002]B1S (Basic Input/Output System,基本輸入輸出系統(tǒng))是計算機系統(tǒng)中的基礎元件,計算機在上電后通過B1S初始化CPU及芯片組,引導操作系統(tǒng)提供用戶正常使用。
[0003]計算技術的發(fā)展和應用需求導致目前存儲B1S系統(tǒng)固件的芯片普遍采用Flash芯片。Flash芯片的使用為B1S系統(tǒng)帶來兩個突出變化:(I)存儲B1S的芯片容量增加;
(2)在操作系統(tǒng)環(huán)境下能夠以純軟件方式讀寫B(tài)1S。這兩個變化一方面便于B1S的在線更新升級;另一方面導致攻擊B1S系統(tǒng)的技術逐步成熟,使第三方惡意者向B1S中植入惡意代碼、病毒、木馬等成為可能,對計算機安全產(chǎn)生威脅。2011年的Mebromi是一個新的針對B1S的rootkit,它感染電腦主板的B1S芯片和硬盤MBR (主引導區(qū)),再控制Windows系統(tǒng)文件加載惡意代碼,使受害用戶無論重裝系統(tǒng)、格式化硬盤,甚至換掉硬盤都無法將其徹底清除。
[0004]由于B1S系統(tǒng)處于計算機系統(tǒng)底層,因此B1S系統(tǒng)遭受到上述威脅攻擊時,會造成計算機系統(tǒng)的徹底崩潰,或?qū)е掠嬎銠C系統(tǒng)被惡意者從底層控制。安全B1S系統(tǒng)必須能夠防范上述的惡意攻擊,阻止攻擊者植入B1S芯片中的惡意代碼的執(zhí)行,保障B1S系統(tǒng)自身代碼和數(shù)據(jù)的完整性,保證B1S系統(tǒng)的執(zhí)行代碼只來自可信任的B1S廠商、硬件驅(qū)動廠商等。由于不可預知的故障或攻擊導致B1S系統(tǒng)部分完整性遭到破壞時,B1S系統(tǒng)必須提供安全有效的檢測機制和失敗自恢復機制。實施該機制的B1S代碼必須受到硬件保護,保證失敗自恢復機制自身不會遭到破壞。
[0005]目前已經(jīng)有一些對B1S進行保護和更新的系統(tǒng)和方法。專利CN101464933B是根據(jù)用戶在配置界面的選擇,實現(xiàn)對B1S防止寫入的控制。該方法根據(jù)密碼及用戶是否是管理員權限來限制用戶是否可以進入配置界面進行配置。此種方法沒有硬件保護,是一種利用FLASH寫保護命令操作的軟件寫保護方法,無法阻止惡意軟件自己操作FLASH的寫保護命令從而實現(xiàn)對B1S的惡意篡改。專利CN1121012C是利用x86架構平臺特有的系統(tǒng)管理中斷SMI,實現(xiàn)對FLASH芯片的寫保護。這種方法不具有通用性,尤其不能應用于國產(chǎn)的龍芯等處理器平臺。專利CN1231787A通過特定的加密協(xié)處理器硬件裝置對B1S升級進行授權來保護B1S不被非法修改。專利CN101281577B通過特定的可信計算模塊實現(xiàn)對B1S代碼讀寫和更新的訪問控制,來實現(xiàn)對B1S的保護。這兩個專利的硬件設計與實現(xiàn)方法都比較復雜,B1S保護的實現(xiàn)方法都獨立于B1S自身代碼之外,與本發(fā)明的硬件和軟件實現(xiàn)方法都有很大區(qū)別。專利CN100561923C給出了一種在遠程模式下通過網(wǎng)絡接口對B1S數(shù)據(jù)進行更新的方法,通過B1S文件傳輸模塊和存儲模塊中的加密解密模塊保證B1S的數(shù)據(jù)安全,并由B1S更新控制模塊讀取刷新標志位判斷是否更新。
【發(fā)明內(nèi)容】
[0006]為解決上述問題,針對現(xiàn)有技術中的缺陷,本發(fā)明提出了一種利用B1S自身代碼和控制模塊硬件,實現(xiàn)B1S安全更新和寫保護的方法,以達到從底層保護計算機系統(tǒng)安全性的目的。
[0007]一種B1S自更新保護系統(tǒng),包括:CPU及配套芯片組、FLASH芯片和控制模塊。所述CPU及配套芯片組用于執(zhí)行B1S代碼的基本功能、B1S檢測與恢復功能及B1S更新保護功能;所述FLASH芯片用于存儲系統(tǒng)運行過程中正常執(zhí)行的B1S代碼;所述控制模塊,它與FLASH芯片的寫保護引腳相連,用于控制數(shù)據(jù)寫入FLASH芯片,實現(xiàn)對存儲B1S代碼的FLASH芯片的寫保護。
[0008]進一步的,所述FLASH芯片中的B1S代碼,分成BootBlock和MainBlock兩部分,BootBlock中還包括B1S檢測單元和B1S恢復單元,前者用于檢查B1S的完整性,當B1S的完整性檢查失敗時,用后者實現(xiàn)對B1S的恢復。MainBlcok中還包含B1S自更新單元和FLASH保護配置單元,分別用于執(zhí)行正常的B1S更新升級和實現(xiàn)對FLASH芯片寫保護的配置,防止用戶對FLASH芯片中B1S代碼的惡意篡改。
[0009]進一步的,所述控制模塊中包括FLASH寫保護控制單元、更新寄存器和WO寄存器。FLASH寫保護控制單元根據(jù)B1S的配置,實現(xiàn)對FLASH芯片的寫保護。更新寄存器和WO寄存器分別用于標示更新的狀態(tài)和FLASH芯片寫保護的狀態(tài);其中,更新寄存器是非易失性的;W0寄存器是易失性的,且在一次上電過程中,其狀態(tài)只允許改變一次,且只允許從O改為I。
[0010]進一步的,所述BootBlock代碼所在的FLASH部分是被永久寫保護,不可改寫的;MainBlock所在的FLASH部分由控制模塊根據(jù)WO寄存器的值來完成對其的寫保護控制。
[0011]一種B1S自更新保護方法,其特征在于,B1S自更新步驟至少包括:
[0012]步驟S1:生成待更新B1S鏡像;
[0013]步驟S2:設置更新寄存器的狀態(tài)為I,重啟計算機;
[0014]步驟S3:B10S檢測單元檢測B1S的完整性,如果B1S沒有被篡改,則繼續(xù)向下執(zhí)行;如果B1S被篡改,則由B1S恢復單元執(zhí)行對B1S的恢復;
[0015]步驟S4 =B1S自更新單元檢測更新寄存器,若其值為1,則檢測待更新B1S的合法性,并根據(jù)檢測結果執(zhí)行安全更新;
[0016]步驟S5 =B1S的FLASH保護配置單元置WO寄存器為I,控制模塊FLASH寫保護控制單元根據(jù)WO寄存器的狀態(tài)執(zhí)行FLASH硬件寫保護,使得上層軟件不能對FLASH進行寫操作;
[0017]步驟S6:執(zhí)行B1S的其它功能,正常啟動OS。
[0018]進一步的,所述待更新B1S鏡像的生成步驟包括:
[0019]步驟S1.1:開發(fā)編譯生成待升級的B1S鏡像的純代碼;
[0020]步驟S1.2:利用雜湊算法計算B1S鏡像的摘要;
[0021]步驟S1.3:利用私鑰對B1S鏡像的摘要進行簽名;
[0022]步驟S1.4:將B1S鏡像、簽名和公鑰打包,重構成待更新的B1S鏡像;
[0023]進一步的,所述步驟S3中檢測B1S的完整性的步驟包括:
[0024]步驟S3.1 =FLASH中運行的B1S的完整性檢測單元利用自己的公鑰對FLASH中運行的B1S的簽名進行驗簽,得到摘要值A ;
[0025]步驟S3.2 =FLASH中運行的B1S的完整性檢測單元利用自己的摘要算法對FLASH中運行的B1S的代碼進行雜湊運算,得到摘要值B ;
[0026]步驟S3.3:比較摘要值A和B ;
[0027]步驟S3.4:如果A = B,則表明FLASH中運行的B1S MainBlock是合法的,系統(tǒng)繼續(xù)向下執(zhí)行;
[0028]步驟S3.5:如果A關B,則表明FLASH中運行的B1S MainBlock是非法的,由B1S恢復單元執(zhí)行B1S恢復。
[0029]進一步的,所述步驟S4中檢測待更新B1S合法性的步驟包括:
[0030]步驟S4.1 =FLASH中運行的B1S自更新單元利用自己的公鑰對待更新B1S的簽名進行驗簽,得到摘要值A ;
[0031]步驟S4.2 =FLASH中運行的B1S自更新單元利用自己的摘要算法對待更新B1S的代碼進行雜湊運算,得到摘要值B ;
[0032]步驟S4.3:比較摘要值A和B ;
[0033]步驟S4.4:如果A = B,則表明待更新的B1S是合法的,執(zhí)行B1S安全更新并清除更新寄存器為O ;
[0034]步驟S4.5:如果A古B,則表明待更新的B1S是非法的,報警提示,拒絕更新,并清空更新寄存器為O。
[0035]進一步的,所述B1S BootBlock中還應該包括用于驗簽的公鑰以及進行驗簽和計算雜湊時用到的算法;B1S MainBlock中還應該包含B1S自身的簽名、用于驗簽的公鑰以及進行驗簽和計算雜湊時用到的算法。
[0036]進一步的,所述驗簽過程中用到的密鑰對由B1S廠商構建,私鑰與公鑰分別秘密保存,公鑰固化到終端B1S中,避免個人構建密鑰對將非法B1S文件寫入。
[0037]有益效果:
[0038]1、本發(fā)明通過B1S的自更新保護方法,保證B1S不被非授權的修改;即使B1S被非授權修改,也可以通過本發(fā)明的完整性檢測手段檢測到非授權修改,并在當B1S被非授權修改或者崩潰時,對其進行恢復,保證系統(tǒng)的正常運行。
[0039]2、本發(fā)明綜合考慮各種非物理現(xiàn)場的破壞或篡改B1S的潛在威脅,從硬件上控制B1S寫操作,并兼具了軟件更新的易用性,可以保障B1S更新的安全性和正確性。
【附圖說明】
[0040]圖1為B1S自更新保護系統(tǒng)硬件架構圖
[0041]圖2為計算機開機及B1S自更新保護流程圖
[0042]圖3為B1S鏡像簽名驗簽過程圖
[0043]圖4為待更新的B1S鏡像的物理結構圖
【具體實施方式】
[0044]下面結合附圖并舉實施例,對本發(fā)明進行詳細描述。
[0045]如圖1所示,本發(fā)明的B1S自更新保護系統(tǒng)包括:CPU及配套芯片組P10、FLASH芯片P20和控制模塊P30。PlO,即CPU及配套芯片組,用于執(zhí)行B1S代碼的基本功能、B1S檢測與恢復功能及B1S更新保護功能,PlO可以是支持x86、MIPS、SPARC或Alpha等不同指令集類型的處理器架構。P20,即FLASH芯片,用于存儲系統(tǒng)運行過程中正常執(zhí)行的B1S代碼。P30,即所述控制模塊,它通過GP1等方式,與FLASH芯片的寫保護引腳相連,用于控制數(shù)據(jù)寫入FLASH芯片,實現(xiàn)對存儲B1S代碼的FLASH芯片的寫保護。
[0046]P20中的B1S代碼,分成BootBlock和MainBlock兩部分。BootBlock代碼負責初始化最小可運行硬件環(huán)境,準備好系統(tǒng)可用內(nèi)存。BootBlock中還包括B1S檢測單元P23和B1S恢復單元P24,P23用于檢查B1S的完整性,當B1S的完整性檢查失敗時,用P24實現(xiàn)對B1S的恢復。MainBlcok用于初始化硬件平臺中所有其它硬件,并引導操作系統(tǒng)。MainBlock中還包含B1S自更新單元P21和FLASH保護配置單元P22,P21用于執(zhí)行正常的B1S更新升級,P22實現(xiàn)對FLASH芯片寫保護的配置,防止用戶對FLASH芯片中B1S代碼的惡意篡改。另外,BootBlock代碼所在的FLASH