一種系統(tǒng)啟動(dòng)方法及裝置制造方法
【專利摘要】本發(fā)明公開了一種系統(tǒng)啟動(dòng)方法及裝置。該系統(tǒng)啟動(dòng)方法包括:當(dāng)系統(tǒng)啟動(dòng)時(shí),對(duì)第一存儲(chǔ)區(qū)域內(nèi)的系統(tǒng)啟動(dòng)程序進(jìn)行驗(yàn)證;當(dāng)所述第一存儲(chǔ)區(qū)域內(nèi)的系統(tǒng)啟動(dòng)程序驗(yàn)證成功時(shí),加載并運(yùn)行所述第一存儲(chǔ)區(qū)域內(nèi)的系統(tǒng)啟動(dòng)程序;當(dāng)所述第一存儲(chǔ)區(qū)域內(nèi)的系統(tǒng)啟動(dòng)程序驗(yàn)證失敗時(shí),加載并運(yùn)行第二存儲(chǔ)區(qū)域內(nèi)的初始啟動(dòng)程序。采用本發(fā)明的一種系統(tǒng)啟動(dòng)方法及裝置的技術(shù)方案,通過兩個(gè)存儲(chǔ)區(qū)域分別存儲(chǔ)系統(tǒng)啟動(dòng)程序和初始啟動(dòng)程序,當(dāng)系統(tǒng)啟動(dòng)程序失敗時(shí),從另一存儲(chǔ)區(qū)域加載并運(yùn)行初始啟動(dòng)程序,軟硬件結(jié)合的啟動(dòng)技術(shù)使得系統(tǒng)能安全可靠地啟動(dòng)。
【專利說明】一種系統(tǒng)啟動(dòng)方法及裝直
【技術(shù)領(lǐng)域】
[0001]本發(fā)明涉及信息安全領(lǐng)域,尤其涉及一種系統(tǒng)啟動(dòng)方法及裝置。
【背景技術(shù)】
[0002]系統(tǒng)啟動(dòng)過程中,非授權(quán)的攻擊者通過篡改啟動(dòng)流程,包括軟件篡改和硬件篡改,使得無法保證系統(tǒng)啟動(dòng)過程的安全可靠。
[0003]現(xiàn)有技術(shù)中存在僅通過硬件保護(hù)系統(tǒng)啟動(dòng)過程的方案,如申請?zhí)枮?00980106728.X、公布日為2011年2月2日的專利申請,此技術(shù)方案在系統(tǒng)啟動(dòng)的過程中驗(yàn)證了啟動(dòng)系統(tǒng)和程序的簽名,此后的運(yùn)行流程與一般的系統(tǒng)一樣,沒有作任何的限制。僅提供基于硬件的安全保護(hù)是不夠的,由網(wǎng)絡(luò)提供的服務(wù)需要增加對(duì)進(jìn)程的保護(hù)。如果攻擊者在程序運(yùn)行階段改變運(yùn)行代碼,則攻擊代碼與其它應(yīng)用一樣,運(yùn)行于同一安全級(jí)別,這樣會(huì)導(dǎo)致安全策略的失效。
[0004]還存在僅通過軟件保護(hù)系統(tǒng)啟動(dòng)過程的方案,如申請?zhí)枮?00710153796.4、公告日為2012年8月22日的專利申請,此方案基于安全的考慮,劃分了第一運(yùn)行時(shí)間環(huán)境和第二運(yùn)行時(shí)間環(huán)境,并且在兩種運(yùn)行時(shí)間環(huán)境都執(zhí)行了完整性度量。此方法的實(shí)現(xiàn)依賴于分區(qū)管理器和虛擬機(jī)監(jiān)視器,兩者都是由軟件實(shí)現(xiàn)的。換句話說,這是軟件實(shí)現(xiàn)的資源隔離,由此帶來如下的缺點(diǎn):一是軟件實(shí)現(xiàn)的效率不如直接硬件支持的效率高;而是軟件容易受到攻擊,如果攻擊者使用軟件破解的方法破解分區(qū)管理器和虛擬機(jī)監(jiān)視器的話,那么將損害系統(tǒng)安全。
[0005]綜上所述,如何保證系統(tǒng)安全可靠地啟動(dòng)已成為業(yè)界迫切需要解決的問題。
【發(fā)明內(nèi)容】
[0006]本發(fā)明實(shí)施例提供一種系統(tǒng)啟動(dòng)方法及裝置,用于解決現(xiàn)有技術(shù)存在的無法保證系統(tǒng)安全可靠地啟動(dòng)的問題。
[0007]第一方面,提供了一種系統(tǒng)啟動(dòng)方法,包括:
[0008]當(dāng)系統(tǒng)啟動(dòng)時(shí),對(duì)第一存儲(chǔ)區(qū)域內(nèi)的系統(tǒng)啟動(dòng)程序進(jìn)行驗(yàn)證;
[0009]當(dāng)所述第一存儲(chǔ)區(qū)域內(nèi)的系統(tǒng)啟動(dòng)程序驗(yàn)證成功時(shí),加載并運(yùn)行所述第一存儲(chǔ)區(qū)域內(nèi)的系統(tǒng)啟動(dòng)程序;
[0010]當(dāng)所述第一存儲(chǔ)區(qū)域內(nèi)的系統(tǒng)啟動(dòng)程序驗(yàn)證失敗時(shí),加載并運(yùn)行第二存儲(chǔ)區(qū)域內(nèi)的初始啟動(dòng)程序;
[0011]根據(jù)所述系統(tǒng)啟動(dòng)程序或初始啟動(dòng)程序啟動(dòng)所述系統(tǒng)。
[0012]在弟一種可能的實(shí)現(xiàn)方式中,所述當(dāng)系統(tǒng)啟動(dòng)時(shí),對(duì)弟一存儲(chǔ)區(qū)域內(nèi)的系統(tǒng)啟動(dòng)程序進(jìn)行驗(yàn)證之前,所述方法還包括:
[0013]設(shè)置系統(tǒng)啟動(dòng)標(biāo)識(shí)為第一存儲(chǔ)區(qū)域的標(biāo)識(shí);
[0014]所述當(dāng)所述第一存儲(chǔ)區(qū)域內(nèi)的系統(tǒng)啟動(dòng)程序驗(yàn)證失敗時(shí),加載并運(yùn)行第二存儲(chǔ)區(qū)域內(nèi)的初始啟動(dòng)程序之前,還包括:
[0015]將所述系統(tǒng)啟動(dòng)標(biāo)識(shí)從第一存儲(chǔ)區(qū)域的標(biāo)識(shí)修改為第二存儲(chǔ)區(qū)域的標(biāo)識(shí)。
[0016]結(jié)合第一方面或第一方面的第一種可能的實(shí)現(xiàn)方式,在第二種可能的實(shí)現(xiàn)方式中,
[0017]所述當(dāng)系統(tǒng)啟動(dòng)時(shí),對(duì)第一存儲(chǔ)區(qū)域內(nèi)的系統(tǒng)啟動(dòng)程序進(jìn)行驗(yàn)證,包括:
[0018]提取系統(tǒng)啟動(dòng)程序的制造商公鑰,并利用設(shè)定算法對(duì)所述制造商公鑰進(jìn)行計(jì)算得到運(yùn)算值;
[0019]當(dāng)所述運(yùn)算值與設(shè)定值一致時(shí),根據(jù)所述制造商公鑰驗(yàn)證所述系統(tǒng)啟動(dòng)程序的簽名是否合法,如果所述系統(tǒng)啟動(dòng)程序的簽名合法,確認(rèn)所述系統(tǒng)啟動(dòng)程序驗(yàn)證成功;如果所述系統(tǒng)啟動(dòng)程序的簽名不合法,確認(rèn)所述系統(tǒng)啟動(dòng)程序驗(yàn)證失敗。
[0020]結(jié)合第一方面的第二種可能的實(shí)現(xiàn)方式,在第三種可能的實(shí)現(xiàn)方式中,所述當(dāng)系統(tǒng)啟動(dòng)時(shí),對(duì)第一存儲(chǔ)區(qū)域內(nèi)的系統(tǒng)啟動(dòng)程序進(jìn)行驗(yàn)證,還包括:
[0021]加載硬件完整性檢查程序,檢驗(yàn)當(dāng)前硬件運(yùn)行環(huán)境與所述系統(tǒng)啟動(dòng)程序中存儲(chǔ)的硬件描述規(guī)范是否一致,如果檢驗(yàn)結(jié)果為是,則確認(rèn)所述系統(tǒng)啟動(dòng)程序驗(yàn)證成功;否則,確認(rèn)所述系統(tǒng)啟動(dòng)程序驗(yàn)證失敗。
[0022]第二方面,提供了一種系統(tǒng)啟動(dòng)裝置,其特征在于,包括:
[0023]第一驗(yàn)證單元,用于當(dāng)系統(tǒng)啟動(dòng)時(shí),對(duì)第一存儲(chǔ)區(qū)域內(nèi)的系統(tǒng)啟動(dòng)程序進(jìn)行驗(yàn)證;
[0024]第一加載單元,用于當(dāng)所述第一存儲(chǔ)區(qū)域內(nèi)的系統(tǒng)啟動(dòng)程序驗(yàn)證成功時(shí),加載所述第一存儲(chǔ)區(qū)域內(nèi)的系統(tǒng)啟動(dòng)程序,以及當(dāng)所述第一存儲(chǔ)區(qū)域內(nèi)的系統(tǒng)啟動(dòng)程序驗(yàn)證失敗時(shí),加載第二存儲(chǔ)區(qū)域內(nèi)的初始啟動(dòng)程序;
[0025]運(yùn)行單元,用于運(yùn)行所述第一加載單元加載的所述第一存儲(chǔ)區(qū)域內(nèi)的系統(tǒng)啟動(dòng)程序或者所述第二存儲(chǔ)區(qū)域內(nèi)的初始啟動(dòng)程序;
[0026]啟動(dòng)單元,用于根據(jù)所述系統(tǒng)啟動(dòng)程序或初始啟動(dòng)程序啟動(dòng)所述系統(tǒng)。
[0027]在第一種可能的實(shí)現(xiàn)方式中,所述裝置還包括:
[0028]設(shè)置單元,用于設(shè)置系統(tǒng)啟動(dòng)標(biāo)識(shí)為第一存儲(chǔ)區(qū)域的標(biāo)識(shí);
[0029]修改單元,用于將所述系統(tǒng)啟動(dòng)標(biāo)識(shí)從第一存儲(chǔ)區(qū)域的標(biāo)識(shí)修改為第二存儲(chǔ)區(qū)域的標(biāo)識(shí)。
[0030]結(jié)合第二方面或第二方面的第一種可能的實(shí)現(xiàn)方式,在第二種可能的實(shí)現(xiàn)方式中,所述所述第一驗(yàn)證單元包括:
[0031]提取單元,用于提取系統(tǒng)啟動(dòng)程序的制造商公鑰;
[0032]計(jì)算單元,用于利用設(shè)定算法對(duì)所述制造商公鑰進(jìn)行計(jì)算得到第一運(yùn)算值;
[0033]第二驗(yàn)證單元,用于當(dāng)所述運(yùn)算值與設(shè)定值一致時(shí),根據(jù)所述制造商公鑰驗(yàn)證所述系統(tǒng)啟動(dòng)程序的簽名是否合法;
[0034]第一確認(rèn)單元,用于如果所述系統(tǒng)啟動(dòng)程序的簽名合法,確認(rèn)所述系統(tǒng)啟動(dòng)程序驗(yàn)證成功;
[0035]第二確認(rèn)單元,用于如果所述系統(tǒng)啟動(dòng)程序的簽名不合法,確認(rèn)所述系統(tǒng)啟動(dòng)程序驗(yàn)證失敗。
[0036]結(jié)合第二方面的第二種可能的實(shí)現(xiàn)方式,在第三種可能的實(shí)現(xiàn)方式中,所述第一驗(yàn)證單元還包括:
[0037]第二加載單元,用于加載硬件完整性檢查程序;
[0038]檢驗(yàn)單元,用于檢驗(yàn)當(dāng)前硬件運(yùn)行環(huán)境與所述系統(tǒng)啟動(dòng)程序中存儲(chǔ)的硬件描述規(guī)范是否一致;
[0039]第一確認(rèn)單元還用于如果所述檢驗(yàn)單元的檢驗(yàn)結(jié)果為是,則確認(rèn)所述系統(tǒng)啟動(dòng)程序驗(yàn)證成功;
[0040]所述第二確認(rèn)單元還用于所述檢驗(yàn)單元的檢驗(yàn)結(jié)果為否,則確認(rèn)所述系統(tǒng)啟動(dòng)程序驗(yàn)證失敗。
[0041]采用本發(fā)明的一種系統(tǒng)啟動(dòng)方法及裝置的技術(shù)方案,通過兩個(gè)存儲(chǔ)區(qū)域分別存儲(chǔ)系統(tǒng)啟動(dòng)程序和初始啟動(dòng)程序,當(dāng)系統(tǒng)啟動(dòng)程序失敗時(shí),從另一存儲(chǔ)區(qū)域加載并運(yùn)行初始啟動(dòng)程序,軟硬件結(jié)合的啟動(dòng)技術(shù)使得系統(tǒng)能安全可靠地啟動(dòng)。
【專利附圖】
【附圖說明】
[0042]為了更清楚地說明本發(fā)明實(shí)施例或現(xiàn)有技術(shù)中的技術(shù)方案,下面將對(duì)實(shí)施例或現(xiàn)有技術(shù)描述中所需要使用的附圖作簡單地介紹,顯而易見地,下面描述中的附圖僅僅是本發(fā)明的一些實(shí)施例,對(duì)于本領(lǐng)域普通技術(shù)人員來講,在不付出創(chuàng)造性勞動(dòng)的前提下,還可以根據(jù)這些附圖獲得其他的附圖。
[0043]圖1為一種系統(tǒng)啟動(dòng)方法的一個(gè)實(shí)施例的方法流程圖;
[0044]圖2為一種系統(tǒng)啟動(dòng)方法的另一個(gè)實(shí)施例的方法流程圖;
[0045]圖3為一種系統(tǒng)啟動(dòng)裝置的一個(gè)實(shí)施例的結(jié)構(gòu)示意圖;
[0046]圖4為一種系統(tǒng)啟動(dòng)裝置的另一個(gè)實(shí)施例的結(jié)構(gòu)示意圖。
【具體實(shí)施方式】
[0047]下面將結(jié)合本發(fā)明實(shí)施例中的附圖,對(duì)本發(fā)明實(shí)施例中的技術(shù)方案進(jìn)行清楚、完整地描述,顯然,所描述的實(shí)施例僅僅是本發(fā)明一部分實(shí)施例,而不是全部的實(shí)施例?;诒景l(fā)明中的實(shí)施例,本領(lǐng)域普通技術(shù)人員在沒有作出創(chuàng)造性勞動(dòng)前提下所獲得的所有其他實(shí)施例,都屬于本發(fā)明保護(hù)的范圍。
[0048]圖1為一種系統(tǒng)啟動(dòng)方法的一個(gè)實(shí)施例的方法流程圖。如圖1所示,該方法包括以下步驟:
[0049]步驟S101,當(dāng)系統(tǒng)啟動(dòng)時(shí),對(duì)第一存儲(chǔ)區(qū)域內(nèi)的系統(tǒng)啟動(dòng)程序進(jìn)行驗(yàn)證。
[0050]步驟S102,當(dāng)所述第一存儲(chǔ)區(qū)域內(nèi)的系統(tǒng)啟動(dòng)程序驗(yàn)證成功時(shí),加載并運(yùn)行所述第一存儲(chǔ)區(qū)域內(nèi)的系統(tǒng)啟動(dòng)程序。
[0051]步驟S103,當(dāng)所述第一存儲(chǔ)區(qū)域內(nèi)的系統(tǒng)啟動(dòng)程序驗(yàn)證失敗時(shí),加載并運(yùn)行第二存儲(chǔ)區(qū)域內(nèi)的初始啟動(dòng)程序。
[0052]步驟S104,根據(jù)所述系統(tǒng)啟動(dòng)程序或初始啟動(dòng)程序啟動(dòng)所述系統(tǒng)。
[0053]系統(tǒng)將存儲(chǔ)區(qū)域分為兩個(gè)存儲(chǔ)區(qū)域,在第一存儲(chǔ)區(qū)域內(nèi)存儲(chǔ)系統(tǒng)運(yùn)行所實(shí)際需要的系統(tǒng)啟動(dòng)程序,在第二存儲(chǔ)區(qū)域內(nèi)存儲(chǔ)初始啟動(dòng)程序,該初始啟動(dòng)程序可以是系統(tǒng)制造商存儲(chǔ)在第二存儲(chǔ)區(qū)域內(nèi)的出廠啟動(dòng)程序,該初始啟動(dòng)程序具有系統(tǒng)啟動(dòng)必備的基本程序,系統(tǒng)啟動(dòng)程序相比初始啟動(dòng)程序,還加入了一些更新和升級(jí)的程序,為系統(tǒng)應(yīng)用所需的程序。
[0054]由于在系統(tǒng)啟動(dòng)過程中,攻擊者可能會(huì)篡改系統(tǒng)啟動(dòng)程序,從而影響系統(tǒng)安全可靠地啟動(dòng),因此,需要對(duì)第一存儲(chǔ)區(qū)域內(nèi)的系統(tǒng)啟動(dòng)程序進(jìn)行驗(yàn)證,當(dāng)系統(tǒng)啟動(dòng)程序驗(yàn)證成功時(shí),加載并運(yùn)行該系統(tǒng)啟動(dòng)程序,從而最終啟動(dòng)系統(tǒng);當(dāng)系統(tǒng)啟動(dòng)程序驗(yàn)證失敗時(shí),加載并運(yùn)行第二存儲(chǔ)區(qū)域內(nèi)的初始啟動(dòng)程序,也可以啟動(dòng)系統(tǒng)。
[0055]通過在兩個(gè)存儲(chǔ)區(qū)域內(nèi)分別存儲(chǔ)系統(tǒng)啟動(dòng)程序和初始啟動(dòng)程序,當(dāng)系統(tǒng)啟動(dòng)程序失敗時(shí),從另一存儲(chǔ)區(qū)域加載并運(yùn)行初始啟動(dòng)程序,也能保證系統(tǒng)可靠地啟動(dòng),并對(duì)系統(tǒng)啟動(dòng)程序在加載和運(yùn)行前進(jìn)行驗(yàn)證,可以保證系統(tǒng)安全地啟動(dòng)。
[0056]根據(jù)本發(fā)明實(shí)施例提供的一種系統(tǒng)啟動(dòng)方法,通過兩個(gè)存儲(chǔ)區(qū)域分別存儲(chǔ)系統(tǒng)啟動(dòng)程序和初始啟動(dòng)程序,當(dāng)系統(tǒng)啟動(dòng)程序失敗時(shí),從另一存儲(chǔ)區(qū)域加載并運(yùn)行初始啟動(dòng)程序,軟硬件結(jié)合的啟動(dòng)技術(shù)使得系統(tǒng)能安全可靠地啟動(dòng)。
[0057]圖2為一種系統(tǒng)啟動(dòng)方法的另一個(gè)實(shí)施例的方法流程圖。如圖2所示,該方法包括以下步驟:
[0058]步驟S201,設(shè)置系統(tǒng)啟動(dòng)標(biāo)識(shí)為第一存儲(chǔ)區(qū)域的標(biāo)識(shí)。
[0059]系統(tǒng)將存儲(chǔ)區(qū)域分為第一存儲(chǔ)區(qū)域和第二存儲(chǔ)區(qū)域,在第一存儲(chǔ)區(qū)域內(nèi)存儲(chǔ)系統(tǒng)運(yùn)行所實(shí)際需要的系統(tǒng)啟動(dòng)程序,在第二存儲(chǔ)區(qū)域內(nèi)存儲(chǔ)初始啟動(dòng)程序,該初始啟動(dòng)程序可以是系統(tǒng)制造商存儲(chǔ)在第二存儲(chǔ)區(qū)域內(nèi)的出廠啟動(dòng)程序,該初始啟動(dòng)程序具有系統(tǒng)啟動(dòng)必備的基本程序,系統(tǒng)啟動(dòng)程序相比初始啟動(dòng)程序,還加入了一些更新和升級(jí)的程序,為系統(tǒng)應(yīng)用所需的程序。并在第一存儲(chǔ)區(qū)域中設(shè)置啟動(dòng)標(biāo)識(shí),該啟動(dòng)標(biāo)識(shí)包括第一存儲(chǔ)區(qū)域的標(biāo)識(shí)和第二存儲(chǔ)區(qū)域的標(biāo)識(shí),初始設(shè)置啟動(dòng)標(biāo)識(shí)為第一存儲(chǔ)區(qū)域的標(biāo)識(shí)。系統(tǒng)按照該啟動(dòng)標(biāo)識(shí),確定從第一存儲(chǔ)區(qū)域或第二存儲(chǔ)區(qū)域加載啟動(dòng)程序以啟動(dòng)系統(tǒng)。
[0060]步驟S202,提取系統(tǒng)啟動(dòng)程序的制造商公鑰,并利用設(shè)定算法對(duì)所述制造商公鑰進(jìn)行計(jì)算得到運(yùn)算值。
[0061]步驟S203,判斷運(yùn)算值與設(shè)定值是否一致,如果是,則轉(zhuǎn)至步驟S204,否則,轉(zhuǎn)至步驟S210。
[0062]步驟S204,根據(jù)所述制造商公鑰驗(yàn)證所述系統(tǒng)啟動(dòng)程序的簽名是否合法,如果是,則轉(zhuǎn)至步驟S205,否則,轉(zhuǎn)至步驟S210。
[0063]步驟S205,加載硬件完整性檢查程序。
[0064]步驟S206,檢驗(yàn)當(dāng)前硬件運(yùn)行環(huán)境與所述系統(tǒng)啟動(dòng)程序中存儲(chǔ)的硬件描述規(guī)范是否一致,如果是,則轉(zhuǎn)至步驟S207,否則,轉(zhuǎn)至步驟S210。
[0065]步驟S207,確認(rèn)所述系統(tǒng)啟動(dòng)程序驗(yàn)證成功。
[0066]步驟S208,加載并運(yùn)行所述第一存儲(chǔ)區(qū)域內(nèi)的系統(tǒng)啟動(dòng)程序。
[0067]步驟S209,啟動(dòng)所述系統(tǒng)。
[0068]步驟S210,確認(rèn)所述系統(tǒng)啟動(dòng)程序驗(yàn)證失敗。
[0069]步驟S211,將所述系統(tǒng)啟動(dòng)標(biāo)識(shí)從第一存儲(chǔ)區(qū)域的標(biāo)識(shí)修改為第二存儲(chǔ)區(qū)域的標(biāo)識(shí)。
[0070]步驟S212,加載并運(yùn)行第二存儲(chǔ)區(qū)域內(nèi)的初始啟動(dòng)程序。
[0071]當(dāng)系統(tǒng)啟動(dòng)時(shí),系統(tǒng)的引導(dǎo)程序自我驗(yàn)證并啟動(dòng)運(yùn)行,從第一存儲(chǔ)區(qū)域內(nèi)提取系統(tǒng)啟動(dòng)程序的制造商公鑰,并利用設(shè)定算法對(duì)該制造商公鑰進(jìn)行計(jì)算得到運(yùn)算值。然后,判斷運(yùn)算值與設(shè)定值是否一致,如果不一致,確定系統(tǒng)啟動(dòng)程序驗(yàn)證失??;如果一致,進(jìn)一步根據(jù)制造商公鑰驗(yàn)證系統(tǒng)啟動(dòng)程序的簽名是否合法,如果合法,確定系統(tǒng)啟動(dòng)程序驗(yàn)證成功,如果不合法,確定系統(tǒng)啟動(dòng)程序驗(yàn)證失敗。當(dāng)系統(tǒng)啟動(dòng)程序驗(yàn)證成功時(shí),加載并運(yùn)行系統(tǒng)啟動(dòng)程序,最終啟動(dòng)該系統(tǒng);當(dāng)系統(tǒng)啟動(dòng)程序驗(yàn)證失敗時(shí),轉(zhuǎn)至步驟S211,將系統(tǒng)啟動(dòng)標(biāo)識(shí)由初始的第一存儲(chǔ)區(qū)域的標(biāo)識(shí)修改為第二存儲(chǔ)區(qū)域的標(biāo)識(shí),根據(jù)該系統(tǒng)啟動(dòng)標(biāo)識(shí),加載并運(yùn)行第二存儲(chǔ)區(qū)域內(nèi)的初始啟動(dòng)程序,從而最終也可可靠地啟動(dòng)系統(tǒng)。
[0072]該系統(tǒng)啟動(dòng)程序包括啟動(dòng)程序和操作系統(tǒng)。
[0073]優(yōu)選地,當(dāng)整個(gè)系統(tǒng)啟動(dòng)程序運(yùn)行后,還需對(duì)系統(tǒng)硬件進(jìn)行完整性檢查,以保證系統(tǒng)運(yùn)行的硬件環(huán)境安全可靠。當(dāng)系統(tǒng)啟動(dòng)程序運(yùn)行后,加載硬件完整性檢查程序,檢驗(yàn)當(dāng)前硬件運(yùn)行環(huán)境與系統(tǒng)啟動(dòng)程序中存儲(chǔ)的硬件描述規(guī)范是否一致,如果一致,確認(rèn)系統(tǒng)啟動(dòng)程序驗(yàn)證成功;如果不一致,確認(rèn)系統(tǒng)啟動(dòng)程序驗(yàn)證失敗。
[0074]以家庭基站(Home Node B, HNB)為例,運(yùn)用本發(fā)明的系統(tǒng)啟動(dòng)方法的系統(tǒng)啟動(dòng)流程如下:
[0075]現(xiàn)有的一些處理器包括安全區(qū)域(Secure World)和非安全區(qū)域(Non-SecureWorld),例如ARM公司的Trust Zone技術(shù),以保證系統(tǒng)的安全。作為優(yōu)選的實(shí)施例,將第一存儲(chǔ)區(qū)域分為安全區(qū)域和非安全區(qū)域。HNB的系統(tǒng)采用這種處理器。
[0076]系統(tǒng)啟動(dòng)時(shí),片上系統(tǒng)(System-On-Chip,S0C)進(jìn)入安全特權(quán)模式,從片內(nèi)安全引導(dǎo)代碼區(qū)Boot ROM啟動(dòng)。
[0077]ROM內(nèi)引導(dǎo)程序(Boot ROM)提取存儲(chǔ)裝置加載程序(Flash Device Bootloader)中的制造商公鑰,并且驗(yàn)證根據(jù)制造商公鑰,利用SHA-256算法計(jì)算得到的SHA256值和存儲(chǔ)在芯片的一次性編程存儲(chǔ)器(OTP Fuse)中的值是否一致。
[0078]如果制造商公鑰的SHA256值和存儲(chǔ)在OTP Fuse中的值一致,用制造商公鑰驗(yàn)證Flash Device Bootloader是否有合法的簽名,如果驗(yàn)證成功,加載Flash DeviceBootloader。
[0079]如果制造商公鑰的SHA256值和存儲(chǔ)在OTP Fuse中的值不一致,則不加載可能已篡改的Flash Device Bootloader,Boot ROM設(shè)置啟動(dòng)標(biāo)識(shí)為Flash#l,讓HNB從出廠的操作系統(tǒng)鏡像(OS Image)中啟動(dòng)。
[0080]Flash Device Bootloader啟動(dòng)運(yùn)行,提取安全區(qū)域操作系統(tǒng)鏡像(Secure WorldOS Image)中的制造商公鑰,并且驗(yàn)證制造商公鑰的SHA256值和存儲(chǔ)在OTP Fuse中的值是否一致。
[0081]如果制造商公鑰的SHA256值和存儲(chǔ)在OTP Fuse中的值一致,加載Secure WorldOS Image。
[0082]如果制造商公鑰的SHA256值和存儲(chǔ)在OTP Fuse中的值不一致,則不加載篡改的OS Image。
[0083]Flash Device Bootloader 設(shè)置啟動(dòng)標(biāo)識(shí)為 Flash#l,讓 HNB 從出廠的 OS Image中啟動(dòng)。
[0084]安全區(qū)域操作系統(tǒng)(Secure World OS)啟動(dòng),初始化Secure World,加載基本通訊和密碼學(xué)運(yùn)算模塊。
[0085]如果Secure World OS啟動(dòng)成功,則自動(dòng)加載硬件完整性檢查程序,檢驗(yàn)當(dāng)前硬件運(yùn)行環(huán)境是否與Secure OS中存儲(chǔ)的HNB硬件描述規(guī)范一致;如果Secure World OS啟動(dòng)不成功,則重新啟動(dòng)系統(tǒng)。
[0086]硬件完整性檢查程序檢驗(yàn)當(dāng)前硬件運(yùn)行環(huán)境是否與Secure OS中存儲(chǔ)的HNB硬件描述規(guī)范一致。硬件運(yùn)行環(huán)境是指SoC的外圍接口。完整性檢查程序需要檢測SDRAM和Flash芯片的容量和芯片類型是否與硬件描述規(guī)范一致;檢測系統(tǒng)的網(wǎng)絡(luò)設(shè)備是否工作于正常的模式下;檢測系統(tǒng)外部接口通用串行總線(Universal Serial BUS,USB)/通用異步接收 / 發(fā)送裝置(Universal Asynchronous Receiver/Transmitter, UART)工作是否正常。如果完整性檢測不通過,檢測程序可以重新啟動(dòng)系統(tǒng)。硬件完整性檢測程序可以防止攻擊者改動(dòng)HNB硬件,在HNB硬件中接入不允許的接口以獲取HNB運(yùn)行狀態(tài)的數(shù)據(jù)。
[0087]如果完整性檢測通過,則加載非安全區(qū)域操作系統(tǒng)(Normal World OS)的Bootloader ;如果完整性檢測不通過,檢測程序可以重新啟動(dòng)系統(tǒng)。
[0088]Secure World OS 會(huì)驗(yàn)證并加載 Normal World OS 的 Bootloader ;如果成功則進(jìn)入下一步;否則重新啟動(dòng)系統(tǒng)。
[0089]Bootloader驗(yàn)證并加載Normal World OS啟動(dòng);如果成功則完成整個(gè)系統(tǒng)的安全啟動(dòng),否則重新啟動(dòng)系統(tǒng)。
[0090]通過保證迭代路徑的安全從而來保證路徑的末端即系統(tǒng)的安全,只要其中一個(gè)迭代環(huán)節(jié)脫落,系統(tǒng)就不會(huì)接著往下走,并讓系統(tǒng)恢復(fù)出廠狀態(tài),從而既保證了系統(tǒng)的安全也不會(huì)使系統(tǒng)因?yàn)槭艿焦舳礄C(jī)。
[0091]根據(jù)本發(fā)明實(shí)施例提供的一種系統(tǒng)啟動(dòng)方法,通過兩個(gè)存儲(chǔ)區(qū)域分別存儲(chǔ)系統(tǒng)啟動(dòng)程序和初始啟動(dòng)程序,當(dāng)系統(tǒng)啟動(dòng)程序失敗時(shí),從另一存儲(chǔ)區(qū)域加載并運(yùn)行初始啟動(dòng)程序,軟硬件結(jié)合的啟動(dòng)技術(shù)使得系統(tǒng)能安全可靠地啟動(dòng)。
[0092]圖3為一種系統(tǒng)啟動(dòng)裝置的一個(gè)實(shí)施例的結(jié)構(gòu)示意圖。如圖3所示,該裝置1000包括:
[0093]第一驗(yàn)證單元101,用于當(dāng)系統(tǒng)啟動(dòng)時(shí),對(duì)第一存儲(chǔ)區(qū)域內(nèi)的系統(tǒng)啟動(dòng)程序進(jìn)行驗(yàn)證。
[0094]第一加載單元102,用于當(dāng)所述第一存儲(chǔ)區(qū)域內(nèi)的系統(tǒng)啟動(dòng)程序驗(yàn)證成功時(shí),加載所述第一存儲(chǔ)區(qū)域內(nèi)的系統(tǒng)啟動(dòng)程序,以及當(dāng)所述第一存儲(chǔ)區(qū)域內(nèi)的系統(tǒng)啟動(dòng)程序驗(yàn)證失敗時(shí),加載第二存儲(chǔ)區(qū)域內(nèi)的初始啟動(dòng)程序。
[0095]運(yùn)行單元103,用于運(yùn)行所述第一加載單元加載的所述第一存儲(chǔ)區(qū)域內(nèi)的系統(tǒng)啟動(dòng)程序或者所述第二存儲(chǔ)區(qū)域內(nèi)的初始啟動(dòng)程序。
[0096]啟動(dòng)單元104,用于根據(jù)所述系統(tǒng)啟動(dòng)程序或初始啟動(dòng)程序啟動(dòng)所述系統(tǒng)。
[0097]系統(tǒng)將存儲(chǔ)區(qū)域分為兩個(gè)存儲(chǔ)區(qū)域,在第一存儲(chǔ)區(qū)域內(nèi)存儲(chǔ)系統(tǒng)運(yùn)行所實(shí)際需要的系統(tǒng)啟動(dòng)程序,在第二存儲(chǔ)區(qū)域內(nèi)存儲(chǔ)初始啟動(dòng)程序,該初始啟動(dòng)程序可以是系統(tǒng)制造商存儲(chǔ)在第二存儲(chǔ)區(qū)域內(nèi)的出廠啟動(dòng)程序,該初始啟動(dòng)程序具有系統(tǒng)啟動(dòng)必備的基本程序,系統(tǒng)啟動(dòng)程序相比初始啟動(dòng)程序,還加入了一些更新和升級(jí)的程序,為系統(tǒng)應(yīng)用所需的程序。
[0098]由于在系統(tǒng)啟動(dòng)過程中,攻擊者可能會(huì)篡改系統(tǒng)啟動(dòng)程序,從而影響系統(tǒng)安全可靠地啟動(dòng),因此,第一驗(yàn)證單元101需要對(duì)第一存儲(chǔ)區(qū)域內(nèi)的系統(tǒng)啟動(dòng)程序進(jìn)行驗(yàn)證,當(dāng)系統(tǒng)啟動(dòng)程序驗(yàn)證成功時(shí),第一加載單元102加載該系統(tǒng)啟動(dòng)程序,運(yùn)行單元103運(yùn)行該系統(tǒng)啟動(dòng)程序,從而最終由啟動(dòng)單元104啟動(dòng)系統(tǒng);當(dāng)系統(tǒng)啟動(dòng)程序驗(yàn)證失敗時(shí),第一加載單元102加載第二存儲(chǔ)區(qū)域內(nèi)的初始啟動(dòng)程序,運(yùn)行單元103運(yùn)行該初始啟動(dòng)程序,啟動(dòng)單元104啟動(dòng)系統(tǒng)。
[0099]通過在兩個(gè)存儲(chǔ)區(qū)域內(nèi)分別存儲(chǔ)系統(tǒng)啟動(dòng)程序和初始啟動(dòng)程序,當(dāng)系統(tǒng)啟動(dòng)程序失敗時(shí),從另一存儲(chǔ)區(qū)域加載并運(yùn)行初始啟動(dòng)程序,也能保證系統(tǒng)可靠地啟動(dòng),并對(duì)系統(tǒng)啟動(dòng)程序在加載和運(yùn)行前進(jìn)行驗(yàn)證,可以保證系統(tǒng)安全地啟動(dòng)。
[0100]根據(jù)本發(fā)明實(shí)施例提供的一種系統(tǒng)啟動(dòng)裝置,通過兩個(gè)存儲(chǔ)區(qū)域分別存儲(chǔ)系統(tǒng)啟動(dòng)程序和初始啟動(dòng)程序,當(dāng)系統(tǒng)啟動(dòng)程序失敗時(shí),從另一存儲(chǔ)區(qū)域加載并運(yùn)行初始啟動(dòng)程序,軟硬件結(jié)合的啟動(dòng)技術(shù)使得系統(tǒng)能安全可靠地啟動(dòng)。
[0101]圖4為一種系統(tǒng)啟動(dòng)裝置的另一個(gè)實(shí)施例的結(jié)構(gòu)示意圖。如圖4所示,該裝置2000包括:
[0102]設(shè)置單元201,用于設(shè)置系統(tǒng)啟動(dòng)標(biāo)識(shí)為第一存儲(chǔ)區(qū)域的標(biāo)識(shí)。
[0103]系統(tǒng)將存儲(chǔ)區(qū)域分為第一存儲(chǔ)區(qū)域和第二存儲(chǔ)區(qū)域,在第一存儲(chǔ)區(qū)域內(nèi)存儲(chǔ)系統(tǒng)運(yùn)行所實(shí)際需要的系統(tǒng)啟動(dòng)程序,在第二存儲(chǔ)區(qū)域內(nèi)存儲(chǔ)初始啟動(dòng)程序,系統(tǒng)啟動(dòng)程序相比初始啟動(dòng)程序,加入了一些更新和升級(jí)的程序。并在第一存儲(chǔ)區(qū)域中設(shè)置啟動(dòng)標(biāo)識(shí),該啟動(dòng)標(biāo)識(shí)包括第一存儲(chǔ)區(qū)域的標(biāo)識(shí)和第二存儲(chǔ)區(qū)域的標(biāo)識(shí),初始化時(shí),設(shè)置單元201設(shè)置啟動(dòng)標(biāo)識(shí)為第一存儲(chǔ)區(qū)域的標(biāo)識(shí)。系統(tǒng)按照該啟動(dòng)標(biāo)識(shí),確定從第一存儲(chǔ)區(qū)域或第二存儲(chǔ)區(qū)域加載啟動(dòng)程序以啟動(dòng)系統(tǒng)。
[0104]第一存儲(chǔ)區(qū)域內(nèi)的系統(tǒng)啟動(dòng)程序包括第一系統(tǒng)啟動(dòng)程序、第二系統(tǒng)啟動(dòng)程序、第三系統(tǒng)啟動(dòng)程序。其中,第一系統(tǒng)啟動(dòng)程序用于,第二系統(tǒng)啟動(dòng)程序用于,第三系統(tǒng)啟動(dòng)程序用于。
[0105]第一驗(yàn)證單元202,用于當(dāng)系統(tǒng)啟動(dòng)時(shí),對(duì)第一存儲(chǔ)區(qū)域內(nèi)的系統(tǒng)啟動(dòng)程序進(jìn)行驗(yàn)證。
[0106]作為一種實(shí)施方式,第一驗(yàn)證單元202包括:提取單元2021、計(jì)算單元2022、第二驗(yàn)證單元2023、第二加載單元2024、檢驗(yàn)單元2025、第一確認(rèn)單元2026、第二確認(rèn)單元2027。
[0107]提取單元2021,用于提取系統(tǒng)啟動(dòng)程序的制造商公鑰。
[0108]計(jì)算單元2022,用于利用設(shè)定算法對(duì)所述制造商公鑰進(jìn)行計(jì)算得到運(yùn)算值。
[0109]第二驗(yàn)證單元2023,用于當(dāng)所述運(yùn)算值與設(shè)定值一致時(shí),根據(jù)所述制造商公鑰驗(yàn)證所述系統(tǒng)啟動(dòng)程序的簽名是否合法。
[0110]第二加載單元2024,用于加載硬件完整性檢查程序。
[0111]檢驗(yàn)單元2025,用于檢驗(yàn)當(dāng)前硬件運(yùn)行環(huán)境與所述系統(tǒng)啟動(dòng)程序中存儲(chǔ)的硬件描述規(guī)范是否一致。
[0112]第一確認(rèn)單元2026,用于如果所述系統(tǒng)啟動(dòng)程序的簽名合法,確認(rèn)所述系統(tǒng)啟動(dòng)程序驗(yàn)證成功。
[0113]第一確認(rèn)單元2026還用于如果所述檢驗(yàn)單元的檢驗(yàn)結(jié)果為是,則確認(rèn)所述系統(tǒng)啟動(dòng)程序驗(yàn)證成功。
[0114]第二確認(rèn)單元2027,用于如果所述系統(tǒng)啟動(dòng)程序的簽名不合法,確認(rèn)所述系統(tǒng)啟動(dòng)程序驗(yàn)證失敗。
[0115]第二確認(rèn)單元2027還用于所述檢驗(yàn)單元的檢驗(yàn)結(jié)果為否,則確認(rèn)所述系統(tǒng)啟動(dòng)程序驗(yàn)證失敗。
[0116]第一加載單元203,用于當(dāng)所述第一存儲(chǔ)區(qū)域內(nèi)的系統(tǒng)啟動(dòng)程序驗(yàn)證成功時(shí),加載所述第一存儲(chǔ)區(qū)域內(nèi)的系統(tǒng)啟動(dòng)程序,以及當(dāng)所述第一存儲(chǔ)區(qū)域內(nèi)的系統(tǒng)啟動(dòng)程序驗(yàn)證失敗時(shí),加載第二存儲(chǔ)區(qū)域內(nèi)的初始啟動(dòng)程序。
[0117]修改單元204,用于將所述系統(tǒng)啟動(dòng)標(biāo)識(shí)從第一存儲(chǔ)區(qū)域的標(biāo)識(shí)修改為第二存儲(chǔ)區(qū)域的標(biāo)識(shí)。
[0118]運(yùn)行單元205,用于運(yùn)行所述第一加載單元加載的所述第一存儲(chǔ)區(qū)域內(nèi)的系統(tǒng)啟動(dòng)程序或者所述第二存儲(chǔ)區(qū)域內(nèi)的初始啟動(dòng)程序。
[0119]啟動(dòng)單元206,用于根據(jù)所述系統(tǒng)啟動(dòng)程序或初始啟動(dòng)程序啟動(dòng)所述系統(tǒng)。
[0120]當(dāng)系統(tǒng)啟動(dòng)時(shí),系統(tǒng)的引導(dǎo)程序自我驗(yàn)證并啟動(dòng)運(yùn)行,提取單元2021從第一存儲(chǔ)區(qū)域內(nèi)提取系統(tǒng)啟動(dòng)程序的制造商公鑰,計(jì)算單元2022利用設(shè)定算法對(duì)該制造商公鑰進(jìn)行計(jì)算得到運(yùn)算值。然后,判斷運(yùn)算值與設(shè)定值是否一致,如果不一致,確定系統(tǒng)啟動(dòng)程序驗(yàn)證失敗;如果一致,第二驗(yàn)證單元2023進(jìn)一步根據(jù)制造商公鑰驗(yàn)證系統(tǒng)啟動(dòng)程序的簽名是否合法,如果合法,弟一確認(rèn)單兀2026確定系統(tǒng)啟動(dòng)程序驗(yàn)證成功,如果不合法,弟_■確認(rèn)單元2027確定系統(tǒng)啟動(dòng)程序驗(yàn)證失敗。當(dāng)系統(tǒng)啟動(dòng)程序驗(yàn)證成功時(shí),運(yùn)行單元205加載并運(yùn)彳丁系統(tǒng)啟動(dòng)程序,最終由啟動(dòng)單兀206啟動(dòng)該系統(tǒng);當(dāng)系統(tǒng)啟動(dòng)程序驗(yàn)證失敗時(shí),修改單元204將系統(tǒng)啟動(dòng)標(biāo)識(shí)由初始的第一存儲(chǔ)區(qū)域的標(biāo)識(shí)修改為第二存儲(chǔ)區(qū)域的標(biāo)識(shí),運(yùn)行單元205根據(jù)該系統(tǒng)啟動(dòng)標(biāo)識(shí),加載并運(yùn)行第二存儲(chǔ)區(qū)域內(nèi)的初始啟動(dòng)程序,從而啟動(dòng)單元206最終也可可靠地啟動(dòng)系統(tǒng)。
[0121 ] 該系統(tǒng)啟動(dòng)程序包括啟動(dòng)程序和操作系統(tǒng)。
[0122]優(yōu)選地,當(dāng)整個(gè)系統(tǒng)啟動(dòng)程序運(yùn)行后,還需對(duì)系統(tǒng)硬件進(jìn)行完整性檢查,以保證系統(tǒng)運(yùn)行的硬件環(huán)境安全可靠。當(dāng)系統(tǒng)啟動(dòng)程序運(yùn)行后,第二加載單元2024加載硬件完整性檢查程序,檢驗(yàn)單元2025檢驗(yàn)當(dāng)前硬件運(yùn)行環(huán)境與系統(tǒng)啟動(dòng)程序中存儲(chǔ)的硬件描述規(guī)范是否一致,如果一致,弟一確認(rèn)單兀2026確認(rèn)系統(tǒng)啟動(dòng)程序驗(yàn)證成功;如果不一致,弟_■確認(rèn)單元2027確認(rèn)系統(tǒng)啟動(dòng)程序驗(yàn)證失敗。
[0123]以家庭基站(Home Node B, HNB)為例,運(yùn)用本發(fā)明的系統(tǒng)啟動(dòng)方法的系統(tǒng)啟動(dòng)流程如下:
[0124]現(xiàn)有的一些處理器包括安全區(qū)域(Secure World)和非安全區(qū)域(Non-SecureWorld),例如ARM公司的Trust Zone技術(shù),以保證系統(tǒng)的安全。作為優(yōu)選的實(shí)施例,將第一存儲(chǔ)區(qū)域分為安全區(qū)域和非安全區(qū)域。HNB的系統(tǒng)采用這種處理器。
[0125]系統(tǒng)啟動(dòng)時(shí),片上系統(tǒng)(System-On-Chip,S0C)進(jìn)入安全特權(quán)模式,從片內(nèi)安全引導(dǎo)代碼區(qū)Boot ROM啟動(dòng)。
[0126]ROM內(nèi)引導(dǎo)程序(Boot ROM)提取存儲(chǔ)裝置加載程序(Flash Device Bootloader)中的制造商公鑰,并且驗(yàn)證根據(jù)制造商公鑰,利用SHA-256算法計(jì)算得到的SHA256值和存儲(chǔ)在芯片的一次性編程存儲(chǔ)器(OTP Fuse)中的值是否一致。
[0127]如果制造商公鑰的SHA256值和存儲(chǔ)在OTP Fuse中的值一致,用制造商公鑰驗(yàn)證Flash Device Bootloader是否有合法的簽名,如果驗(yàn)證成功,加載Flash DeviceBootloader。
[0128]如果制造商公鑰的SHA256值和存儲(chǔ)在OTP Fuse中的值不一致,則不加載可能已篡改的Flash Device Bootloader,Boot ROM設(shè)置啟動(dòng)標(biāo)識(shí)為Flash#l,讓HNB從出廠的操作系統(tǒng)鏡像(OS Image)中啟動(dòng)。
[0129]Flash Device Bootloader啟動(dòng)運(yùn)行,提取安全區(qū)域操作系統(tǒng)鏡像(Secure WorldOS Image)中的制造商公鑰,并且驗(yàn)證制造商公鑰的SHA256值和存儲(chǔ)在OTPFuse中的值是否一致。
[0130]如果制造商公鑰的SHA256值和存儲(chǔ)在OTP Fuse中的值一致,加載Secure WorldOS Image。
[0131]如果制造商公鑰的SHA256值和存儲(chǔ)在OTP Fuse中的值不一致,則不加載篡改的OS Image。
[0132]Flash Device Bootloader 設(shè)置啟動(dòng)標(biāo)識(shí)為 Flash#l,讓 HNB 從出廠的 OS Image中啟動(dòng)。
[0133]安全區(qū)域操作系統(tǒng)(Secure World OS)啟動(dòng),初始化Secure World,加載基本通訊和密碼學(xué)運(yùn)算模塊。
[0134]如果Secure World OS啟動(dòng)成功,則自動(dòng)加載硬件完整性檢查程序,檢驗(yàn)當(dāng)前硬件運(yùn)行環(huán)境是否與Secure OS中存儲(chǔ)的HNB硬件描述規(guī)范一致;如果Secure World OS啟動(dòng)不成功,則重新啟動(dòng)系統(tǒng)。
[0135]硬件完整性檢查程序檢驗(yàn)當(dāng)前硬件運(yùn)行環(huán)境是否與Secure OS中存儲(chǔ)的HNB硬件描述規(guī)范一致。硬件運(yùn)行環(huán)境是指SoC的外圍接口。完整性檢查程序需要檢測SDRAM和Flash芯片的容量和芯片類型是否與硬件描述規(guī)范一致;檢測系統(tǒng)的網(wǎng)絡(luò)設(shè)備是否工作于正常的模式下;檢測系統(tǒng)外部接口通用串行總線(Universal Serial BUS,USB)/通用異步接收 / 發(fā)送裝置(Universal Asynchronous Receiver/Transmitter, UART)工作是否正常。如果完整性檢測不通過,檢測程序可以重新啟動(dòng)系統(tǒng)。硬件完整性檢測程序可以防止攻擊者改動(dòng)HNB硬件,在HNB硬件中接入不允許的接口以獲取HNB運(yùn)行狀態(tài)的數(shù)據(jù)。
[0136]如果完整性檢測通過,則加載非安全區(qū)域操作系統(tǒng)(Normal World OS)的Bootloader ;如果完整性檢測不通過,檢測程序可以重新啟動(dòng)系統(tǒng)。
[0137]Secure World OS 會(huì)驗(yàn)證并加載 Normal World OS 的 Bootloader ;如果成功則進(jìn)入下一步;否則重新啟動(dòng)系統(tǒng)。
[0138]Bootloader驗(yàn)證并加載Normal World OS啟動(dòng);如果成功則完成整個(gè)系統(tǒng)的安全啟動(dòng),否則重新啟動(dòng)系統(tǒng)。
[0139]通過保證迭代路徑的安全從而來保證路徑的末端即系統(tǒng)的安全,只要其中一個(gè)迭代環(huán)節(jié)脫落,系統(tǒng)就不會(huì)接著往下走,并讓系統(tǒng)恢復(fù)出廠狀態(tài),從而既保證了系統(tǒng)的安全也不會(huì)使系統(tǒng)因?yàn)槭艿焦舳礄C(jī)。
[0140]根據(jù)本發(fā)明實(shí)施例提供的一種系統(tǒng)啟動(dòng)裝置,通過兩個(gè)存儲(chǔ)區(qū)域分別存儲(chǔ)系統(tǒng)啟動(dòng)程序和初始啟動(dòng)程序,當(dāng)系統(tǒng)啟動(dòng)程序失敗時(shí),從另一存儲(chǔ)區(qū)域加載并運(yùn)行初始啟動(dòng)程序,軟硬件結(jié)合的啟動(dòng)技術(shù)使得系統(tǒng)能安全可靠地啟動(dòng)。
[0141]以上所揭露的僅為本發(fā)明較佳實(shí)施例而已,當(dāng)然不能以此來限定本發(fā)明之權(quán)利范圍,因此依本發(fā)明權(quán)利要求所作的等同變化,仍屬本發(fā)明所涵蓋的范圍。
【權(quán)利要求】
1.一種系統(tǒng)啟動(dòng)方法,其特征在于,包括: 當(dāng)系統(tǒng)啟動(dòng)時(shí),對(duì)第一存儲(chǔ)區(qū)域內(nèi)的系統(tǒng)啟動(dòng)程序進(jìn)行驗(yàn)證; 當(dāng)所述第一存儲(chǔ)區(qū)域內(nèi)的系統(tǒng)啟動(dòng)程序驗(yàn)證成功時(shí),加載并運(yùn)行所述第一存儲(chǔ)區(qū)域內(nèi)的系統(tǒng)啟動(dòng)程序; 當(dāng)所述第一存儲(chǔ)區(qū)域內(nèi)的系統(tǒng)啟動(dòng)程序驗(yàn)證失敗時(shí),加載并運(yùn)行第二存儲(chǔ)區(qū)域內(nèi)的初始啟動(dòng)程序; 根據(jù)所述系統(tǒng)啟動(dòng)程序或初始啟動(dòng)程序啟動(dòng)所述系統(tǒng)。
2.如權(quán)利要求1所述的方法,其特征在于,所述當(dāng)系統(tǒng)啟動(dòng)時(shí),對(duì)第一存儲(chǔ)區(qū)域內(nèi)的系統(tǒng)啟動(dòng)程序進(jìn)行驗(yàn)證之前,還包括: 設(shè)置系統(tǒng)啟動(dòng)標(biāo)識(shí)為第一存儲(chǔ)區(qū)域的標(biāo)識(shí); 所述當(dāng)所述第一存儲(chǔ)區(qū)域內(nèi)的系統(tǒng)啟動(dòng)程序驗(yàn)證失敗時(shí),加載并運(yùn)行第二存儲(chǔ)區(qū)域內(nèi)的初始啟動(dòng)程序之前,還包括: 將所述系統(tǒng)啟動(dòng)標(biāo)識(shí)從第一存儲(chǔ)區(qū)域的標(biāo)識(shí)修改為第二存儲(chǔ)區(qū)域的標(biāo)識(shí)。
3.如權(quán)利要求1或2所述的方法,其特征在于,所述當(dāng)系統(tǒng)啟動(dòng)時(shí),對(duì)第一存儲(chǔ)區(qū)域內(nèi)的系統(tǒng)啟動(dòng)程序進(jìn)行驗(yàn)證,包括: 提取系統(tǒng)啟動(dòng)程序的制造商公鑰,并利用設(shè)定算法對(duì)所述制造商公鑰進(jìn)行計(jì)算得到運(yùn)算值; 當(dāng)所述運(yùn)算值與設(shè)定值一致時(shí),根據(jù)所述制造商公鑰驗(yàn)證所述系統(tǒng)啟動(dòng)程序的簽名是否合法,如果所述系統(tǒng)啟動(dòng)程序的簽名合法,確認(rèn)所述系統(tǒng)啟動(dòng)程序驗(yàn)證成功;如果所述系統(tǒng)啟動(dòng)程序的簽名不合法,確認(rèn)所述系統(tǒng)啟動(dòng)程序驗(yàn)證失敗。
4.如權(quán)利要求3所述的方法,其特征在于,所述當(dāng)系統(tǒng)啟動(dòng)時(shí),對(duì)第一存儲(chǔ)區(qū)域內(nèi)的系統(tǒng)啟動(dòng)程序進(jìn)行驗(yàn)證,還包括: 加載硬件完整性檢查程序,檢驗(yàn)當(dāng)前硬件運(yùn)行環(huán)境與所述系統(tǒng)啟動(dòng)程序中存儲(chǔ)的硬件描述規(guī)范是否一致,如果檢驗(yàn)結(jié)果為是,則確認(rèn)所述系統(tǒng)啟動(dòng)程序驗(yàn)證成功;否則,確認(rèn)所述系統(tǒng)啟動(dòng)程序驗(yàn)證失敗。
5.一種系統(tǒng)啟動(dòng)裝置,其特征在于,包括: 第一驗(yàn)證單元,用于當(dāng)系統(tǒng)啟動(dòng)時(shí),對(duì)第一存儲(chǔ)區(qū)域內(nèi)的系統(tǒng)啟動(dòng)程序進(jìn)行驗(yàn)證; 第一加載單元,用于當(dāng)所述第一存儲(chǔ)區(qū)域內(nèi)的系統(tǒng)啟動(dòng)程序驗(yàn)證成功時(shí),加載所述第一存儲(chǔ)區(qū)域內(nèi)的系統(tǒng)啟動(dòng)程序,以及當(dāng)所述第一存儲(chǔ)區(qū)域內(nèi)的系統(tǒng)啟動(dòng)程序驗(yàn)證失敗時(shí),加載第二存儲(chǔ)區(qū)域內(nèi)的初始啟動(dòng)程序; 運(yùn)行單元,用于運(yùn)行所述第一加載單元加載的所述第一存儲(chǔ)區(qū)域內(nèi)的系統(tǒng)啟動(dòng)程序或者所述第二存儲(chǔ)區(qū)域內(nèi)的初始啟動(dòng)程序; 啟動(dòng)單元,用于根據(jù)所述系統(tǒng)啟動(dòng)程序或初始啟動(dòng)程序啟動(dòng)所述系統(tǒng)。
6.如權(quán)利要求5所述的裝置,其特征在于,還包括: 設(shè)置單元,用于設(shè)置系統(tǒng)啟動(dòng)標(biāo)識(shí)為第一存儲(chǔ)區(qū)域的標(biāo)識(shí); 修改單元,用于將所述系統(tǒng)啟動(dòng)標(biāo)識(shí)從第一存儲(chǔ)區(qū)域的標(biāo)識(shí)修改為第二存儲(chǔ)區(qū)域的標(biāo)識(shí)。
7.如權(quán)利要求5或6所述的裝置,其特征在于,所述 第一驗(yàn)證單元包括: 提取單元,用于提取系統(tǒng)啟動(dòng)程序的制造商公鑰; 計(jì)算單元,用于利用設(shè)定算法對(duì)所述制造商公鑰進(jìn)行計(jì)算得到運(yùn)算值; 第二驗(yàn)證單元,用于當(dāng)所述運(yùn)算值與設(shè)定值一致時(shí),根據(jù)所述制造商公鑰驗(yàn)證所述系統(tǒng)啟動(dòng)程序的簽名是否合法; 第一確認(rèn)單元,用于如果所述系統(tǒng)啟動(dòng)程序的簽名合法,確認(rèn)所述系統(tǒng)啟動(dòng)程序驗(yàn)證成功; 第二確認(rèn)單元,用于如果所述系統(tǒng)啟動(dòng)程序的簽名不合法,確認(rèn)所述系統(tǒng)啟動(dòng)程序驗(yàn)證失敗。
8.如權(quán)利要求7所述的裝置,其特征在于,所述第一驗(yàn)證單元還包括: 第二加載單元,用于加載硬件完整性檢查程序; 檢驗(yàn)單元,用于檢驗(yàn)當(dāng)前硬件運(yùn)行環(huán)境與所述系統(tǒng)啟動(dòng)程序中存儲(chǔ)的硬件描述規(guī)范是否一致; 所述第一確認(rèn)單元還用于如果所述檢驗(yàn)單元的檢驗(yàn)結(jié)果為是,則確認(rèn)所述系統(tǒng)啟動(dòng)程序驗(yàn)證成功; 所述第二確認(rèn)單元還用于所述檢驗(yàn)單元的檢驗(yàn)結(jié)果為否,則確認(rèn)所述系統(tǒng)啟動(dòng)程序驗(yàn)證失敗。
【文檔編號(hào)】G06F21/44GK104182242SQ201310204011
【公開日】2014年12月3日 申請日期:2013年5月28日 優(yōu)先權(quán)日:2013年5月28日
【發(fā)明者】黃征, 來學(xué)嘉, 鄭東, 龍宇, 陳璟 申請人:華為技術(shù)有限公司