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