本發(fā)明實(shí)施例涉及計(jì)算機(jī)技術(shù)領(lǐng)域,特別是涉及一種處理器啟動(dòng)方法、裝置及提供初始程序裝入程序的裝置。
背景技術(shù):在處理器啟動(dòng)時(shí),首先會(huì)通過(guò)只讀內(nèi)存(Read-OnlyMemory;ROM)代碼加載一段較小的初始程序裝入程序(InitialProgramLoader;IPL),被加載的IPL僅進(jìn)行系統(tǒng)的基本配置;然后跳轉(zhuǎn)并執(zhí)行該IPL,并進(jìn)一步加載更多的可執(zhí)行程序到系統(tǒng)中?,F(xiàn)在的處理器在啟動(dòng)時(shí),對(duì)加載的任意IPL均會(huì)執(zhí)行對(duì)應(yīng)的配置操作,如果加載的IPL為惡意修改后的IPL或者非指定的IPL,則處理器啟動(dòng)并執(zhí)行這些IPL會(huì)對(duì)系統(tǒng)安全造成影響。
技術(shù)實(shí)現(xiàn)要素:本發(fā)明實(shí)施例公開(kāi)了一種處理器啟動(dòng)方法、裝置及提供初始程序裝入程序的裝置,以解決處理器啟動(dòng)時(shí)加載并執(zhí)行任意IPL,對(duì)系統(tǒng)安全性造成影響的問(wèn)題。為了解決上述問(wèn)題,本發(fā)明實(shí)施例公開(kāi)了一種處理器啟動(dòng)方法,包括:處理器讀取提供方生成的預(yù)加載初始程序裝入程序IPL中安全啟動(dòng)控制塊頭SBH中的公鑰,并生成與公鑰對(duì)應(yīng)的的第二公鑰摘要值;當(dāng)?shù)诙€摘要值與預(yù)存的第一公鑰摘要值相同時(shí),通過(guò)公鑰對(duì)SBH中的摘要密文進(jìn)行解密操作,得到第一IPL摘要值;生成預(yù)加載IPL中程序代碼的第二IPL摘要值;當(dāng)?shù)谝籌PL摘要值與第二IPL摘要值相同時(shí),執(zhí)行預(yù)加載IPL使得處理器啟動(dòng)。本發(fā)明實(shí)施例還公開(kāi)了一種處理器啟動(dòng)裝置,包括:公鑰讀取模塊,用于讀取提供方生成的預(yù)加載初始程序裝入程序IPL中安全啟動(dòng)控制塊頭SBH中的公鑰;公鑰摘要值生成模塊,用于生成與公鑰對(duì)應(yīng)的的第二公鑰摘要值;解密模塊,用于當(dāng)?shù)诙€摘要值與預(yù)存的第一公鑰摘要值相同時(shí),通過(guò)公鑰對(duì)SBH中的摘要密文進(jìn)行解密操作,得到第一IPL摘要值;第二IPL摘要值生成模塊,用于生成預(yù)加載IPL中程序代碼的第二IPL摘要值;IPL執(zhí)行模塊,用于當(dāng)?shù)谝籌PL摘要值與第二IPL摘要值相同時(shí),執(zhí)行預(yù)加載IPL使得處理器啟動(dòng)。本發(fā)明實(shí)施例還公開(kāi)了一種提供初始程序裝入程序的裝置,包括:第一IPL摘要值生成模塊,用于生成預(yù)加載IPL中程序代碼的第一IPL摘要值;加密模塊,用于通過(guò)密鑰對(duì)中私鑰對(duì)第一IPL摘要值進(jìn)行加密操作,獲得摘要密文;SBH生成模塊,用于根據(jù)摘要密文以及密鑰對(duì)中公鑰,生成SBH;IPL獲得模塊,用于根據(jù)SBH以及預(yù)加載IPL中程序代碼,得到預(yù)加載IPL。本發(fā)明實(shí)施例通過(guò)采用上述技術(shù)方案,安全啟動(dòng)數(shù)據(jù)包括公鑰(預(yù)置的公鑰)、公鑰摘要值(第一公鑰摘要值)以及IPL的摘要密文。其中,第一公鑰摘要值存儲(chǔ)在處理器硬件只讀存儲(chǔ)器件中,在芯片生產(chǎn)或者出廠階段寫(xiě)入。預(yù)置的公鑰和IPL的摘要密文在提供方生成預(yù)加載IPL時(shí)存儲(chǔ)在IPL啟動(dòng)控制塊頭(SecurityBootHeader;SBH)中。在處理器預(yù)啟動(dòng)時(shí),首先將帶有SBH的IPL(預(yù)加載IPL)加載到系統(tǒng)中。然后從IPLSBH中讀出加密算法的公鑰,通過(guò)摘要算法生成第二公鑰摘要值并與存儲(chǔ)在處理器硬件里的第一公鑰摘要值比較,如果相同,則處理器繼續(xù)啟動(dòng)流程。本步驟確保IPLSBH中的預(yù)置的公鑰沒(méi)有被篡改。如果上述生成的第二公鑰摘要值與存儲(chǔ)在處理器硬件里的第一公鑰摘要值相同,再?gòu)腎PLSBH中讀出IPL的摘要密文,使用公鑰(IPLSBH中的公鑰)對(duì)IPL的摘要密文進(jìn)行解密得到第一IPL摘要值。對(duì)預(yù)先加載到系統(tǒng)中的IPL的程序代碼通過(guò)摘要算法生成第二IPL摘要值。將解密得到的第一IPL摘要值與通過(guò)摘要算法生成的第二IPL摘要值進(jìn)行比較,如果相同,則處理器啟動(dòng)成功,可以執(zhí)行預(yù)加載IPL。如果偽造處理器啟動(dòng)時(shí)預(yù)加載的IPL,必須得到密鑰對(duì)(包括公鑰和私鑰),然后通過(guò)私鑰對(duì)偽造的IPL的摘要值進(jìn)行加密。雖然公鑰公開(kāi)保存在已發(fā)布的IPLSBH中,但私鑰卻是不對(duì)外公開(kāi)的。根據(jù)加密算法的原理,私鑰進(jìn)行加密,公鑰用于解密,根據(jù)公鑰不可以推算出密鑰對(duì)。所以不可以通過(guò)公開(kāi)的公鑰推算出密鑰對(duì)進(jìn)而采用該秘鑰對(duì)偽造的IPL摘要進(jìn)行加密。并且在本技術(shù)方案中,安全啟動(dòng)數(shù)據(jù)中包括的第一公鑰摘要值(存儲(chǔ)在處理器不可修改的硬件中),可以起到驗(yàn)證從IPLSBH讀取出的公鑰是否被修改的作用。修改后的公鑰的公鑰摘要值與安全啟動(dòng)數(shù)據(jù)中的第一公鑰摘要值必定不同,則處理器啟動(dòng)失敗,處理器不能加載運(yùn)行偽造的IPL,提高了系統(tǒng)的安全性和穩(wěn)定性。而且,由于私鑰不對(duì)外公開(kāi),具有保密性,利用私鑰對(duì)IPL摘要值進(jìn)行加密得到IPL的摘要密文,只能被唯一的不可修改的公鑰解密,解密得到的IPL摘要值也是唯一。即使偽造IPL,但偽造出的IPL的IPL摘要值與對(duì)安全啟動(dòng)數(shù)據(jù)中的IPL的摘要密文進(jìn)行解密得到的IPL摘要值不同,則處理器啟動(dòng)失敗,處理器不能加載運(yùn)行偽造的IPL,提高了系統(tǒng)的安全性和穩(wěn)定性。附圖說(shuō)明圖1是本發(fā)明實(shí)施例一中一種處理器啟動(dòng)方法流程圖;圖2是本發(fā)明實(shí)施例二中一種處理器啟動(dòng)方法流程圖;圖3是本發(fā)明實(shí)施例二中步驟200和步驟202的執(zhí)行過(guò)程示意圖;圖4是本發(fā)明實(shí)施例二中步驟204至步驟210的執(zhí)行過(guò)程示意圖;圖5是本發(fā)明實(shí)施例三中一種處理器啟動(dòng)裝置結(jié)構(gòu)示意圖;圖6是本發(fā)明實(shí)施例四種一種提供IPL的裝置結(jié)構(gòu)示意圖。具體實(shí)施方式為使本發(fā)明的上述目的、特征和優(yōu)點(diǎn)能夠更加明顯易懂,下面結(jié)合附圖和具體實(shí)施方式對(duì)本發(fā)明作進(jìn)一步詳細(xì)的說(shuō)明。本發(fā)明實(shí)施例公開(kāi)的一種處理器啟動(dòng)方法和處理器,可以在處理器啟動(dòng)過(guò)程中進(jìn)行兩次比較,第一次比較為公鑰摘要值的比較,第二次比較為IPL摘要值的比較,第二次比較的前提條件為第一次比較的結(jié)果為進(jìn)行比較的兩個(gè)公鑰摘要值相同。并且當(dāng)?shù)谝淮伪容^的結(jié)果為公鑰摘要值不同時(shí),處理器啟動(dòng)失敗,可以進(jìn)入死循環(huán)的狀態(tài);當(dāng)?shù)谝淮伪容^的結(jié)果為公鑰摘要值相同時(shí),進(jìn)行第二次比較。如果第二次比較的結(jié)果為IPL摘要值不同,則處理器啟動(dòng)失?。蝗绻诙伪容^的結(jié)果為IPL摘要值相同,則處理器啟動(dòng)成功,處理器可以加載并運(yùn)行可執(zhí)行程序。下面通過(guò)列舉幾個(gè)具體的實(shí)施例詳細(xì)介紹本發(fā)明公開(kāi)的一種處理器啟動(dòng)方法和處理器。實(shí)施例一詳細(xì)介紹本發(fā)明實(shí)施例公開(kāi)的一種處理器啟動(dòng)方法。參照?qǐng)D1,示出了本發(fā)明實(shí)施例中一種處理器啟動(dòng)方法流程圖。步驟100,處理器讀取提供方生成的預(yù)加載IPL中SBH中的公鑰,并生成與公鑰對(duì)應(yīng)的的第二公鑰摘要值。其中,提供方可以為預(yù)加載IPL的生產(chǎn)方或者供應(yīng)方,提供方還可以是區(qū)別于處理器生產(chǎn)方和處理器使用方之外的第三方。處理器獲得提供方生成的預(yù)加載IPL后,從預(yù)加載IPL的SBH中讀取出公鑰,通常情況下,預(yù)加載IPL的SBH中只有一個(gè)公鑰。處理器根據(jù)讀取出的公鑰生成公鑰的唯一一個(gè)第二公鑰摘要值。步驟102,當(dāng)?shù)诙€摘要值與預(yù)存的第一公鑰摘要值相同時(shí),通過(guò)公鑰對(duì)SBH中的摘要密文進(jìn)行解密操作,得到第一IPL摘要值。處理器生成第二公鑰摘要值之后,將第二公鑰摘要值與預(yù)存的第一公鑰摘要值進(jìn)行比較。其中,預(yù)存的第一公鑰摘要值可以預(yù)先存儲(chǔ)在處理器硬件只讀存儲(chǔ)器件中,是根據(jù)預(yù)置的公鑰生成的。第二公鑰摘要值與第一公鑰摘要值相同,可以表示在預(yù)加載IPL的SBH中讀取得到的公鑰是與預(yù)置的公鑰一致的,是沒(méi)有被篡改的“真實(shí)”的公鑰。由于讀取得到的公鑰為沒(méi)有被篡改的“真實(shí)”的公鑰,所以,可以通過(guò)讀取到的公鑰對(duì)SBH中的摘要密文進(jìn)行解密操作,得到一個(gè)第一IPL摘要值。步驟104,生成預(yù)加載IPL中程序代碼的第二IPL摘要值。其中,預(yù)加載IPL除了包含SBH之外,還包含程序代碼。處理器可以從預(yù)加載IPL中讀取出程序代碼,生成第二IPL摘要值。步驟106,當(dāng)?shù)谝籌PL摘要值與第二IPL摘要值相同時(shí),執(zhí)行預(yù)加載IPL使得處理器啟動(dòng)。當(dāng)解密得到的第一IPL摘要值與生成的第二IPL摘要值相同時(shí),表示預(yù)加載IPL為正常的、可安全執(zhí)行的IPL。此時(shí)預(yù)加載IPL可以為處理器使用方指定加載的IPL,不是經(jīng)過(guò)第三方篡改的IPL。上述步驟104的執(zhí)行時(shí)間可以在上述步驟106之前的任意時(shí)間,通常情況下,為了減少不必要的執(zhí)行過(guò)程,降低處理器的工作負(fù)荷,通常在上述步驟102之后才執(zhí)行步驟104的相關(guān)操作。本實(shí)施例通過(guò)采用上述技術(shù)方案,在處理器啟動(dòng)過(guò)程中,進(jìn)行兩次比較的過(guò)程,分別為公鑰摘要值的比較和IPL摘要值的比較。每次比較都可以理解為對(duì)預(yù)加載IPL的安全性的一次驗(yàn)證,當(dāng)任意一次比較的比較結(jié)果為不同時(shí),處理器均不會(huì)根據(jù)預(yù)加載IPL進(jìn)行系統(tǒng)配置,處理器啟動(dòng)失??;當(dāng)兩次比較的比較結(jié)果均為相同時(shí),處理器啟動(dòng)成功。由于增加了比較的過(guò)程,所以提高了系統(tǒng)的安全性。實(shí)施例二詳細(xì)介紹本發(fā)明實(shí)施例公開(kāi)的一種處理器啟動(dòng)方法。參照?qǐng)D2,示出了本發(fā)明實(shí)施例中一種處理器啟動(dòng)方法流程圖。步驟200,提供方生成預(yù)加載IPL。其中,提供方可以為預(yù)加載IPL的生產(chǎn)方或者供應(yīng)方,提供方還可以是區(qū)別于處理器生產(chǎn)方和處理器使用方之外的第三方。優(yōu)選的,步驟200可以包括下列四個(gè)子步驟:步驟2001,提供方生成預(yù)加載IPL中程序代碼的第一IPL摘要值。預(yù)加載IPL中預(yù)先包含程序代碼。優(yōu)選的,步驟2001可以為:提供方對(duì)預(yù)加載IPL中程序代碼進(jìn)行摘要算法運(yùn)算生成第一IPL摘要值。其中,摘要算法運(yùn)算可以是生成第一IPL摘要值的一種廣義的運(yùn)算算法,可以為安全散列算法(SecureHashAlgorithm;SHA)等,本發(fā)明實(shí)施例中優(yōu)選采用SHA256算法進(jìn)行IPL摘要值的生成運(yùn)算。步驟2002,通過(guò)密鑰對(duì)中私鑰對(duì)第一IPL摘要值進(jìn)行加密操作,獲得摘要密文。其中,密鑰對(duì)可以包括私鑰和公鑰。對(duì)于私鑰提供方以外的各方,私鑰具有不可見(jiàn)性,具有很好的保密特性。公鑰可以是預(yù)置的,是真實(shí)合法的公鑰。所以通過(guò)私鑰對(duì)第一IPL摘要值進(jìn)行加密操作,得到的摘要密文也具有保密特性。優(yōu)選的,步驟2002中進(jìn)行加密操作可以采用一種非對(duì)稱(chēng)的加密算法,如公鑰加密算法(RivestShamirhAdleman;RSA)。步驟2003,根據(jù)摘要密文以及密鑰對(duì)中公鑰,生成SBH??梢詫⒉襟E2002中生成的摘要密文和密鑰對(duì)中的公鑰存儲(chǔ)到SBH中。步驟2004,根據(jù)SBH以及預(yù)加載IPL中程序代碼,得到預(yù)加載IPL。將預(yù)加載IPL中的程序代碼和步驟2003中生成的SBH作為一個(gè)整體形成預(yù)加載IPL。步驟202,處理器生產(chǎn)方生成并預(yù)存第一公鑰摘要值。優(yōu)選的,預(yù)存的第一公鑰摘要值是根據(jù)預(yù)置的公鑰生成的。處理器生產(chǎn)方可以將生成的第一公鑰摘要值存儲(chǔ)在處理器硬件只讀存儲(chǔ)器件中。本實(shí)施例中的處理器硬件只讀存儲(chǔ)器件可以是一次性燒寫(xiě)的存儲(chǔ)器。有Efuse(一種用戶(hù)空間文件系統(tǒng),F(xiàn)ilesysteminUserspace)或者一次編程(onetimeprogram;OTP)存儲(chǔ)器的分別。優(yōu)選可以選用Efuse。因?yàn)楣€摘要值需要靈活燒寫(xiě)。如果在工廠生產(chǎn)的時(shí)候進(jìn)行燒寫(xiě)比較被動(dòng),所以處理器里包含了efuse,但是空的,可以寫(xiě)一次??梢愿鶕?jù)不同需求提供不同的公鑰密鑰對(duì),而且燒入公鑰摘要值,還可以對(duì)處理器進(jìn)行區(qū)分。預(yù)置的公鑰通常可以理解為官方的公鑰,預(yù)置的公鑰是不可以更改的。需要說(shuō)明的是,上述步驟200和上述步驟202的執(zhí)行順序并非完全固定不變,也可以先執(zhí)行步驟202,再執(zhí)行步驟200。優(yōu)選的,上述步驟200和步驟202的執(zhí)行過(guò)程可以如圖3所示。1、通過(guò)SHA256算法獲得IPL程序代碼(CODE)的第一IPL摘要值(CodeDigestHash)。2、通過(guò)預(yù)先提供的私鑰(PrivateKey)利用RSA算法對(duì)第一IPL摘要值進(jìn)行加密,得到IPL的摘要密文(RSASignature)。3、通過(guò)SHA256算法獲得預(yù)置的公鑰(PublicKey)的第一公鑰摘要值(PublicKeyDigestHash),并存儲(chǔ)到Efuse中。4、存儲(chǔ)IPL的摘要密文和預(yù)置的公鑰到SBH中。需要說(shuō)明的是,獲得第一公鑰摘要值和第一IPL摘要值的算法可以不局限于SHA256,還可以通過(guò)其他方式獲得第一公鑰摘要值和第一IPL摘要值;獲取IPL的摘要密文的算法可以不局限于RSA,還可以通過(guò)其他方式獲得IPL的摘要密文。步驟204,處理器讀取提供方生成的預(yù)加載IPL的SBH中的公鑰,并生成與讀取出的公鑰對(duì)應(yīng)的的第二公鑰摘要值。其中,優(yōu)選的,生成與讀取出的公鑰對(duì)應(yīng)的的第二公鑰摘要值的執(zhí)行過(guò)程,可以為:對(duì)讀取出的公鑰進(jìn)行摘要算法運(yùn)算生成第二公鑰摘要值。步驟206,當(dāng)?shù)诙€摘要值與預(yù)存的第一公鑰摘要值相同時(shí),通過(guò)讀取出的公鑰對(duì)SBH中的摘要密文進(jìn)行解密操作,得到第一IPL摘要值。處理器生成第二公鑰摘要值之后,將第二公鑰摘要值與預(yù)存的第一公鑰摘要值進(jìn)行比較。當(dāng)?shù)诙€摘要值與預(yù)存的第一公鑰摘要值相同時(shí),可以執(zhí)行步驟206的操作;當(dāng)?shù)诙€摘要值與預(yù)存的第一公鑰摘要值不同時(shí),處理器不會(huì)執(zhí)行預(yù)加載IPL,可以進(jìn)入死循環(huán)的狀態(tài),處理器啟動(dòng)失敗。步驟208,生成預(yù)加載IPL中程序代碼的第二IPL摘要值。優(yōu)選的,對(duì)預(yù)加載IPL中程序代碼進(jìn)行摘要算法運(yùn)算生成第二IPL摘要值。步驟210,當(dāng)?shù)谝籌PL摘要值與第二IPL摘要值相同時(shí),執(zhí)行預(yù)加載IPL使得處理器啟動(dòng)。上述步驟208的執(zhí)行時(shí)間可以在上述步驟200之后,上述步驟210之前的任意時(shí)間點(diǎn),但是為了減少不必要的執(zhí)行過(guò)程,降低處理器的工作負(fù)荷,通常在上述步驟206之后才執(zhí)行步驟208的相關(guān)操作。當(dāng)?shù)谝籌PL摘要值與第二IPL摘要值不同時(shí),不執(zhí)行預(yù)加載IPL的程序代碼,處理器啟動(dòng)失敗。此時(shí)表明預(yù)加載IPL不是指定的、正常的IPL,該IPL可能存在惡意代碼等。優(yōu)選的,上述步驟204至上述步驟210的執(zhí)行過(guò)程可以如圖4所示。1、從SBH讀取公鑰(PublicKey),對(duì)讀取到的公鑰進(jìn)行SHA256操作,得到第二公鑰摘要值(PublicKeyDigestHash),并用第二公鑰摘要值與存儲(chǔ)在Efuse中的第一公鑰摘要值(PublicKeyHash)比較。當(dāng)?shù)诙€摘要值與第一公鑰摘要值相同時(shí),繼續(xù)后續(xù)操作;當(dāng)?shù)诙€摘要值與第一公鑰摘要值不同時(shí),處理器啟動(dòng)失敗,此時(shí)處理器的處理過(guò)程可能會(huì)進(jìn)入死循環(huán)狀態(tài),同時(shí)也可以顯示啟動(dòng)失敗的提示信息等。2、從SBH讀取IPL的摘要密文(RSASignature),并用讀取到的公鑰對(duì)讀取到的IPL的摘要密文進(jìn)行解密,得到第一IPL摘要值(CodeDigestHash1)。3、生成預(yù)加載IPL的程序代碼(CODE)的第二IPL摘要值(CodeDigestHash2),并將第一IPL摘要值與第二IPL摘要值進(jìn)行比較。其中,上述步驟204至上述步驟210的執(zhí)行過(guò)程涉及到兩次比較過(guò)程,第一次比較為第二公鑰摘要值與第一公鑰摘要值的比較,如果相同,則繼續(xù)后續(xù)的比較;如果不同,則處理器啟動(dòng)失敗。第二次比較為解密得到的第一IPL摘要值與計(jì)算得到的預(yù)加載IPL的程序代碼的第二IPL摘要值的比較,如果相同,則處理器啟動(dòng)成功,如果不同,則處理器啟動(dòng)失敗。本實(shí)施例通過(guò)采用上述技術(shù)方案,安全啟動(dòng)數(shù)據(jù)包括預(yù)置的公鑰、第一公鑰摘要值以及IPL的摘要密文。其中,第一公鑰摘要值存儲(chǔ)在處理器硬件只讀存儲(chǔ)器件中,在芯片生產(chǎn)或者出廠階段寫(xiě)入。預(yù)置的公鑰和IPL的摘要密文可在提供方生成合法的預(yù)加載IPL時(shí)存儲(chǔ)在IPLSBH中。在處理器預(yù)啟動(dòng)時(shí),首先將帶有SBH的預(yù)加載IPL加載到系統(tǒng)中。然后從IPLSBH中讀出加密算法的公鑰,通過(guò)摘要算法生成第二公鑰摘要值并與存儲(chǔ)在處理器硬件里的第一公鑰摘要值比較,如果相同,則處理器繼續(xù)啟動(dòng)流程。本步驟確保IPLSBH中的預(yù)置的公鑰沒(méi)有被篡改。如果上述生成的第二公鑰摘要值與存儲(chǔ)在處理器硬件里的第一公鑰摘要值相同,再?gòu)腎PLSBH中讀出IPL的摘要密文,使用公鑰(IPLSBH中的公鑰)對(duì)IPL的摘要密文進(jìn)行解密得到第一IPL摘要值。對(duì)預(yù)先加載到系統(tǒng)中的IPL的程序代碼通過(guò)摘要算法生成第二IPL摘要值。將解密得到的第一IPL摘要值與通過(guò)摘要算法生成的第二IPL摘要值進(jìn)行比較,如果相同,則處理器啟動(dòng)成功,可以執(zhí)行預(yù)加載IPL。如果偽造處理器啟動(dòng)時(shí)預(yù)加載的IPL,必須得到密鑰對(duì)中的公鑰和私鑰,然后通過(guò)私鑰對(duì)偽造的IPL的摘要值進(jìn)行加密。雖然公鑰公開(kāi)保存在已發(fā)布的IPLSBH中,但私鑰卻是不對(duì)外公開(kāi)的。根據(jù)加密算法的原理,私鑰進(jìn)行加密,公鑰用于解密,根據(jù)公鑰不可以推算出密鑰對(duì)。所以不可以通過(guò)公開(kāi)的公鑰推算出密鑰對(duì)進(jìn)而對(duì)偽造的IPL摘要進(jìn)行加密。并且在本技術(shù)方案中,安全啟動(dòng)數(shù)據(jù)中包括的第一公鑰摘要值(存儲(chǔ)在處理器不可修改的硬件中),可以起到驗(yàn)證從IPLSBH讀取出的公鑰是否被修改的作用。修改后的公鑰的公鑰摘要值與安全啟動(dòng)數(shù)據(jù)中的第一公鑰摘要值必定不同,則處理器啟動(dòng)失敗,處理器不能加載運(yùn)行偽造的IPL,提高了系統(tǒng)的安全性和穩(wěn)定性。而且,由于私鑰不對(duì)外公開(kāi),具有保密性,利用私鑰對(duì)IPL摘要值進(jìn)行加密得到IPL的摘要密文,只能被唯一的不可修改的公鑰解密,解密得到的IPL摘要值也是唯一。即使偽造IPL,但偽造出的IPL的IPL摘要值與對(duì)安全啟動(dòng)數(shù)據(jù)中的IPL的摘要密文進(jìn)行解密得到的IPL摘要值不同,則處理器啟動(dòng)失敗,處理器不能加載運(yùn)行偽造的IPL,提高了系統(tǒng)的安全性和穩(wěn)定性。實(shí)施例三詳細(xì)介紹本發(fā)明實(shí)施例公開(kāi)的一種處理器啟動(dòng)裝置。參照?qǐng)D5,示出了本發(fā)明實(shí)施例中一種處理器啟動(dòng)裝置結(jié)構(gòu)示意圖。上述一種處理器啟動(dòng)裝置可以包括公鑰讀取模塊300、公鑰摘要值生成模塊302、解密模塊304、第二IPL摘要值生成模塊306和IPL執(zhí)行模塊308。下面分別詳細(xì)介紹各模塊的功能以及各模塊之間的關(guān)系。公鑰讀取模塊300用于讀取提供方生成的預(yù)加載IPL中SBH中的公鑰。公鑰摘要值生成模塊302可以與公鑰讀取模塊300連接,公鑰摘要值生成模塊302用于生成與公鑰讀取模塊300讀取出的公鑰對(duì)應(yīng)的的第二公鑰摘要值。解密模塊304可以與公鑰摘要值生成模塊302連接,解密模塊304用于當(dāng)?shù)诙€摘要值與預(yù)存的第一公鑰摘要值相同時(shí),通過(guò)讀取出的公鑰對(duì)SBH中的摘要密文進(jìn)行解密操作,得到第一IPL摘要值。第二IPL摘要值生成模塊306可以與公鑰讀取模塊300、公鑰摘要值生成模塊302和解密模塊304連接,第二IPL摘要值生成模塊306用于生成預(yù)加載IPL中程序代碼的第二IPL摘要值。IPL執(zhí)行模塊308可以與解密模塊304和第二IPL摘要值生成模塊306連接,IPL執(zhí)行模塊308用于當(dāng)?shù)谝籌PL摘要值與第二IPL摘要值相同時(shí),執(zhí)行預(yù)加載IPL使得處理器啟動(dòng)。優(yōu)選的,上述公鑰摘要值生成模塊302具體可以用于對(duì)讀取出的公鑰進(jìn)行摘要算法運(yùn)算生成第二公鑰摘要值。上述第二IPL摘要值生成模塊306具體可以用于對(duì)預(yù)加載IPL中程序代碼進(jìn)行摘要算法運(yùn)算生成第二IPL摘要值。上述預(yù)存的第一公鑰摘要值是根據(jù)預(yù)置的公鑰生成的。本實(shí)施例通過(guò)采用上述技術(shù)方案,在處理器啟動(dòng)過(guò)程中,進(jìn)行兩次比較的過(guò)程,分別為公鑰摘要值的比較和IPL摘要值的比較。每次比較都可以理解為對(duì)預(yù)加載IPL的安全性的一次驗(yàn)證,當(dāng)任意一次比較的比較結(jié)果為不同時(shí),處理器均不會(huì)根據(jù)預(yù)加載IPL進(jìn)行系統(tǒng)配置,處理器啟動(dòng)失?。划?dāng)兩次比較的比較結(jié)果均為相同時(shí),處理器啟動(dòng)成功。由于增加了比較的過(guò)程,所以提高了系統(tǒng)的安全性。具體地,首先將帶有SBH的預(yù)加載IPL加載到系統(tǒng)中。然后從IPLSBH中讀出加密算法的公鑰,通過(guò)摘要算法生成第二的公鑰摘要值并與存儲(chǔ)在處理器硬件里的第一公鑰摘要值比較,如果相同,則處理器繼續(xù)啟動(dòng)流程。本步驟確保IPLSBH中的預(yù)置的公鑰沒(méi)有被篡改。如果上述生成的第二公鑰摘要值與存儲(chǔ)在處理器硬件里的第一公鑰摘要值相同,再?gòu)腎PLSBH中讀出IPL的摘要密文,使用公鑰(IPLSBH中的公鑰)對(duì)IPL的摘要密文進(jìn)行解密得到第一IPL摘要值。對(duì)預(yù)先加載到系統(tǒng)中的IPL的程序代碼通過(guò)摘要算法生成第二IPL摘要值。將解密得到的第一IPL摘要值與通過(guò)摘要算法生成的第二IPL摘要值進(jìn)行比較,如果相同,則處理器啟動(dòng)成功,可以執(zhí)行預(yù)加載IPL。實(shí)施例四詳細(xì)介紹本發(fā)明實(shí)施例公開(kāi)的一種提供IPL的裝置。參照?qǐng)D6,示出了本發(fā)明實(shí)施例中一種提供IPL的裝置結(jié)構(gòu)示意圖。上述一種提供IPL的裝置可以包括第一IPL摘要值生成模塊400、加密模塊402、SBH生成模塊404和IPL獲得模塊406。下面分別詳細(xì)介紹各模塊的功能以及各模塊之間的關(guān)系。第一IPL摘要值生成模塊400用于生成預(yù)加載IPL中程序代碼的第一IPL摘要值。加密模塊402可以與第一IPL摘要值生成模塊400連接,加密模塊402用于通過(guò)密鑰對(duì)中私鑰對(duì)第一IPL摘要值進(jìn)行加密操作,獲得摘要密文。SBH生成模塊404可以與加密模塊402連接,SBH生成模塊404用于根據(jù)摘要密文以及密鑰對(duì)中公鑰生成SBH。IPL獲得模塊406可以與SBH生成模塊404連接,IPL獲得模塊406用于根據(jù)SBH以及預(yù)加載IPL中程序代碼得到預(yù)加載IPL。優(yōu)選的,上述第一IPL摘要值生成模塊400可以對(duì)預(yù)加載IPL中程序代碼進(jìn)行摘要算法運(yùn)算生成第一IPL摘要值。通過(guò)采用上述技術(shù)方案,如果偽造處理器啟動(dòng)時(shí)預(yù)加載的IPL,必須得到密鑰對(duì)中的公鑰和私鑰,然后通過(guò)私鑰對(duì)偽造的IPL的摘要值進(jìn)行加密。雖然公鑰公開(kāi)保存在已發(fā)布的IPLSBH中,但私鑰卻是不對(duì)外公開(kāi)的。根據(jù)加密算法的原理,私鑰進(jìn)行加密,公鑰用于解密,根據(jù)公鑰不可以推算出密鑰對(duì)。所以不可以通過(guò)公開(kāi)的公鑰推算出密鑰對(duì)進(jìn)而對(duì)偽造的IPL摘要進(jìn)行加密。并且在本技術(shù)方案中,安全啟動(dòng)數(shù)據(jù)中包括的第一公鑰摘要值(存儲(chǔ)在處理器不可修改的硬件中),可以起到驗(yàn)證從IPLSBH讀取出的公鑰是否被修改的作用。修改后的公鑰的公鑰摘要值與安全啟動(dòng)數(shù)據(jù)中的第一公鑰摘要值必定不同,則處理器啟動(dòng)失敗,處理器不能加載運(yùn)行偽造的IPL,提高了系統(tǒng)的安全性和穩(wěn)定性。而且,由于私鑰不對(duì)外公開(kāi),具有保密性,利用私鑰對(duì)IPL摘要值進(jìn)行加密得到IPL的摘要密文,只能被唯一的不可修改的公鑰解密,解密得到的IPL摘要值也是唯一。即使偽造IPL,但偽造出的IPL的IPL摘要值與對(duì)安全啟動(dòng)數(shù)據(jù)中的IPL的摘要密文進(jìn)行解密得到的IPL摘要值不同,則處理器啟動(dòng)失敗,處理器不能加載運(yùn)行偽造的IPL,提高了系統(tǒng)的安全性和穩(wěn)定性。對(duì)于裝置實(shí)施例而言,由于其與方法實(shí)施例基本相似,所以描述的比較簡(jiǎn)單,相關(guān)之處參見(jiàn)方法實(shí)施例的部分說(shuō)明即可。本說(shuō)明書(shū)中的各個(gè)實(shí)施例均采用遞進(jìn)的方式描述,每個(gè)實(shí)施例重點(diǎn)說(shuō)明的都是與其他實(shí)施例的不同之處,各個(gè)實(shí)施例之間相同相似的部分互相參見(jiàn)即可。以上對(duì)本發(fā)明實(shí)施例所公開(kāi)的一種處理器啟動(dòng)方法、裝置及提供IPL的裝置,進(jìn)行了詳細(xì)介紹,本文中應(yīng)用了具體個(gè)例對(duì)本發(fā)明的原理及實(shí)施方式進(jìn)行了闡述,以上實(shí)施例的說(shuō)明只是用于幫助理解本發(fā)明的方法及其核心思想;同時(shí),對(duì)于本領(lǐng)域的一般技術(shù)人員,依據(jù)本發(fā)明的思想,在具體實(shí)施方式及應(yīng)用范圍上均會(huì)有改變之處,綜上,本說(shuō)明書(shū)內(nèi)容不應(yīng)理解為對(duì)本發(fā)明的限制。