本發(fā)明涉及計算機(jī)領(lǐng)域,尤其涉及一種版本校驗(yàn)方法、裝置及終端設(shè)備。
背景技術(shù):
系統(tǒng)安全是為了支持安全啟動以及保證系統(tǒng)在可信環(huán)境中運(yùn)行的一整套軟硬件方案?;贏RM架構(gòu)的系統(tǒng)安全方案通常由Secure Boot和Trust Zone技術(shù)結(jié)合而成,Secure Boot是系統(tǒng)安全的基礎(chǔ),負(fù)責(zé)整個安全系統(tǒng)的初始化過程。根據(jù)可信的完整性理論,系統(tǒng)的安全啟動是整個系統(tǒng)安全的可信根,只有保證了系統(tǒng)啟動的安全,才能保證系統(tǒng)其他各部件的安全。
系統(tǒng)安全啟動時,系統(tǒng)采取逐級認(rèn)證簽名,認(rèn)證通過之后引導(dǎo)后續(xù)的過程。通常安全版本的摘要簽名和代碼存儲在片外(通常是Flash),系統(tǒng)首先由片內(nèi)Boot啟動,對片外啟動代碼簽名認(rèn)證校驗(yàn)通過后,切換到片外啟動代碼執(zhí)行,引導(dǎo)后續(xù)啟動程序。
如果片外安全版本有安全漏洞,需要升級,假設(shè)有安全漏洞的版本為VerX,升級版本為VerY,VerX存在安全漏洞,升級之后,攻擊者也可以將版本回退到VerX,利用其中的漏洞,進(jìn)行安全攻擊,因此存在系統(tǒng)安全風(fēng)險。
技術(shù)實(shí)現(xiàn)要素:
本發(fā)明實(shí)施例提供了一種版本校驗(yàn)方法、裝置及終端設(shè)備,能夠防止攻擊者使用有安全漏洞的版本進(jìn)行安全攻擊,提高了系統(tǒng)安全。
本發(fā)明實(shí)施例適用于對軟件版本進(jìn)行安全校驗(yàn)的場景,該軟件可以是操作系統(tǒng)、也可以是在系統(tǒng)上的應(yīng)用程序。
第一方面,本發(fā)明實(shí)施例提供了一種版本校驗(yàn)方法,該方法包括:
在操作系統(tǒng)或應(yīng)用程序需要安全啟動或升級的場景下,處理器獲取第一版本的版本信息,版本信息包括第一版本的版本號,其中,版本號用于標(biāo)識所述第一版本;根據(jù)第一版本的版本號確定第一版本的版本號對應(yīng)的校驗(yàn)比特位;若第一版本的版本號對應(yīng)的校驗(yàn)比特位為第一數(shù)值,則確定第一版本被禁用,第一版本校驗(yàn)未通過;若第一版本的版本號對應(yīng)的校驗(yàn)比特位為第二數(shù)值,則確定第一版本可用,第一版本校驗(yàn)通過。
可選的,第一版本為處理器待啟動的系統(tǒng)或應(yīng)用程序的目標(biāo)版本,或第二版本為處理器待升級的系統(tǒng)或應(yīng)用程序的目標(biāo)版本。
本發(fā)明實(shí)施例中的每個版本的版本號有對應(yīng)的校驗(yàn)比特位,通過比特位指示版本的禁用和可用信息,在獲取到某個版本后,可以對該版本進(jìn)行安全校驗(yàn),沒有校驗(yàn)通過的版本無法使用,因此可以防止攻擊者使用有安全漏洞的版本進(jìn)行安全攻擊。
結(jié)合第一方面,在第一方面的第一種可能的實(shí)現(xiàn)方式中,該方法還包括:
當(dāng)確認(rèn)某個版本存在安全漏洞時,處理器接收禁用第二版本的指示,禁用第二版本的指示中包括第二版本的版本號;根據(jù)第二版本的版本號確定第二版本的版本號對應(yīng)的校驗(yàn)比特位;將第二版本的版本號對應(yīng)的校驗(yàn)比特位置為所述第一數(shù)值。
因此,校驗(yàn)比特位信息可根據(jù)版本的安全信息(bugList)進(jìn)行更新,及時將有安全漏洞的版本對應(yīng)的比特位設(shè)置為禁用,從而可以確保有安全漏洞的版本無法使用,防止攻擊者使用有安全漏洞的版本進(jìn)行安全攻擊。
結(jié)合第一方面,或第一方面的第一種可能的實(shí)現(xiàn)方式,在第一方面的第二種可能的實(shí)現(xiàn)方式中,版本號(包括第一版本號和第二版本號)對應(yīng)的校驗(yàn)比特位存儲于電子熔斷金屬熔絲eFuse的第一字段中,第一字段中的每個比特位用于指示一個版本是否被禁用。
可選的,所述校驗(yàn)比特位的第一數(shù)值為1,所述第二校驗(yàn)比特位的第二數(shù)值為0。
可選的,所述第一字段可以為eFuse中的NV_BITMAP_E字段,當(dāng)該字段中某個比特為1時,則表示該比特位對應(yīng)的版本號已被禁用,當(dāng)該字段中某個比特為0時,則表示該比特位對應(yīng)的版本號為可用狀態(tài)。
如此,可以利用eFuse的一次性熔斷特點(diǎn),若某個版本存在安全漏洞,將該版本對應(yīng)的比特位熔斷置1后,將再也無法回退到該版本,從而保證了版本啟動或升級時的安全性。
結(jié)合第一方面或第一方面的第一種可能的實(shí)現(xiàn)方式,在第一方面的第三種可能的實(shí)現(xiàn)方式中,版本號(包括第一版本號和第二版本號)對應(yīng)的校驗(yàn)比特位存儲于閃存Flash的第二字段中,第二字段中的每個比特位用于指示一個版本是否被禁用。
可選的,一種可能的實(shí)施中,所述校驗(yàn)比特位的第一數(shù)值為1,所述第二校驗(yàn)比特位的第二數(shù)值為0。
可選的,在另一種可能的實(shí)施中,所述校驗(yàn)比特位的第一數(shù)值為0,所述第二校驗(yàn)比特位的第二數(shù)值為1。
若采用這種方式存儲,則需要通過秘鑰保護(hù)存儲內(nèi)容,簽名認(rèn)證之后才允許更新校驗(yàn)比特位。
結(jié)合第一方面的任一種可能的實(shí)現(xiàn)方式,在第一方面的第四種可能的實(shí)現(xiàn)方式中,該方法還包括:對第一版本的版本信息進(jìn)行簽名認(rèn)證;當(dāng)簽名認(rèn)證通過時,才執(zhí)行根據(jù)第一版本的版本號確定第一版本的版本號對應(yīng)的校驗(yàn)比特位的步驟。以防止版本被篡改,從而可以對啟動或升級時的版本進(jìn)行安全校驗(yàn),提高安全性。
結(jié)合第一方面的任一種可能的實(shí)現(xiàn)方式,在第一方面的第五種可能的實(shí)現(xiàn)方式中,本發(fā)明實(shí)施例可以應(yīng)用于版本升級時對版本進(jìn)行校驗(yàn),校驗(yàn)時,獲取第一版本的版本信息包括:接收第一版本升級指示,根據(jù)升級指示獲取第一版本的版本信息;該方法還包括:若校驗(yàn)不通過,則不升級至第一版本;若校驗(yàn)通過,則升級至第一版本。
可選的,接收第一版本升級指示可以為:接收升級操作系統(tǒng)版本的指示,或接收升級應(yīng)用程序版本的指示。
結(jié)合第一方面的任一種可能的實(shí)現(xiàn)方式,在第一方面的第六種可能的實(shí)現(xiàn)方式中,本發(fā)明實(shí)施例可以應(yīng)用于版本升級時對版本進(jìn)行校驗(yàn),校驗(yàn)時,獲取第一版本的版本信息包括:接收啟動第一版本的啟動指示,根據(jù)啟動指示獲取第一版本的版本信息;該方法還包括:當(dāng)?shù)谝话姹拘r?yàn)不通過時,不啟動第一版本;當(dāng)?shù)谝话姹拘r?yàn)通過時,啟動第一版本。
可選的,接收啟動第一版本的啟動指示可以為:接收啟動某操作系統(tǒng)版本的指示,或接收啟動某應(yīng)用程序版本的指示。
第二方面,本發(fā)明實(shí)施例提供了一種版本校驗(yàn)裝置,具體實(shí)現(xiàn)對應(yīng)于上述第一方面提供的版本校驗(yàn)方法的功能。所述功能可以通過硬件實(shí)現(xiàn),也可以通過硬件執(zhí)行相應(yīng)的軟件程序?qū)崿F(xiàn)。硬件和軟件包括一個或多個與上述功能相對應(yīng)的單元模塊,所述單元模塊可以是軟件和/或硬件。
一種可能的設(shè)計中,該裝置包括:
版本信息獲取模塊,用于獲取第一版本的版本信息,該版本信息包括第一版本的版本號;版本校驗(yàn)?zāi)K,用于根據(jù)第一版本的版本號確定第一版本的版本號對應(yīng)的校驗(yàn)比特位,若第一版本的版本號對應(yīng)的校驗(yàn)比特位為第一數(shù)值,則確定第一版本被禁用,第一版本校驗(yàn)未通過,若第一版本的版本號對應(yīng)的校驗(yàn)比特位為第二數(shù)值,則確定第一版本可用,第一版本校驗(yàn)通過。
結(jié)合第二方面,在第二方面的第一種可能的實(shí)現(xiàn)方式中,該裝置還包括:
接收模塊,用于接收禁用第二版本的指示,禁用第二版本的指示中包括第二版本的版本號;校驗(yàn)位更新模塊,用于根據(jù)第二版本的版本號確定第二版本的版本號對應(yīng)的校驗(yàn)比特位,將第二版本的版本號對應(yīng)的校驗(yàn)比特位置為所述第一數(shù)值。
結(jié)合第二方面的任一種可能的實(shí)現(xiàn)方式,在第二方面的第二種可能的實(shí)現(xiàn)方式中,第一版本的版本號對應(yīng)的校驗(yàn)比特位存儲于電子熔斷金屬熔絲eFuse的第一字段中,第一字段中的每個比特位用于指示一個版本是否被禁用。
可選的,所述校驗(yàn)比特位的第一數(shù)值為1,所述第二校驗(yàn)比特位的第二數(shù)值為0。
結(jié)合第二方面的任一種可能的實(shí)現(xiàn)方式,在第二方面的第三種可能的實(shí)現(xiàn)方式中,第一版本的版本號對應(yīng)的校驗(yàn)比特位存儲于閃存Flash的第二字段中,第二字段中的每個比特位用于指示一個版本是否被禁用。
可選的,一種可能的實(shí)施中,所述校驗(yàn)比特位的第一數(shù)值為1,所述第二校驗(yàn)比特位的第二數(shù)值為0。
可選的,在另一種可能的實(shí)施中,所述校驗(yàn)比特位的第一數(shù)值為0,所述第二校驗(yàn)比特位的第二數(shù)值為1。
結(jié)合第二方面的任一種可能的實(shí)現(xiàn)方式,在第二方面的第四種可能的實(shí)現(xiàn)方式中,該裝置還包括:簽名認(rèn)證模塊,用于對第一版本的版本信息進(jìn)行簽名認(rèn)證,當(dāng)簽名認(rèn)證通過時,則版本校驗(yàn)?zāi)K執(zhí)行根據(jù)第一版本的版本號確定第一版本的版本號對應(yīng)的校驗(yàn)比特位的步驟。
結(jié)合第二方面的任一種可能的實(shí)現(xiàn)方式,在第二方面的第五種可能的實(shí)現(xiàn)方式中,版本信息獲取模塊,具體用于接收升級指示,根據(jù)升級指示獲取第一版本的版本信息;該裝置還包括:升級模塊,用于當(dāng)校驗(yàn)不通過時,不升級至第一版本;若校驗(yàn)通過時,升級至第一版本。
結(jié)合第二方面的任一種可能的實(shí)現(xiàn)方式,在第二方面的第二種可能的實(shí)現(xiàn)方式中,版本信息獲取模塊,具體用于接收啟動第一版本的啟動指示,根據(jù)啟動指示獲取第一版本的版本信息;該裝置還包括:安全啟動模塊,用于當(dāng)?shù)谝话姹拘r?yàn)不通過時,不啟動第一版本,當(dāng)?shù)谝话姹拘r?yàn)通過時,啟動第一版本。
第三方面,本發(fā)明實(shí)施例還提供了一種芯片,該芯片用于執(zhí)行程序代碼,以執(zhí)行第一方面的版本校驗(yàn)方法的全部或部分步驟。
可選的,該芯片包括電子熔斷金屬熔絲eFuse,所述eFuse中存儲有版本校驗(yàn)比特位,每個比特位用于指示一個版本是否被禁用。
可選的,該芯片為系統(tǒng)級芯片SOC。
第四方面,本發(fā)明實(shí)施例還提供了一種終端設(shè)備,該終端設(shè)備包括:相互連接的收發(fā)器、處理器及存儲器;存儲器用于存儲程序代碼,處理器調(diào)用存儲器中的程序代碼,以執(zhí)行第一方面的全部或部分步驟:
獲取第一版本的版本信息,版本信息包括第一版本的版本號;根據(jù)第一版本的版本號確定第一版本的版本號對應(yīng)的校驗(yàn)比特位;若第一版本的版本號對應(yīng)的校驗(yàn)比特位為第一數(shù)值,則確定第一版本被禁用,第一版本校驗(yàn)未通過;若第一版本的版本號對應(yīng)的校驗(yàn)比特位為第二數(shù)值,則確定第一版本可用,第一版本校驗(yàn)通過。
第五方面,本發(fā)明實(shí)施例還提供了一種計算機(jī)存儲介質(zhì),該介質(zhì)存儲有應(yīng)用程序,該程序執(zhí)行時包括上述第一方面的版本校驗(yàn)方法中的部分或者全部步驟。
從以上技術(shù)方案可以看出,本發(fā)明實(shí)施例具有以下優(yōu)點(diǎn):
本發(fā)明實(shí)施例中,每個版本的版本號有對應(yīng)的校驗(yàn)比特位,通過比特位指示版本的禁用和可用信息,在獲得某個版本(第一版本)時,先根據(jù)該版本的版本號確定該版本號對應(yīng)的校驗(yàn)比特位,若該版本的版本號對應(yīng)的校驗(yàn)比特位為第一數(shù)值,則確定該版本被禁用,校驗(yàn)未通過,若該版本的版本號對應(yīng)的校驗(yàn)比特位為第二數(shù)值,則確定該版本可用,校驗(yàn)通過。通過本發(fā)明實(shí)施例,在獲取到某個版本后,可以對該版本進(jìn)行安全校驗(yàn),沒有校驗(yàn)通過的版本無法使用,因此可以防止攻擊者使用有安全漏洞的版本進(jìn)行安全攻擊。
附圖說明
圖1為本發(fā)明實(shí)施例中系統(tǒng)安全啟動相關(guān)的簽名校驗(yàn)過程示意圖;
圖2為本發(fā)明實(shí)施例中版本校驗(yàn)方法流程圖;
圖3為本發(fā)明實(shí)施例中通過eFuse存儲版本校驗(yàn)信息進(jìn)行校驗(yàn)的示意圖;
圖4為本發(fā)明實(shí)施例中版本校驗(yàn)方法的另一種流程圖;
圖5為本發(fā)明實(shí)施例中的版本校驗(yàn)裝置功能模塊結(jié)構(gòu)圖;
圖6為本發(fā)明實(shí)施例中終端設(shè)備的硬件結(jié)構(gòu)示意圖。
具體實(shí)施方式
為了使本發(fā)明的技術(shù)方案及有益效果更加清楚,以下結(jié)合附圖及實(shí)施例,對本發(fā)明進(jìn)行進(jìn)一步詳細(xì)說明。應(yīng)當(dāng)理解,此處所描述的具體實(shí)施例僅僅用以解釋本發(fā)明,并不用于限定本發(fā)明。
此外本發(fā)明實(shí)施例中的版本校驗(yàn)方法適用于各種帶有處理器(Central Processing Unit,簡稱:CPU)及應(yīng)用程序的終端設(shè)備,包括計算設(shè)備、車載設(shè)備、可穿戴設(shè)備、以及各種形式的用戶設(shè)備(User Equipment,簡稱UE),移動臺(Mobile station,簡稱MS),終端(terminal),終端設(shè)備(Terminal Equipment)等等。
本發(fā)明實(shí)施例適用于可以對軟件進(jìn)行升級,存在多個軟件版本的上述終端設(shè)備中對軟件的版本進(jìn)行安全校驗(yàn)的場景,該軟件可以是操作系統(tǒng)、也可以是在系統(tǒng)上的應(yīng)用程序,例如:ARM架構(gòu)的系統(tǒng)安全啟動,某個應(yīng)用程序的安全啟動等場景的版本校驗(yàn)。本發(fā)明實(shí)施例以系統(tǒng)安全啟動為例進(jìn)行說明。
結(jié)合圖1,對本發(fā)明實(shí)施例中的版本校驗(yàn)方法進(jìn)行說明,該方法的執(zhí)行主體為處理器(CPU)。
101、獲取第一版本的版本信息,該版本信息包括第一版本的版本號;
獲取版本的場景和方式有多種,包括在系統(tǒng)版本需要升級時,需要獲取待升級的版本;在開機(jī)啟動系統(tǒng)時,需要獲取需要啟動的版本;在安裝新的版本時,也會獲得待安裝的版本。
本發(fā)明實(shí)施例中的第一版本僅是特指某個版本,其中的“第一”是用于區(qū)別類似的對象,而不是用于描述特定的順序或先后次序。
在進(jìn)行版本升級時,處理器接收升級指示,根據(jù)該升級指示獲取待升級的版本(第一版本)的版本信息。
或者,在開機(jī)安全啟動,或者升級后安全啟動某個版本(即第一版本)時,處理器會接收到啟動該版本的啟動指示,之后根據(jù)該啟動指示獲取待啟動的該版本的版本信息,
其中版本信息包括版本號以及該版本的程序啟動代碼等信息。
102、根據(jù)第一版本的版本號確定第一版本的版本號對應(yīng)的校驗(yàn)比特位;
在獲取到第一版本的版本信息后,對該版本進(jìn)行安全校驗(yàn),確定該版本是否是可用的版本。
每個版本的版本號有對應(yīng)的校驗(yàn)比特位,通過校驗(yàn)比特位指示版本的禁用和可用信息。
當(dāng)某個版本號對應(yīng)的校驗(yàn)比特位為第一數(shù)值時,指示該版本號對應(yīng)的版本被禁用,當(dāng)某個版本號對應(yīng)的校驗(yàn)比特位為第二數(shù)值時,指示該版本號對應(yīng)的版本可用。
該校驗(yàn)比特位可以存儲于電子熔斷金屬熔絲(eFuse)中,也可以存儲于片外存儲器(如:Flash)里,存儲在片外存儲器時,需要通過秘鑰保護(hù),簽名認(rèn)證之后才允許更新。
1、存儲于eFuse中
在系統(tǒng)級芯片(System-on-a-Chip,簡稱:SOC)中,eFuse是一種重要的非易失性存儲單元,由熔絲結(jié)構(gòu)構(gòu)成,通過熔絲可以在芯片上編程并存儲信息,eFuse模塊有一次性熔斷的特性:eFuse中默認(rèn)存儲的比特位都是0,可以通過編程將需要的比特位由0改為1,一旦置1,就不能再改為0。利用eFuse的一次性熔斷的特性,在SoC的eFuse中增加第一字段,該字段中對應(yīng)的每個比特位用于指示一個版本是否可用(也即是否被禁用)。
可選的,該第一字段可以為NV_BITMAP_E字段。
在eFuse中,所述校驗(yàn)比特位中的第一數(shù)值的取值為1,所述校驗(yàn)比特位中的第二數(shù)值的取值為0,即當(dāng)eFuse中的第一字段中某個比特位為1時,表示該比特位對應(yīng)的版本已被禁用,當(dāng)某個比特位為0時,表示該比特位對應(yīng)的版本可用。
如圖2所示,F(xiàn)lash中存儲有系統(tǒng)片外啟動代碼版本的版本信息:版本0(Ver0)。CPU中存儲有片內(nèi)啟動引導(dǎo)程序(Boot),還包括有eFuse模塊,eFuse模塊中NV_BITMAP_E字段中的版本0對應(yīng)的比特位Bit0為0,表示版本0可用。
假設(shè)有片外啟動代碼有16個版本,NV_BITMAP_E字段中有32bit,則第0至第15bit分別用于指示版本0至版本15的是否可用,比特位和版本號之間的對應(yīng)關(guān)系可以如圖3所示。Bit 0為1,用于指示版本0(Ver0)被禁用;Bit 1為0,用于指示版本1(Ver1)可用;……Bit 16為0,用于指示版本16(Ver16)可用。
在進(jìn)行版本安全校驗(yàn)時,根據(jù)第一版本的版本號確定第一版本的版本號對應(yīng)的校驗(yàn)比特位,根據(jù)該版本號對應(yīng)的比特位是0還是1來確定該版本號是否可用。
2、存儲于片外存儲器中
以片外存儲器為Flash進(jìn)行舉例,校驗(yàn)比特位存放在片外Flash里,在Flash中增加第二字段,該字段中的每個比特位用于指示一個版本是否可用(也即是否被禁用)。
可選的,在Flash中,所述校驗(yàn)比特位中的第一數(shù)值的取值為1,所述校驗(yàn)比特位中的第二數(shù)值的取值為0,即當(dāng)eFuse中的第一字段中某個比特位為1時,表示該比特位對應(yīng)的版本已被禁用,當(dāng)某個比特位為0時,表示該比特位對應(yīng)的版本可用。
可選的,在Flash中,也可以是第一數(shù)值的取值為0,表示該比特位對應(yīng)的版本已被禁用,第二數(shù)值的取值為1,表示該比特位對應(yīng)的版本可用。
進(jìn)一步,為了保證安全性,對該第二字段使用私鑰簽名,在安全啟動進(jìn)行校驗(yàn)需要讀取Flash中的第二字段,或需要對Flash中的第二字段進(jìn)行更新時,先使用公鑰認(rèn)證簽名,若簽名認(rèn)證通過,才允許讀取或更新校驗(yàn)比特位。
Flash中的校驗(yàn)比特位與片外啟動代碼的版本的版本號之間的映射關(guān)系與圖2相同,此處不做贅述。
103、若第一版本的版本號對應(yīng)的校驗(yàn)比特位為第一數(shù)值,則確定第一版本被禁用,第一版本校驗(yàn)未通過;
根據(jù)第一版本的版本號從eFuse的第一字段或片外存儲器的第二字段中的校驗(yàn)比特位中確定第一版本的版本號對應(yīng)的校驗(yàn)比特位為第一數(shù)值時,則獲知該版本不可用,即被禁用,則該第一版本校驗(yàn)不通過。
若是在啟動第一版本時,對第一版本校驗(yàn)不通過,則說明該版本存在安全問題,則不允許啟動該版本。
若是在升級至第一版本時,對第一版本校驗(yàn)不通過,則說明該版本存在安全問題,則不允許升級至該版本。
104、若第一版本的版本號對應(yīng)的校驗(yàn)比特位為第二數(shù)值,則確定第一版本可用,第一版本校驗(yàn)通過。
根據(jù)第一版本的版本號從eFuse的第一字段或片外存儲器的第二字段中的校驗(yàn)比特位中確定第一版本的版本號對應(yīng)的校驗(yàn)比特位為第二數(shù)值,則獲知該版本可用,則該第一版本校驗(yàn)通過。
若是在啟動第一版本時,對第一版本校驗(yàn)通過,則說明該版本不存在安全問題,則允許啟動該版本。
若是在升級至第一版本時,對第一版本校驗(yàn)通過,則說明該版本不存在安全問題,則允許升級至該版本。
下面對有安全問題的版本進(jìn)行校驗(yàn)比特位置位的過程進(jìn)行說明。
當(dāng)某個版本(第二版本)有安全漏洞時,處理器接收到禁用第二版本的指示,該禁用指示中包括第二版本的版本號,則處理器根據(jù)該版本號確定第二版本的版本號對應(yīng)的校驗(yàn)比特位是第幾個bit位,該比特位原本為第二數(shù)值,此時,將該比特位置為第一數(shù)值,例如:當(dāng)?shù)诙?shù)值為0,第一數(shù)值為1時,將該比特位由0置位為1。以表示第二版本不可用,即已被禁用,后續(xù)不允許再升級到該版本,或不允許啟動該版本。
一種應(yīng)用場景為,發(fā)現(xiàn)某個版本有漏洞時,升級到一個新的版本。此時,在升級時,既需要對有漏洞的版本的版本號對應(yīng)的校驗(yàn)比特位置為第一數(shù)值,又要對待升級的版本進(jìn)行圖1所示的實(shí)施例中的版本校驗(yàn)??蛇x的,也可以在升級時不進(jìn)行圖1所示的實(shí)施例中的版本校驗(yàn),待該版本升級完成后,在啟動該版本時,對該版本進(jìn)行圖1所示的實(shí)施例中的版本校驗(yàn)。
例如:Ver1版本有安全漏洞,Ver1升級到Ver2。若采用eFuse存儲校驗(yàn)比特位的方式,Ver2升級啟動之后,更新NV_BITMAP_E,將不可使用的版本Ver1對應(yīng)的比特置位。然后有安全漏洞的版本Ver1再也無法通過版本校驗(yàn),其他無安全漏洞的版本Ver0,Ver2仍然可以通過版本校驗(yàn)。
本發(fā)明實(shí)施例中,每個版本的版本號有對應(yīng)的校驗(yàn)比特位,通過比特位指示版本的禁用和可用信息。在獲得某個版本時,先根據(jù)該版本的版本號確定該版本號對應(yīng)的校驗(yàn)比特位,若該版本的版本號對應(yīng)的校驗(yàn)比特位為第一數(shù)值,則確定該版本被禁用,校驗(yàn)不通過,則不允許該版本升級或啟動;若該版本的版本號對應(yīng)的校驗(yàn)比特位為第二數(shù)值,則確定該版本可用,校驗(yàn)通過,則允許該版本升級或啟動。通過本發(fā)明實(shí)施例,在獲取到某個版本后,可以對該版本進(jìn)行安全校驗(yàn),沒有校驗(yàn)通過的版本無法使用,因此可以防止攻擊者使用有安全漏洞的版本進(jìn)行安全攻擊。
另外,校驗(yàn)比特位信息可根據(jù)版本的安全信息(bugList)進(jìn)行更新,及時將有安全漏洞的版本對應(yīng)的比特位設(shè)置為禁用,從而可以確保有安全漏洞的版本無法使用,防止攻擊者使用有安全漏洞的版本進(jìn)行安全攻擊。
另一方面,本發(fā)明實(shí)施例每個版本對應(yīng)一個校驗(yàn)比特位,在被禁用的版本之前的其他版本,如果沒有安全漏洞,還可以使用,若當(dāng)前版本因?yàn)橐恍┰驘o法啟動的時候,還可以將之前的其他版本作為備份版本啟動。因此能夠提高方案的完整性。
進(jìn)一步,在實(shí)際應(yīng)用中,在獲取到某個版本時,需要先對該版本的版本信息進(jìn)行簽名認(rèn)證,當(dāng)簽名認(rèn)證通過時,才執(zhí)行圖1所示的實(shí)施例中步驟102至步驟104。
結(jié)合圖4,下面對簽名認(rèn)證過程進(jìn)行介紹。
系統(tǒng)啟動代碼(系統(tǒng)的某個版本對應(yīng)的啟動代碼,System Code)在進(jìn)行啟動時,需要先進(jìn)行簽名安全校驗(yàn),以確保系統(tǒng)啟動代碼沒有被篡改。圖1為系統(tǒng)安全啟動相關(guān)的簽名校驗(yàn)過程示意圖,圖1所示的示意圖中采用eFuse模塊存儲密鑰等與安全相關(guān)的內(nèi)容。
簽名認(rèn)證的原理可以為:采用基于RSA非對稱加密算法,使用私鑰簽名,公鑰認(rèn)證的簽名認(rèn)證機(jī)制來構(gòu)建安全啟動的信任鏈。
芯片商隨機(jī)生成非對稱性密鑰對,并將公鑰Hash值和私鑰指數(shù)燒入Efuse,公鑰寫到Flash指定位置,設(shè)備商使用一單向散列函數(shù):哈希(Hash)函數(shù)對系統(tǒng)啟動代碼生成信息摘要,然后使用Efuse私鑰對信息摘要進(jìn)行加密,即數(shù)字簽名,簽名后的信息摘要與系統(tǒng)啟動代碼放在一起,寫到片外存儲器,片外存儲器通常是FLASH,例如,圖4中所示為非易失性隨機(jī)訪問存儲器(Non-Volatile Random Access Memory,NVRAM),公私鑰對由芯片內(nèi)部產(chǎn)生,燒寫與校驗(yàn)過程不可見,且不備份。
安全啟動時,系統(tǒng)由片內(nèi)Boot啟動,片內(nèi)Boot ROM包含最小系統(tǒng)初始化和簽名認(rèn)證安全校驗(yàn)程序,先對Flash中的公鑰生成Hash值,與Efuse的可信公鑰根(Root Of Trust Public Key,ROTPK)比對,所述可信公鑰根是安全啟動使用的EK公鑰(N,e)的SHA256Hash值,以保證校驗(yàn)簽名使用的公鑰是唯一指定的。如果通過則對片外系統(tǒng)啟動代碼生成Hash摘要值,再使用公鑰認(rèn)證簽名得到原始Hash摘要值,對這兩個信息摘要值進(jìn)行校驗(yàn),就知道系統(tǒng)啟動代碼是否被篡改過,是否是預(yù)期授權(quán)的代碼。片外系統(tǒng)啟動代碼簽名認(rèn)證校驗(yàn)通過后,切換到片外系統(tǒng)啟動代碼執(zhí)行,引導(dǎo)后續(xù)啟動程序。
因此,在系統(tǒng)進(jìn)行安全啟動時,需要先對系統(tǒng)啟動代碼進(jìn)行簽名認(rèn)證,簽名認(rèn)證通過后,確認(rèn)系統(tǒng)啟動代碼沒有被篡改,再進(jìn)行圖1所示的實(shí)施例中的版本校驗(yàn),確定該版本的系統(tǒng)啟動代碼是否是可用的版本,是可用的版本時,才允許啟動該版本。從而能夠從確保程序啟動時的安全性。
以上是對本發(fā)明實(shí)施例中的版本校驗(yàn)方法進(jìn)行的介紹,下面對本發(fā)明實(shí)施例中的版本校驗(yàn)裝置進(jìn)行介紹。
結(jié)合圖5,本發(fā)明實(shí)施例中的版本校驗(yàn)裝置包括:
版本信息獲取模塊501,用于獲取第一版本的版本信息,該版本信息包括第一版本的版本號;
版本校驗(yàn)?zāi)K502,用于根據(jù)第一版本的版本號確定第一版本的版本號對應(yīng)的校驗(yàn)比特位,若第一版本的版本號對應(yīng)的校驗(yàn)比特位為第一數(shù)值,則確定第一版本被禁用,第一版本校驗(yàn)未通過,若第一版本的版本號對應(yīng)的校驗(yàn)比特位為第二數(shù)值,則確定第一版本可用,第一版本校驗(yàn)通過。
在一些具體的實(shí)施中,該裝置還包括:
接收模塊503,用于接收禁用第二版本的指示,禁用第二版本的指示中包括第二版本的版本號;校驗(yàn)位更新模塊504,用于根據(jù)第二版本的版本號確定第二版本的版本號對應(yīng)的校驗(yàn)比特位,將第二版本的版本號對應(yīng)的校驗(yàn)比特位置為第一數(shù)值。
在一些具體的實(shí)施中,所述版本號對應(yīng)的校驗(yàn)比特位存儲于電子熔斷金屬熔絲eFuse的第一字段中,第一字段中的每個比特位用于指示一個版本是否被禁用。
在一些具體的實(shí)施中,所述版本號對應(yīng)的校驗(yàn)比特位存儲于閃存Flash的第二字段中,第二字段中的每個比特位用于指示一個版本是否被禁用。
在一些具體的實(shí)施中,該裝置還包括:簽名認(rèn)證模塊505,用于對第一版本的版本信息進(jìn)行簽名認(rèn)證,當(dāng)簽名認(rèn)證通過時,則版本校驗(yàn)?zāi)K502執(zhí)行根據(jù)第一版本的版本號確定第一版本的版本號對應(yīng)的校驗(yàn)比特位的步驟。
在一些具體的實(shí)施中,版本信息獲取模塊501,具體用于接收升級指示,根據(jù)升級指示獲取第一版本的版本信息;該裝置還包括:升級模塊506,用于當(dāng)校驗(yàn)不通過時,不升級至第一版本;若校驗(yàn)通過時,升級至第一版本。
在一些具體的實(shí)施中,版本信息獲取模塊501,具體用于接收啟動第一版本的啟動指示,根據(jù)啟動指示獲取第一版本的版本信息;該裝置還包括:安全啟動模塊507,用于當(dāng)?shù)谝话姹拘r?yàn)不通過時,不啟動第一版本,當(dāng)?shù)谝话姹拘r?yàn)通過時,啟動第一版本。
以上版本校驗(yàn)裝置中的各模塊之間的信息交互請參閱上述版本校驗(yàn)方法實(shí)施例(圖1至圖4所對應(yīng)的實(shí)施例)中的描述,此處不再贅述。
可選的,上述版本校驗(yàn)方法中實(shí)現(xiàn)的功能可以通過專用集成電路(英文:application-specific integrated circuit,簡稱:ASIC)實(shí)現(xiàn),或可編程邏輯器件(英文:programmable logic device,簡稱:PLD)實(shí)現(xiàn)。上述PLD可以是復(fù)雜可編程邏輯器件(英文:complex programmable logic device,簡稱:CPLD),F(xiàn)PGA,通用陣列邏輯(英文:generic array logic,簡稱:GAL)或其任意組合。
另外,本發(fā)明實(shí)施例還提供了一種芯片,該芯片用于執(zhí)行程序代碼,以執(zhí)行上述版本校驗(yàn)方法實(shí)施例的全部或部分步驟。
該芯片包括電子熔斷金屬熔絲eFuse,所述eFuse中存儲有版本校驗(yàn)比特位,每個比特位用于指示一個版本是否被禁用。
此外,本發(fā)明實(shí)施例還提供了一種終端設(shè)備,該終端設(shè)備可以以一個用戶設(shè)備(例如:手機(jī))的形式存在。該終端設(shè)備還可以包括手持設(shè)備、車載設(shè)備、可穿戴設(shè)備、計算設(shè)備,以及各種形式的用戶設(shè)備。手持設(shè)備可以為包括手機(jī)、平板電腦、PDA(Personal Digital Assistant,個人數(shù)字助理)、等任意終端設(shè)備。
下面以手機(jī)為例對本發(fā)明實(shí)施例中的終端設(shè)備進(jìn)行說明。
圖6示出的是與本發(fā)明實(shí)施例提供的用戶設(shè)備相關(guān)的手機(jī)的部分結(jié)構(gòu)的框圖。參考圖6,手機(jī)包括:射頻(Radio Frequency,RF)電路610、存儲器620、輸入單元630、顯示單元640、傳感器650、音頻電路660、無線保真(wireless fidelity,WiFi)模塊670、處理器680、以及電源690等部件。其中,射頻電路610、WiFi模塊670為收發(fā)器。本領(lǐng)域技術(shù)人員可以理解,圖6中示出的手機(jī)結(jié)構(gòu)并不構(gòu)成對手機(jī)的限定,可以包括比圖示更多或更少的部件,或者組合某些部件,或者不同的部件布置。
下面結(jié)合圖6對手機(jī)的各個構(gòu)成部件進(jìn)行具體的介紹:
存儲器620可用于存儲軟件程序以及模塊,處理器680通過運(yùn)行存儲在存儲器620的軟件程序以及模塊,從而執(zhí)行手機(jī)的各種功能應(yīng)用以及數(shù)據(jù)處理。存儲器620可主要包括存儲程序區(qū)和存儲數(shù)據(jù)區(qū),其中,存儲程序區(qū)可存儲操作系統(tǒng)、至少一個功能所需的應(yīng)用程序(比如聲音播放功能、圖像播放功能等)等;存儲數(shù)據(jù)區(qū)可存儲根據(jù)手機(jī)的使用所創(chuàng)建的數(shù)據(jù)(比如音頻數(shù)據(jù)、電話本等)等。此外,存儲器620可以包括高速隨機(jī)存取存儲器,還可以包括非易失性存儲器,例如至少一個磁盤存儲器件、閃存器件、或其他易失性固態(tài)存儲器件。
具體的,存儲器620存儲的應(yīng)用程序?yàn)閳?zhí)行時包括上述圖1到圖4所對應(yīng)的方法中的部分或者全部步驟。存儲器620中存儲所述版本號信息、版本對應(yīng)的程序啟動代碼等信息。
輸入單元630可用于接收輸入的數(shù)字或字符信息,以及產(chǎn)生與手機(jī)的用戶設(shè)置以及功能控制有關(guān)的鍵信號輸入。具體地,輸入單元630可包括觸控面板631以及其他輸入設(shè)備632。觸控面板631,也稱為觸摸屏,可收集用戶在其上或附近的觸摸操作(比如用戶使用手指、觸筆等任何適合的物體或附件在觸控面板631上或在觸控面板631附近的操作),并根據(jù)預(yù)先設(shè)定的程式驅(qū)動相應(yīng)的連接裝置??蛇x的,觸控面板631可包括觸摸檢測裝置和觸摸控制器兩個部分。其中,觸摸檢測裝置檢測用戶的觸摸方位,并檢測觸摸操作帶來的信號,將信號傳送給觸摸控制器;觸摸控制器從觸摸檢測裝置上接收觸摸信息,并將它轉(zhuǎn)換成觸點(diǎn)坐標(biāo),再送給處理器680,并能接收處理器680發(fā)來的命令并加以執(zhí)行。此外,可以采用電阻式、電容式、紅外線以及表面聲波等多種類型實(shí)現(xiàn)觸控面板631。除了觸控面板631,輸入單元630還可以包括其他輸入設(shè)備632。具體地,其他輸入設(shè)備632可以包括但不限于物理鍵盤、功能鍵(比如音量控制按鍵、開關(guān)按鍵等)、軌跡球、鼠標(biāo)、操作桿等中的一種或多種。
顯示單元640可用于顯示由用戶輸入的信息或提供給用戶的信息。顯示單元640可包括顯示面板641,可選的,可以采用液晶顯示器(Liquid Crystal Display,LCD)、有機(jī)發(fā)光二極管(Organic Light-Emitting Diode,OLED)等形式來配置顯示面板641。進(jìn)一步的,觸控面板631可覆蓋顯示面板641,當(dāng)觸控面板631檢測到在其上或附近的觸摸操作后,傳送給處理器680以確定觸摸事件的類型,隨后處理器680根據(jù)觸摸事件的類型在顯示面板641上提供相應(yīng)的視覺輸出。雖然在圖6中,觸控面板631與顯示面板641是作為兩個獨(dú)立的部件來實(shí)現(xiàn)手機(jī)的輸入和輸入功能,但是在某些實(shí)施例中,可以將觸控面板631與顯示面板641集成而實(shí)現(xiàn)手機(jī)的輸入和輸出功能。
處理器680是手機(jī)的控制中心,利用各種接口和線路連接整個手機(jī)的各個部分,通過運(yùn)行或執(zhí)行存儲在存儲器620內(nèi)的軟件程序和/或模塊,以及調(diào)用存儲在存儲器620內(nèi)的數(shù)據(jù),執(zhí)行手機(jī)的各種功能和處理數(shù)據(jù),從而對手機(jī)進(jìn)行整體監(jiān)控??蛇x的,處理器680可包括一個或多個處理單元;優(yōu)選的,處理器680可集成應(yīng)用處理器和調(diào)制解調(diào)處理器,其中,應(yīng)用處理器主要處理操作系統(tǒng)、用戶界面和應(yīng)用程序等,調(diào)制解調(diào)處理器主要處理無線通信??梢岳斫獾氖牵鲜稣{(diào)制解調(diào)處理器也可以不集成到處理器680中。
具體的,本發(fā)明實(shí)施例中的處理器680用于執(zhí)行存儲器620中的應(yīng)用程序,以執(zhí)行圖1到圖4中的實(shí)施例中的處理器所執(zhí)行的部分或者全部步驟。
手機(jī)還可包括至少一種傳感器650、電源690,盡管未示出,手機(jī)還可以包括攝像頭、藍(lán)牙模塊等,在此不再贅述。
另外,本發(fā)明實(shí)施例還提供了一種計算機(jī)存儲介質(zhì),該介質(zhì)存儲有應(yīng)用程序,該程序執(zhí)行時包括上述版本校驗(yàn)方法中的部分或者全部步驟。
所屬領(lǐng)域的技術(shù)人員可以清楚地了解到,為描述的方便和簡潔,上述描述的系統(tǒng),裝置和單元的具體工作過程,可以參考前述方法實(shí)施例中的對應(yīng)過程,在此不再贅述。
在本申請所提供的幾個實(shí)施例中,應(yīng)該理解到,所揭露的系統(tǒng),裝置和方法,可以通過其它的方式實(shí)現(xiàn)。例如,以上所描述的裝置實(shí)施例僅僅是示意性的,例如,所述單元的劃分,僅僅為一種邏輯功能劃分,實(shí)際實(shí)現(xiàn)時可以有另外的劃分方式,例如多個單元或組件可以結(jié)合或者可以集成到另一個系統(tǒng),或一些特征可以忽略,或不執(zhí)行。另一點(diǎn),所顯示或討論的相互之間的耦合或直接耦合或通信連接可以是通過一些接口,裝置或單元的間接耦合或通信連接,可以是電性,機(jī)械或其它的形式。
所述作為分離部件說明的單元可以是或者也可以不是物理上分開的,作為單元顯示的部件可以是或者也可以不是物理單元,即可以位于一個地方,或者也可以分布到多個網(wǎng)絡(luò)單元上??梢愿鶕?jù)實(shí)際的需要選擇其中的部分或者全部單元來實(shí)現(xiàn)本實(shí)施例方案的目的。
另外,在本發(fā)明各個實(shí)施例中的各功能單元可以集成在一個處理單元中,也可以是各個單元單獨(dú)物理存在,也可以兩個或兩個以上單元集成在一個單元中。上述集成的單元既可以采用硬件的形式實(shí)現(xiàn),也可以采用軟件功能單元的形式實(shí)現(xiàn)。
所述集成的單元如果以軟件功能單元的形式實(shí)現(xiàn)并作為獨(dú)立的產(chǎn)品銷售或使用時,可以存儲在一個計算機(jī)可讀取存儲介質(zhì)中?;谶@樣的理解,本發(fā)明的技術(shù)方案本質(zhì)上或者說對現(xiàn)有技術(shù)做出貢獻(xiàn)的部分或者該技術(shù)方案的全部或部分可以以軟件產(chǎn)品的形式體現(xiàn)出來,該計算機(jī)軟件產(chǎn)品存儲在一個存儲介質(zhì)中,包括若干指令用以使得一臺計算機(jī)設(shè)備(可以是個人計算機(jī),服務(wù)器,或者網(wǎng)絡(luò)設(shè)備等)執(zhí)行本發(fā)明各個實(shí)施例所述方法的全部或部分步驟。而前述的存儲介質(zhì)包括:U盤、移動硬盤、只讀存儲器(ROM,Read-Only Memory)、隨機(jī)存取存儲器(RAM,Random Access Memory)、磁碟或者光盤等各種可以存儲程序代碼的介質(zhì)。
以上所述,以上實(shí)施例僅用以說明本發(fā)明的技術(shù)方案,而非對其限制;盡管參照前述實(shí)施例對本發(fā)明進(jìn)行了詳細(xì)的說明,本領(lǐng)域的普通技術(shù)人員應(yīng)當(dāng)理解:其依然可以對前述各實(shí)施例所記載的技術(shù)方案進(jìn)行修改,或者對其中部分技術(shù)特征進(jìn)行等同替換;而這些修改或者替換,并不使相應(yīng)技術(shù)方案的本質(zhì)脫離本發(fā)明各實(shí)施例技術(shù)方案的精神和范圍。