專利名稱:用于啟動多處理器設(shè)備的系統(tǒng)和方法
技術(shù)領(lǐng)域:
本申請一般涉及一種改進的數(shù)據(jù)處理系統(tǒng)和方法。更具體地,本申請針對一種用于根據(jù)將要提供給處理器的加密密鑰的選擇來啟動多處理器設(shè)備的系統(tǒng)和方法。
背景技術(shù):
由于我們的社會變得越來越依賴電子通信和信息存儲,所以對數(shù)字信息安全的關(guān)注也與日俱增,例如個人信息和數(shù)字權(quán)利管理(DRM)。而且,近年來計算機黑客和其他未授權(quán)入侵者進入計算機系統(tǒng)的技巧也越發(fā)高明。結(jié)果,在用于計算裝置的安全系統(tǒng)的發(fā)展中投入了很多的努力,以便可以保護這種敏感的數(shù)字信息而不受未授權(quán)訪問的威脅。
入侵者可以獲得對計算系統(tǒng)的訪問的一種方法是通過電子接口和其他可觀察的電磁或熱活動來觀察計算系統(tǒng)的啟動活動。通過按照這種方式來觀察啟動活動,入侵者可以推斷出啟動處理器正輸入和輸出什么數(shù)據(jù)信號,處理器上正運行什么加密算法等等。根據(jù)該信息,入侵者可以檢測到啟動序列中可以進行未授權(quán)侵入的點。此外,利用其中要求安全性密鑰用以啟動系統(tǒng)的安全啟動序列,入侵者可以逆推出啟動處理器所使用的加密算法,以獲得對安全性密鑰的訪問,并且從而獲得對計算系統(tǒng)的完全訪問。由于計算系統(tǒng)的總體安全性經(jīng)常取決于啟動處理的安全性,所以當入侵者獲得對啟動序列的訪問時,整個系統(tǒng)的安全性就處于危險當中。
因此,提供一種增加監(jiān)控處理器的啟動序列的難度以便使系統(tǒng)更安全而不受未授權(quán)入侵的威脅的裝置和方法是有益的。
發(fā)明內(nèi)容
示范性實施例提供了一種用于選擇隨機處理器來啟動多處理器系統(tǒng)以及用于根據(jù)將要提供給處理器的加密密鑰的選擇來啟動多處理器設(shè)備的系統(tǒng)和方法。通過使得哪個處理器將用來啟動多處理器系統(tǒng)隨機化,來使未授權(quán)人員以擊敗系統(tǒng)的安全性為目的而監(jiān)控電子接口、熱活動和其他電磁活動來獲得有關(guān)啟動序列的信息的能力變得更加困難。例如,在多處理器系統(tǒng)中,未來入侵者需要以多個不同的次數(shù)運行啟動序列,同時監(jiān)控單個處理器以期望它可能被隨機地選為啟動處理器,或者未來入侵者需要在啟動時監(jiān)控所有的處理器,以便確定哪個處理器是實際啟動處理器。這兩種可選擇方案都需要未來入侵者方付出相當大努力,這可以用作在實際中試圖監(jiān)控該系統(tǒng)來獲得啟動序列信息的不利因素,或者至少顯著地延遲未來侵入者在危害系統(tǒng)時花費的時間。
利用示范性實施例的機制,在多處理器系統(tǒng)(例如片上系統(tǒng))上提供普適邏輯,該普適邏輯控制多處理器系統(tǒng)的啟動操作。普適邏輯包括隨機事件發(fā)生器,該隨機事件發(fā)生器隨機選擇在多處理器系統(tǒng)中的哪一個處理器將要成為啟動處理器,該啟動處理器運行啟動代碼,以由此使該系統(tǒng)達到操作狀態(tài)。根據(jù)對啟動處理器的隨機選擇,設(shè)置與啟動處理器相關(guān)聯(lián)的配置位,該配置位表示該處理器成為啟動處理器。此后,所選擇的啟動處理器被提供有為使多處理器系統(tǒng)安全啟動到操作狀態(tài)所必需的安全性密鑰。
在某些示范性實施例中,當隨機選擇的處理器執(zhí)行安全啟動操作時,多處理器系統(tǒng)中的其他處理器執(zhí)行操作來對真正的安全啟動操作進行掩碼(mask)。該掩碼包括執(zhí)行其他代碼序列而不是啟動代碼序列,該其他代碼序列使處理器生成電磁和/或熱輸出,其中如果該電磁和/或熱輸出受到入侵者監(jiān)控,則會使入侵者難以辨識哪一個處理器正在執(zhí)行實際的安全啟動操作。
一種可以生成不同的代碼序列的方法是將隨機延遲元素插入啟動代碼內(nèi),該啟動代碼運行重復(fù)一個隨機量的循環(huán)。按照這種方式,每個處理器可以運行啟動代碼,但是具有不同的延遲量,從而使得生成不同的電磁和熱特征(signature)。從入侵者的角度來看,由于這種掩碼而使得很難從多處理器系統(tǒng)中的其他處理器中辨識實際啟動處理器。
在另一個示范性實施例中,由其他處理器執(zhí)行的代碼序列是與隨機選擇的處理器所執(zhí)行的相同的啟動代碼序列,但由其他處理器執(zhí)行的代碼序列具有偽(dummy)安全性密鑰。因此,對于入侵者來說,這些其他的處理器操作為以及看起來好像它們正在執(zhí)行安全啟動操作一樣。然而,如果監(jiān)控這些處理器,就會識別出假電磁和熱輸出,這使入侵者難以確定所監(jiān)控的處理器是否為正在執(zhí)行安全啟動操作的實際隨機選擇的處理器。
在另一個示范性實施例中,可以通過提供偽處理器來對隨機選擇的啟動處理器進行掩碼。通過在偽處理器上運行不同于啟動代碼序列的處理從而使系統(tǒng)上的攻擊改向該偽處理器,使得從電磁、熱等的監(jiān)控裝置的角度來看,偽處理器看起來好像是唯一的。按照這種方式,當入侵者試圖通過避開安全機制來訪問該系統(tǒng)時,該入侵者僅訪問了偽處理器而沒有對多處理器系統(tǒng)的剩余部分進行實際的訪問。
在其他示范性實施例中,可以跨越多處理器系統(tǒng)中的多個處理器來分布啟動代碼序列。通過跨越多處理器系統(tǒng)中的多個處理器來分布啟動代碼序列,增加了必須被危害以便獲得關(guān)于啟動序列的完整信息從而規(guī)避安全性措施的處理器的數(shù)目。因此,示范性實施例的分布式啟動操作比利用單個安全核的多處理器數(shù)據(jù)處理系統(tǒng)更安全。此外,通過分布啟動操作,如果啟動操作的任何部分被危害,則啟動操作都會失敗,從而阻止未授權(quán)個體規(guī)避系統(tǒng)的安全性。
利用該示范性實施例,將啟動代碼序列劃分成多個分區(qū),以便可以將每個分區(qū)提供給多處理器系統(tǒng)的不同處理器。當執(zhí)行啟動代碼序列的每個分區(qū)時,在啟動代碼序列可以在另一個處理器上進行之前,該分區(qū)必須在其各自的處理器上正確地完成。利用安全通信機制來傳達對啟動代碼序列的先前分區(qū)的滿意完成。該安全通信機制可以包括安全令牌,例如加密的密碼或其他安全標識符,例如公鑰/私鑰對,其表示沒有危害先前的會話。按照這種方式,創(chuàng)建必須令人滿意地完成相關(guān)的“會話”鏈。
啟動代碼的分布式執(zhí)行中所涉及的處理器可以是多處理器系統(tǒng)中的所有處理器或者是多處理器系統(tǒng)中的處理器子集。例如,可以按分布方式利用正如上述用于選擇單個啟動處理器的隨機選擇機制來隨機地選擇將用于啟動系統(tǒng)的多個啟動處理器。而且,可以隨機地選擇由處理器所執(zhí)行的啟動代碼的特定分區(qū),使得利用每個加電復(fù)位(POR)操作,相同的處理器可以執(zhí)行或不執(zhí)行與之前POR操作中相同的啟動代碼分區(qū)。因此,可以對于分布式啟動操作中涉及哪些處理器以及每個處理器將執(zhí)行哪些啟動代碼分區(qū)進行隨機化。
多處理器系統(tǒng)的其他處理器(即非啟動處理器)可以在分布式啟動操作期間不執(zhí)行任何工作,或者可以執(zhí)行上述各種掩碼代碼示范性實施例中的一個或多個掩碼代碼序列,以對隨機選擇的處理器子集上的啟動代碼執(zhí)行進行掩碼。換言之,該示范性實施例的分布式啟動代碼序列操作可以與之前所述的示范性實施例的一個或者多個相結(jié)合。
在一個示范性實施例中,提供一種在具有多個處理器的數(shù)據(jù)處理系統(tǒng)中用于啟動所述數(shù)據(jù)處理系統(tǒng)的方法。該方法可以包括在所述多個處理器的每個處理器中接收秘密密鑰值和至少一個隨機密鑰值。可以隨機選擇所述多個處理器中的一個處理器作為啟動處理器。可以根據(jù)對所述啟動處理器的隨機選擇,由所述多個處理器中的每個處理器選擇對于該處理器的密鑰值。只允許所述啟動處理器選擇所述秘密密鑰作為其相應(yīng)的密鑰值,所述多個處理器中的每個其他處理器選擇所述至少一個隨機密鑰值中的一個作為它們的相應(yīng)密鑰值。所述啟動處理器可以從加密啟動代碼存儲器中接收加密的啟動代碼,以及可以使用所述秘密密鑰值對所述加密的啟動代碼進行解密。然后,啟動處理器可以執(zhí)行所述解密的啟動代碼,以由此將所述數(shù)據(jù)處理系統(tǒng)啟動到操作狀態(tài)。
所述多個處理器的每個處理器可以接收所述秘密密鑰值和預(yù)定數(shù)目的隨機密鑰值。所述預(yù)定數(shù)目可以等于所述多個處理器中的處理器的數(shù)目。所述多個處理器中沒有被選擇作為所述啟動處理器的每個處理器可以選擇一個與所述至少一個隨機密鑰值不同的密鑰值。
所述多個處理器中的每個處理器可以包括多路轉(zhuǎn)換器,所述秘密密鑰值和所述至少一個隨機密鑰值可以被提供作為到所述多個處理器中的每個處理器的多路轉(zhuǎn)換器的輸入,以及可以將一個選擇信號提供給所述多個處理器中的每個處理器的每個多路轉(zhuǎn)換器。輸入到處理器的多路轉(zhuǎn)換器的所述選擇信號可以具有關(guān)聯(lián)值,所述關(guān)聯(lián)值對應(yīng)于對于所述處理器的密鑰值的選擇。
隨機選擇所述多個處理器中的一個處理器作為啟動處理器可以包括使用在所述數(shù)據(jù)處理系統(tǒng)的普適邏輯中提供的隨機事件發(fā)生器來產(chǎn)生隨機值;以及解碼所述隨機值,以從所述數(shù)據(jù)處理系統(tǒng)的所述多個處理器中標識一個處理器作為所述啟動處理器。所述隨機事件發(fā)生器可以包括線性反饋移位寄存器(LFSR)計數(shù)器以及耦合到所述LFSR的環(huán)形振蕩器。所述環(huán)形振蕩器可以提供到所述LFSR的輸入,以由此產(chǎn)生隨機值。
正如以上所述,所述至少一個隨機密鑰值可以包括多個隨機密鑰值??梢酝ㄟ^不同的隨機密鑰值發(fā)生器來生成所述多個隨機密鑰值中的每個隨機密鑰值。可替換地,可以通過相同的隨機密鑰值發(fā)生器生成所述多個隨機密鑰值中的每個隨機密鑰值。
所述數(shù)據(jù)處理系統(tǒng)可以是異構(gòu)多處理器片上系統(tǒng)。該異構(gòu)多處理器片上系統(tǒng)可以具有根據(jù)第一指令集進行操作的第一處理器以及一個或多個根據(jù)第二指令集進行操作的第二處理器,所述第二指令集不同于所述第一指令集。例如,第一指令集可以是RISC指令集,以及例如,第二指令集可以是SIMD指令集。
在另一個示范性實施例中,提供一種數(shù)據(jù)處理系統(tǒng),包括多個處理器;與所述處理器耦合的普適邏輯;與所述多個處理器耦合的至少一個隨機密鑰發(fā)生器;與所述多個處理器耦合的加密啟動代碼存儲設(shè)備;以及與所述多個處理器耦合的秘密密鑰存儲器。所述多個處理器中的每個處理器可以從所述秘密密鑰存儲器接收秘密密鑰值,以及從所述至少一個隨機密鑰發(fā)生器接收至少一個隨機密鑰值。所述普適邏輯可以隨機選擇所述多個處理器中的一個處理器作為啟動處理器。所述多個處理器中的每個處理器可以根據(jù)對所述啟動處理器的隨機選擇,來選擇對于該處理器的密鑰值。只允許所述啟動處理器選擇所述秘密密鑰作為其相應(yīng)的密鑰值,以及所述多個處理器中的每個其他處理器選擇所述至少一個隨機密鑰值中的一個作為它們的相應(yīng)密鑰值。所述啟動處理器可以從所述加密啟動代碼存儲器接收加密的啟動代碼,以及使用所述秘密密鑰值對所述加密的啟動代碼進行解密??梢杂伤鰡犹幚砥鲌?zhí)行所述解密的啟動代碼,以由此將所述數(shù)據(jù)處理系統(tǒng)啟動到操作狀態(tài)。
所述多個處理器中的每個處理器可以接收所述秘密密鑰值和預(yù)定數(shù)目的隨機密鑰值。所述預(yù)定數(shù)目可以等于所述多個處理器中的處理器的數(shù)目。所述多個處理器中沒有被選擇作為所述啟動處理器的每個處理器可以選擇一個與所述至少一個隨機密鑰值不同的密鑰值。
所述多個處理器中的每個處理器可以包括多路轉(zhuǎn)換器。所述秘密密鑰值和所述至少一個隨機密鑰值可以被提供作為到所述多個處理器中的每個處理器的多路轉(zhuǎn)換器的輸入,以及可以將一個選擇信號提供給所述多個處理器中的每個處理器的每個多路轉(zhuǎn)換器。輸入到處理器的多路轉(zhuǎn)換器的所述選擇信號可以具有關(guān)聯(lián)值,所述關(guān)聯(lián)值對應(yīng)于對于所述處理器的密鑰值的選擇。
所述普適邏輯可以包括隨機事件發(fā)生器和解碼器。所述普適邏輯可以通過以下動作隨機選擇所述多個處理器中的一個處理器作為啟動處理器使用所述隨機事件發(fā)生器產(chǎn)生隨機值;以及使用所述解碼器解碼所述隨機值,以從所述數(shù)據(jù)處理系統(tǒng)中的所述多個處理器中標識一個處理器作為所述啟動處理器。所述隨機事件發(fā)生器可以包括線性反饋移位寄存器(LFSR)計數(shù)器以及與所述LFSR耦合的環(huán)形振蕩器。所述環(huán)形振蕩器可以提供到所述LFSR的輸入,以由此產(chǎn)生隨機值。
正如以上所述,所述至少一個隨機密鑰值可以包括多個隨機密鑰值,可以通過不同的隨機密鑰值發(fā)生器來生成所述多個隨機密鑰值中的每個隨機密鑰值。可替換地,可以通過相同的隨機密鑰值發(fā)生器生成所述多個隨機密鑰值中的每個隨機密鑰值。
在另一個示范性實施例中,提供包括具有計算機可讀程序的計算機可用介質(zhì)的計算機程序產(chǎn)品。當在所述處理系統(tǒng)上執(zhí)行所述計算機可讀程序時,可以使數(shù)據(jù)處理系統(tǒng)執(zhí)行上述針對方法示范性實施例概述的各個操作及其組合。
將在以下本發(fā)明的示例性實施例的詳細說明中描述本發(fā)明這些和其他特征與優(yōu)勢,對于本領(lǐng)域普通技術(shù)人員來說,考慮這些詳細描述將使得本發(fā)明這些和其他特征與優(yōu)勢變得顯而易見。
在所附的權(quán)利要求中闡述了被認為是本發(fā)明特性的新穎性特征。然而,在連同附圖一起進行閱讀時,參照以下示范性實施例的詳細描述,將更好地理解發(fā)明本身及其優(yōu)選使用方式、進一步目的和優(yōu)勢,其中圖1是其中可以實現(xiàn)示例性實施例的多處理器系統(tǒng)的示意性方框圖;圖2是描述根據(jù)一個示范性實施例的隨機啟動處理器選擇機制的主要操作部件的示意圖;圖3A是描述了根據(jù)一個示范性實施例的隨機選擇機制的示意圖;圖3B是根據(jù)一個示范性實施例的抖動的圖形表示,其中該抖動被引入到隨機事件發(fā)生器的LFSR計數(shù)器的輸入中;圖3C是描述了一個示范性實施例的示意圖,其中利用平行信號線向處理器提供秘密密鑰和多個隨機生成的密鑰值;圖4A-4D是描述根據(jù)示范性實施例的用于對隨機選擇的啟動處理器的安全啟動操作進行掩碼的掩碼操作的示意圖;圖5是概述了用于在多處理器系統(tǒng)中隨機地選擇一個處理器作為啟動處理器的示范性操作的流程圖;圖6是概述了根據(jù)一個示范性實施例的用于對啟動代碼序列進行掩碼的示范性操作的流程圖;圖7A是描述了根據(jù)一個示范性實施例配置成菊鏈或環(huán)形布置的分布式啟動操作的示意圖;圖7B是描述了根據(jù)一個示范性實施例配置成主/從布置的分布式啟動操作的示意圖;以及圖8是概述了根據(jù)一個示范性實施例用于分布式啟動多處理器系統(tǒng)的示范性操作的流程圖。
具體實施例方式
示范性實施例提供了一種用于選擇隨機處理器來啟動多處理器系統(tǒng)的裝置和方法。該示范性實施例可以供任何多處理器系統(tǒng)使用,可以在其中選擇一個處理器來啟動多處理器系統(tǒng)。因此,示范性實施例的機制適用于對稱多處理器(SMP)系統(tǒng)、異構(gòu)多處理器系統(tǒng)、非相干不平衡多處理器系統(tǒng)等等。
一個可以在其中實現(xiàn)示范性實施例的多處理器系統(tǒng)是可從紐約阿芒克的國際商業(yè)機器公司獲得的單元寬帶引擎(CBE)。將參照CBE體系結(jié)構(gòu)來說明該示范性實施例,然而,應(yīng)該理解,對示范性實施例的說明僅僅是示范性的,而且并非旨在聲明或暗示任何關(guān)于可以實現(xiàn)示范性實施例的機制的多處理器系統(tǒng)的類型或結(jié)構(gòu)的限定。在不脫離本發(fā)明的精神和范圍的情況下,可以對所述的CBE體系結(jié)構(gòu)進行許多修改。
圖1是在其中可以實現(xiàn)本發(fā)明的方面的數(shù)據(jù)處理系統(tǒng)的示意圖。圖1所示的示范性數(shù)據(jù)處理系統(tǒng)是單元寬帶引擎(CBE)數(shù)據(jù)處理系統(tǒng)的一個實例。雖然CBE將用于本發(fā)明優(yōu)選實施例的說明中,但是正如本領(lǐng)域技術(shù)人員在閱讀以下描述后就會很容易理解的那樣,本發(fā)明并不局限于此。
如圖1所示,CBE 100包括電源處理器元件(PPE)110和多個協(xié)同處理器元件(SPE)120-134,其中電源處理器元件(PPE)110具有電源處理器單元(PPU)116及其L1和L2高速緩沖存儲器112和114,每個協(xié)同處理器元件(SPE)120-134都具有它自己的協(xié)同處理器單元(SPU)140-154、存儲器流量控制155-162、本地存儲器或存儲器(LS)163-170和總線接口單元(BIU單元)180-194,例如,該總線接口單元可以是組合直接存儲器訪問(DMA)、存儲器管理單元(MMU)和總線接口單元。還提供了高寬帶內(nèi)部元件互連總線(EIB)196、總線接口控制器(BIC)197和存儲器接口控制器(MIC)198。
CBE 100可以是片上系統(tǒng),以便可以在單個多處理器芯片上提供圖1所述的每個元件。此外,CBE 100是一種異構(gòu)處理環(huán)境,其中每個SPU都可以從系統(tǒng)內(nèi)的每個其他SPU接收不同指令。而且,為SPU而設(shè)置的指令不同于為PPU設(shè)置的指令,例如,PPU可以執(zhí)行基于簡化指令系統(tǒng)計算機(RISC)的指令,而SPU執(zhí)行單指令多數(shù)據(jù)(SIMD)指令。
SPE 120-134通過EIB 196相互耦合并與L2高速緩沖存儲器114耦合。另外,SPE 120-134通過EIB 196與MIC 198和BIC 197耦合。MIC 198提供到共享存儲器199的通信接口。舉例來說,BIC 197在CBE 100與其他外部總線和設(shè)備之間提供通信接口,例如SouthBridgeTM通信處理器。
PPE110是雙線程PPE110。這種雙線程PPE110與8個SPE 120-134的組合使CBE 100能夠處理10個同時的線程和超過128個未決存儲器請求。PPE110用作對于處理大部分計算工作負荷的其他8個SPE120-134的控制器。舉例來說,PPE110可用來運行傳統(tǒng)操作系統(tǒng),而SPE 120-134進行矢量化浮點代碼執(zhí)行。
SPE 120-134包括協(xié)同處理單元(SPU)140-154、存儲器流量控制單元155-162、本地存儲器或存儲器163-170以及總線接口單元180-194。在示范性實施例中,本地存儲器或存儲器163-170包括256KB的指令和數(shù)據(jù)存儲器,該指令和數(shù)據(jù)存儲器對于PPE 110是可見的并且可由軟件直接進行尋址。
PPE110可以向SPE 120-134加載小程序或線程,使SPE鏈接在一起以處理復(fù)合操作中的每個步驟。例如,結(jié)合了CBE 100的機頂盒可以加載用于讀取DVD、視頻和音頻解碼以及顯示的程序,而且數(shù)據(jù)將會挨個經(jīng)過SPE,直至它最后在輸出顯示器上而結(jié)束。在4GHz處,每個SPE 120-134利用具有類似性能水平的PPE110給出理論上為32GELOPS的性能。
存儲器流量控制單元(MFC)155-162用作SPU與系統(tǒng)其他部分和其他部件的接口。MFC 155-162提供主要機制,用以在主存儲器與本地存儲器163-170之間進行數(shù)據(jù)傳輸、保護和同步。邏輯上存在針對處理器內(nèi)的每個SPU的MFC。某些實現(xiàn)可以多個SPU之間共享單個MFC的資源。在這種情況下,對于每個SPU來說,所有為MFC定義的設(shè)備和命令都必須與軟件獨立地出現(xiàn)。將共享MFC的效果限定為實現(xiàn)相關(guān)的設(shè)備和命令。
示范性實施例提供了一種用于選擇一個隨機處理器(諸如SPE120-134中的一個)來啟動多處理器系統(tǒng)(例如CBE 100)的設(shè)備和方法。通過使將哪個SPE 120-134將用來啟動CBE 100隨機化,使未授權(quán)人員為了擊敗CBE 100的安全性而監(jiān)控電子接口、熱活動和其他電磁活動來獲得關(guān)于啟動序列的信息的能力變得更加困難。
利用示范性實施例的機制,在CBE 100上提供控制CBE 100的啟動操作的普適邏輯193。普適邏輯193包括隨機事件發(fā)生器,它隨機地選擇哪一個SPE 120-134將會成為啟動處理器,其中該啟動處理器運行啟動代碼,以由此使系統(tǒng)啟動到操作狀態(tài)。根據(jù)啟動SPE 120-134的隨機選擇,設(shè)置與所選擇的SPE(例如SPE 120)相關(guān)聯(lián)的配置位,其表示SPE 120為實際啟動處理器。此后,所選擇的SPE 120被提供有為使CBE 100安全啟動到操作狀態(tài)所必需的安全性密鑰。當所選擇的SPE成功地完成安全啟動過程時,該SPE將會從安全狀態(tài)轉(zhuǎn)變成解鎖狀態(tài),其中在安全狀態(tài)期間,關(guān)閉MIC 198、共享存儲器199和BIC197的一部分(除了到圖2中快速ROM 230的通信鏈路),并阻止它們進行操作。一旦安全SPE進入解鎖狀態(tài),它將通過執(zhí)行快速ROM 230所提供的加密的代碼來初始化充分啟用MIC 198、BIC 197(稱為“訓(xùn)練”的處理)和所有其他處理器(SPE和PPE)的處理。對于與用于單元寬帶引擎中的安全啟動處理有關(guān)的更多信息,請參考公開號為No.20050021944的共同未決和普通轉(zhuǎn)讓的美國專利申請,在此引用該專利申請作為參考。
在某些示范性實施例中,當隨機選擇的SPE 120執(zhí)行安全啟動操作時,其他SPE 122-134執(zhí)行操作,來對實際的安全啟動操作進行掩碼。該掩碼包括執(zhí)行其他代碼序列而不是啟動代碼序列,該其他代碼序列使SPE 122-134能夠生成電、電磁和/或熱輸出,其中當這些電、電磁和/或熱輸出受到入侵者監(jiān)控時會使入侵者難以辨識哪一個SPE120-134正在執(zhí)行實際的安全啟動操作。
一種可以生成不同的代碼序列的方法是在啟動代碼中插入隨機延遲元素,該啟動代碼運行重復(fù)了一個隨機量的循環(huán)。添加這些隨機延遲元素,以便在啟動處理器時,安全啟動算法將以隨機的方式進行改變,以導(dǎo)致不同的電磁和熱特征,從而使得難以隨著時間變化來比較兩個不同的啟動操作。按照這種方式,每個SPE 120-134都可以運行啟動代碼,但是具有不同的延遲量,從而導(dǎo)致生成不同的電磁和熱特征。而且,相同的SPE 120-134將會在每次它運行安全的啟動代碼時生成不同的電磁和熱特征。從入侵者的角度來看,由于這種掩碼,使得很難從CBE 100的其他處理器中辨識實際的啟動SPE 120。
在另一個實施例中,由其他SPE 122-134執(zhí)行的代碼序列是與隨機選擇的SPE 120所執(zhí)行的相同的啟動代碼序列,但由其他SPE122-134執(zhí)行的代碼序列具有偽安全性密鑰。因此,對于入侵者來說,這些其他的SPE 122-134操作為并且看起來好像它們正在執(zhí)行安全啟動操作一樣。然而,如果監(jiān)控SPE 122-134,則會識別到偽電、電磁和熱輸出,這使入侵者難以確定所監(jiān)控的SPE是否為正在執(zhí)行安全啟動操作的實際隨機選擇的SPE 120。
在另一個示范性實施例中,可以通過提供一個偽SPE(未示出)來對隨機選擇的啟動SPE 120進行掩碼。通過在偽SPE上運行不同于啟動代碼序列的處理,從而使CBE 100上的攻擊改向到該偽SPE,使得從電磁、熱等監(jiān)控裝置的角度來看,偽SPE看起來好像是唯一的。按照這種方式,當入侵者試圖通過避開安全機制來訪問該系統(tǒng)時,該入侵者只訪問了偽SPE而沒有對CBE 100的剩余部分進行實際的訪問。而且,如果入侵者危害偽SPE而試圖執(zhí)行代碼,則然后偽SPE可以關(guān)閉CBE 100的剩余部分以防止進一步的侵入意圖。
現(xiàn)在將更詳細地描述上述每個示范性實施例。應(yīng)當理解,雖然在這里分開地描述了每個示范性實施例,但是可以按各種方式來組合示范性實施例,以便獲得多處理器系統(tǒng)(例如,CBE 100)更大的安全性。因此,被認為適合特定情況和多處理器環(huán)境的示范性實施例的任何組合都在本發(fā)明的精神和范圍內(nèi)。
圖2是描述了根據(jù)一個示范性實施例的隨機啟動處理器選擇機制的主要操作部件的示意圖。應(yīng)該理解,為了簡化示范性實施例的解釋,圖2僅僅詳細地顯示了多處理器系統(tǒng)中的一個處理器。然而,應(yīng)該理解,多處理器系統(tǒng)中的每個處理器都具有類似的元件配置,并且按照與圖2清楚示出的處理器相同的方式進行操作。在不脫離本發(fā)明精神和范圍的情況下,多處理器系統(tǒng)內(nèi)可以包括任意數(shù)量的處理器。然而,為了解釋示范性實施例,假設(shè)處理器的數(shù)目是如圖1所示的CBE體系結(jié)構(gòu)中的8個。
如圖2所示,隨機啟動處理器選擇機制的主要操作部件包括系統(tǒng)控制器210、安全密鑰存儲器220、快速ROM 230和普適邏輯240。在一個示范性實施例中,以圖1的CBE體系結(jié)構(gòu)作為示范,元件210-240可以是在其中實現(xiàn)CBE體系結(jié)構(gòu)的芯片上所提供的元件。也就是說,可以將這些元件210-240整合到多處理器片上系統(tǒng)(SoC)的邏輯中,因而可以在片上執(zhí)行由這些元件210-240所執(zhí)行的操作。可替換地,也可以在片外提供一個或多個元件,例如,可以在片外提供快速ROM230。
系統(tǒng)控制器210負責執(zhí)行加電復(fù)位(POR)的初始操作,以使系統(tǒng)電源達到一個可接受且穩(wěn)定的水平。也就是說,正如現(xiàn)有技術(shù)中通常已知的那樣,系統(tǒng)控制器210負責提升電壓,開啟系統(tǒng)時鐘,以及為了使多處理器系統(tǒng)達到可以在其中開始啟動操作的狀態(tài)所需要的其他初始操作。作為該POR操作的一部分,使處理器280-290達到一種安全操作模式。在該安全操作模式中,在處理器以外無法訪問該處理器的本地存儲器。一旦完成這些初始操作且系統(tǒng)處于可接受電源狀態(tài),系統(tǒng)控制器210就利用信號將“電源正?!睜顟B(tài)通知給普適邏輯240。
響應(yīng)于來自系統(tǒng)控制器210的“電源正?!毙盘?,普適邏輯240開始啟動操作,用于使多處理器系統(tǒng)啟動到操作狀態(tài),以便軟件程序可以開始執(zhí)行。作為啟動操作的一部分,普適邏輯240的隨機事件發(fā)生器242隨機地選擇其中一個處理器(例如處理器280)作為多處理器系統(tǒng)的啟動處理器。隨機事件發(fā)生器242生成一個信號,其發(fā)送到多處理器系統(tǒng)中的每個處理器。該信號僅僅對于選為啟動處理器的處理器在邏輯上為高。該信號有效地將隨機選擇的處理器280的配置位寄存器250內(nèi)的值設(shè)置成表示該處理器280為啟動處理器的值,例如“1”。其他處理器將使它們各自的配置位寄存器內(nèi)的配置位值保持為初始值,從而表示這些處理器不是針對多處理器系統(tǒng)的隨機選擇的啟動處理器。
在快速ROM 230中以加密的形式存儲用于啟動多處理器系統(tǒng)的啟動代碼??梢詫⒓用艿膯哟a232提供給每個處理器280-290。也就是說,作為啟動序列的一部分,每個處理器280-290都可以試圖從快速ROM 230中讀取加密的啟動代碼232。然而,由于僅僅隨機選擇了其中一個處理器作為啟動處理器,所以其中將只有一個處理器能夠?qū)用艿膯哟a232進行解密并適當?shù)貓?zhí)行啟動代碼,以便使多處理器系統(tǒng)達到操作狀態(tài)。這可以通過使用每個處理器中提供的選擇器260來實現(xiàn),該選擇器在秘密密鑰和隨機生成的密鑰值之間進行選擇,其中秘密密鑰是用來對加密的啟動代碼232進行解密的密鑰值,而隨機生成的密鑰值將不能對加密的啟動代碼232進行解密。
利用配置位寄存器250存儲器儲的值來生成一個提供給選擇器260的選擇器信號。例如,選擇器260可以是多路轉(zhuǎn)換器,它接收來自于安全密鑰存儲器220的安全密鑰(Skey)作為一個輸入,它接收來自于隨機值發(fā)生器262的隨機生成的密鑰值作為第二輸入,并接收來自于配置位寄存器250的選擇信號,該選擇信號表示選擇這兩個輸入中的哪一個。如果配置位寄存器250存儲一個表示該處理器是隨機選擇的啟動處理器的值,則選擇Skey輸入。如果配置位寄存器250存儲一個表示該處理器不是隨機選擇的啟動處理器的值,則可由選擇器260選擇該隨機生成的密鑰值輸入。然后將所選擇的密鑰值輸出到SPE 270。
SPE 270接收所選擇的密鑰值和加密的啟動代碼232。然后SPE 270試圖對加密的啟動代碼232進行解密。如果所選擇的密鑰值是來自于安全密鑰存儲器220的Skey,則SPE 270將能夠適當?shù)貙用艿膯哟a232進行解密,并執(zhí)行在其中的啟動代碼指令,以使系統(tǒng)達到操作狀態(tài)。如果所選擇的密鑰值不是來自于安全密鑰存儲器220的Skey,則解密將會失敗,而且SPE 270將無法執(zhí)行啟動代碼指令。
可以利用多處理器系統(tǒng)所執(zhí)行的每個加電復(fù)位(POR)操作來執(zhí)行上述隨機選擇一個啟動處理器并且利用隨機選擇的啟動處理器來啟動該多處理器系統(tǒng)的處理。因此,每當啟動多處理器系統(tǒng)時,就會從多個處理器中隨機地選擇一個不同的處理器作為啟動處理器。結(jié)果,潛在的系統(tǒng)入侵者將無法在之前就確定哪一個處理器是啟動處理器以及將多處理器系統(tǒng)的電磁和熱狀況的測量導(dǎo)向該特定處理器。
相反,潛在的入侵者必須通過多處理器系統(tǒng)的多個啟動操作來監(jiān)控單個處理器,以期望最后將選擇該單個處理器作為用作啟動處理器的隨機處理器,或者潛在的入侵者必須監(jiān)控所有的處理器,從而識別哪一個處理器是啟動處理器,并試圖通過測量其各自的電磁及熱狀況來獲得必要的信息。舉例來說,在八處理器系統(tǒng)中,由于必須監(jiān)控所有8個處理器,所以使監(jiān)控啟動序列的難度增加了八倍。而且,需要更多的探針和硬件來進行這種監(jiān)控,從而增加了試圖進行這種監(jiān)控的難度。
圖3A是描述了根據(jù)一個示范性實施例的隨機選擇機制的示意圖。如上所述,支持該示范性實施例的原理概念是從多個處理器中隨機選擇一個處理器成為多處理器系統(tǒng)的啟動處理器。為了進行該隨機選擇,提供隨機事件發(fā)生器和選擇器機制。在示范性實施例中,在多處理器系統(tǒng)的普適邏輯中提供隨機事件發(fā)生器,并與每個處理器相關(guān)聯(lián)地提供選擇器。圖3A提供了對根據(jù)一個示范性實施例的隨機事件發(fā)生器和選擇器的一個實現(xiàn)的描述。
如圖3A所示,舉例來說,隨機事件發(fā)生器310包括線性反饋移位寄存器(LFSR)計數(shù)器320、環(huán)形振蕩器330和選擇器信號寄存器/解碼器340,其中隨機事件發(fā)生器310可以對應(yīng)于圖2中的隨機事件發(fā)生器242。環(huán)形振蕩器330是一種由奇數(shù)個非門組成的器件,這些非門的輸出在兩個電壓電平之間振蕩。該非門或反相器以鏈狀耦合,將最后一個反相器的輸出反饋到第一反相器中。一連串奇數(shù)個反相器的最后輸出是第一輸入的邏輯非。在斷言第一輸入之后的一段有限的時間后斷言該最后輸出。該最后輸出到輸入的反饋導(dǎo)致不穩(wěn)定的振蕩,它將根據(jù)隨機因素而隨時間改變,這些因素例如溫度和電源上的電磁噪聲。
連同時鐘信號clk一起將環(huán)形振蕩器330的輸出提供作為LFSR計數(shù)器320的輸入。LFSR計數(shù)器320是移位寄存器,其輸入位是它的以前狀態(tài)的線性函數(shù)。單個位的唯一線性函數(shù)是異或和異或非(inverse-XOR),因此,LFSR是一種通過對整個移位寄存器值的某些位進行異或操作(XOR)來驅(qū)動其輸入位的移位寄存器。
LFSR計數(shù)器320的初始值稱為種子,而且由于寄存器的操作是確定性的,所以完全由LFSR計數(shù)器320目前(或以前)的狀態(tài)來確定LFSR計數(shù)器320所生成的序列值。帶有精選的反饋功能的LFSR計數(shù)器320可以生成出現(xiàn)隨機和具有很長周期的序列位。在示范性實施例中,使該隨機性更加明顯,因為到LFSR計數(shù)器320的輸入是由環(huán)形振蕩器330所生成的振蕩結(jié)果與環(huán)形振蕩器330的頻率和輸入時鐘clk的頻率之間的差異的乘積,其中環(huán)形振蕩器330的頻率和輸入時鐘clk的頻率彼此獨立的變化。
LFSR計數(shù)器320接收來自于環(huán)形振蕩器330的輸出以及時鐘信號clk作為輸入,并生成一個輸出位流,其存儲在選擇器信號寄存器/解碼器340內(nèi)。環(huán)形振蕩器330的反相器在到LFSR計數(shù)器320的輸出信號中引入延遲,因此,在環(huán)形振蕩器330的頻率與輸入時鐘clk的頻率之間就存在差異。如圖3B所示,頻率之間的差異引起到LFSR計數(shù)器的輸入中的抖動。該抖動提供一種隨機性的度量,它使LFSR計數(shù)器320所生成的輸出隨機化。
在選擇器信號寄存器/解碼器340中存儲LFSR計數(shù)器320的輸出。在所述實例中,LFSR計數(shù)器320是一個3位的計數(shù)器,它生成一個3位的輸出,其中解釋該輸出來對值1-8進行編碼。選擇器信號寄存器/解碼器340的解碼器功能根據(jù)隨機的3位的輸入值選擇8個唯一輸出中的一個。根據(jù)選擇器信號寄存器340中所存儲的位的狀態(tài),向各種處理器(例如圖1中的SPE0-SPE7 120-134)的配置位寄存器輸出高或低狀態(tài)信號,從而設(shè)置配置位寄存器內(nèi)所存儲的值,因此選擇其中一個處理器成為多處理器系統(tǒng)的啟動處理器。
一旦設(shè)置了配置位寄存器值,就使用這些值來向相應(yīng)的選擇器350-370提供選擇器信號。如圖3A所示,連同Skey輸入和隨機密鑰值輸入一起向多路轉(zhuǎn)換器352、362、372提供選擇器信號。根據(jù)選擇器信號的狀態(tài),由每個多路轉(zhuǎn)換器352、362、372選擇Skey輸入或隨機密鑰值輸入??捎梢粋€或多個與上述用于選擇啟動處理器的隨機事件發(fā)生器配置相同或不同類型的隨機值發(fā)生器來生成該隨機密鑰值輸入。也就是說,如上所述的類似的隨機事件發(fā)生器配置可以用來隨機生成一個長度與Skey相同的密鑰值。然后將這些隨機密鑰值輸入多路轉(zhuǎn)換器352、362和372。
設(shè)計系統(tǒng),使得例如借助于上述解碼器功能,輸入到多路轉(zhuǎn)換器352、362、372中的選擇器信號中只有一個選擇器信號將選擇Skey輸入,同時其他所有的選擇器信號將選擇一個隨機密鑰值輸入。將來自于多路轉(zhuǎn)換器352、362、372的輸出提供給相應(yīng)的SPE,以便SPE可以在隨機選擇的啟動處理器的情況下利用這些輸出對啟動代碼進行解密并執(zhí)行該啟動代碼,或者正如在多處理器系統(tǒng)中其他所有的處理器的情況下,嘗試對啟動代碼進行解密并且未能啟動該多處理器系統(tǒng)。
應(yīng)當理解,上述用于提供隨機事件發(fā)生器和選擇器的機制僅僅是示范性的,而且并非旨在聲明或暗示任何鎮(zhèn)對可以用于示范性實施例的隨機事件發(fā)生器和選擇器的類型的限制。例如,可以使用其他隨機事件發(fā)生器,而不使用圖3A所示的環(huán)形振蕩器和LFSR計數(shù)器布置。例如,可以利用熱傳感器來測量熱噪聲,該熱噪聲然后可用來生成用于選擇其中一個處理器作為啟動處理器的隨機事件。類似地,可以利用量子點(q-dot)或半導(dǎo)體鈉米晶體來測量量子源效應(yīng),其可用作用于選擇一個處理器作為啟動處理器的隨機源。在該示范性實施例中可以使用任何強的隨機源來提供處理器隨機選擇,其中該處理器用作多處理器系統(tǒng)的啟動處理器。
而且,應(yīng)當理解,盡管圖3A顯示了具有5個反相器的環(huán)形振蕩器330,但是該示范性實施例并不局限于此。反而,在不脫離本發(fā)明的精神和范圍的情況下,可以使用任何數(shù)目的反相器,只要存在奇數(shù)個反相器。實際上,為了在到LFSR計數(shù)器320的輸入中提供附加的抖動,對環(huán)形振蕩器330中一連串的反相器添加附加的反相器是合乎要求的,以便在輸入時鐘信號clk的頻率和來自于環(huán)形振蕩器330的輸入之間引入甚至更多差異??梢愿鶕?jù)其中實現(xiàn)示范性實施例的特定多處理器系統(tǒng)所要求的操作特性來選擇差異的數(shù)量。
而且,盡管圖2和3A描述了由單獨的隨機密鑰值發(fā)生器為每個處理器生成隨機密鑰值,但是該示范性實施例并不局限于此。相反,可以為所有處理器提供單個隨機密鑰值發(fā)生器,該隨機密鑰值發(fā)生器生成一個或多個輸入到處理器的隨機密鑰值。因此,舉例來說,隨機密鑰值發(fā)生器可以生成提供給所有處理器的單個隨機密鑰值、對于每個單個處理器的單獨的隨機密鑰值(例如,在此情況下,可以生成7個不同的隨機密鑰值)或者生成可以有選擇地提供給多處理器系統(tǒng)的各個處理器的任何數(shù)量的隨機密鑰值。
在示范性實施例中,如圖3C所示,可以提供多個隨機密鑰值發(fā)生器390,其中每個隨機密鑰值發(fā)生器都輸出一個不同的隨機密鑰值。可替換地,如上所述,可以用單個隨機密鑰值發(fā)生器來代替這些單獨的隨機密鑰值發(fā)生器。可以連同來自于Skey存儲器395的安全密鑰(Skey)一起提供這些隨機密鑰值作為多處理器系統(tǒng)中處理器(例如,SPE 393和SPE 394)的選擇器(例如,多路轉(zhuǎn)換器391和392)的輸入,其中該安全密鑰(Skey)例如eFuse,它實際上用來對用于啟動多處理器系統(tǒng)的啟動代碼進行解密。如圖所示,可以對隨機生成的密鑰值和Skey值進行多路復(fù)用,并在8個相同的信號線上將它們提供給每個多路轉(zhuǎn)換器391和392,以便使入侵者更難以從密鑰值存儲器395中分離出其中作為信號線的一條線路。
可以向多路轉(zhuǎn)換器391和392提供總共8個密鑰值輸入,而且可以用來自于普適邏輯397中的隨機事件發(fā)生器396的選擇信號來選擇8個輸入中的一個。在此情況下,多路轉(zhuǎn)換器391和392可以在Skey輸入和7個隨機密鑰值之間進行選擇而不是簡單地在Skey輸入和一個隨機密鑰值之間進行選擇。因此,第一處理器可以在隨機選擇第一處理器作為啟動處理器的基礎(chǔ)上選擇Skey輸入,第二處理器可以選擇第三隨機密鑰值,第三處理器可以選擇第四隨機密鑰值,第五處理器可以選擇第一隨機密鑰值,以此類推。因此,每個處理器可以接收不同的密鑰值,或者是Skey或者是隨機生成的密鑰值。結(jié)果,對于入侵者來說就變得難以在監(jiān)控多處理器系統(tǒng)的總線業(yè)務(wù)量時辨識哪一個密鑰值是正確密鑰值。
還應(yīng)當理解,如果是在單芯片上設(shè)計的話,優(yōu)選地在其中提供多處理器系統(tǒng)的陶瓷封裝的較低層金屬層或互連的最底層中提供圖3A和3C所示的機制。由于探測多處理器的電特征和熱特征的能力目前被限定在多處理器陶瓷封裝的上層,所以通過將這些元件放置在較低層金屬層中,使得探測這些元件的操作的能力變得更加困難。因此,如果可能的話,對于未來的入侵者來說,要監(jiān)控隨機事件發(fā)生器和選擇器的熱特征和電特征以便確定由這些元件所提供的密鑰值是非常困難的。
利用上述機制,可以在多處理器系統(tǒng)的多個處理器內(nèi)隨機地選擇一個處理器來啟動該多處理器系統(tǒng)。按照這種方式,使監(jiān)控處理器的電特征和熱特征以便獲得用來啟動多處理器系統(tǒng)的秘密信息(例如秘密密鑰)的能力變得更加困難,而且潛在地變成對那些希望訪問多處理器系統(tǒng)而沒有得到授權(quán)的人員的不利因素。
盡管上述用于隨機選擇一個處理器來啟動多處理器系統(tǒng)的機制針對監(jiān)控啟動序列提供了良好的保護,但是如果未授權(quán)個體足夠有耐心的話,他仍然有可能“攻擊(hack)”該系統(tǒng)。為了使得基本上不可能進行這樣的監(jiān)控,示范性實施例提供了附加的機制用以在隨機選擇的處理器上對啟動序列進行掩碼,以便未授權(quán)個體無法辨識哪一個處理器正確地執(zhí)行用于啟動多處理器系統(tǒng)的實際的啟動序列。
在一個示范性實施例中,掩碼操作包括由每個未選為啟動處理器的處理器運行一個不同的指令集,從而生成掩碼的電和熱特征,它們使得難以對啟動處理器與該系統(tǒng)中的其他處理器進行辨識。由不同的處理器所運行的代碼序列可以是相同的默認代碼序列,默認的代碼序列提供在與處理器相關(guān)聯(lián)的存儲器中,或者可以在處理器無法對啟動代碼序列進行解密時可由該處理器訪問。例如,可以在與每個處理器相關(guān)聯(lián)的本地存儲器的安全部分中提供默認代碼序列??商鎿Q地,可以在片上或片外所提供的快速ROM或其他存儲設(shè)備中提供默認代碼序列。
當處理器不能對從快速ROM中接收的實際的加密的啟動代碼進行解密時,處理器默認返回本地存儲器的安全部分,該安全部分使處理器執(zhí)行指令來對另一個處理器上正在執(zhí)行的啟動代碼序列進行掩碼。該指令序列也許不生成任何可用的信息,而且可能僅僅用作掩碼功能??商鎿Q地,舉例來說,可以利用該指令序列來執(zhí)行用于在啟動操作期間對系統(tǒng)進行監(jiān)控的操作或其他有用的操作。
在示范性實施例中,在每個非選擇的處理器(例如非啟動處理器)上執(zhí)行的代碼是相同的。在其中由每個非選擇的處理器所執(zhí)行的代碼為相同的示范性實施例中,在這些非選擇的處理器的每一個上運行的代碼優(yōu)選為生成電和熱特征文件(profile)的代碼,這些特征文件相似于實際啟動代碼但不提供任何安全信息,其中入侵者為了規(guī)避多處理器系統(tǒng)的安全性就需要這些安全信息。這樣的代碼可以執(zhí)行類似于實際啟動代碼的操作,但不訪問多處理器系統(tǒng)的敏感部分。實際上,在一個示范性實施例中,用來啟動多處理器系統(tǒng)的相同啟動代碼可由非選擇的處理器使用,但是非選擇的處理器可訪問安全密鑰(Skey),而不可訪問其它特權(quán)信息。
結(jié)果,這些非選擇的處理器的熱特征文件和總線業(yè)務(wù)量將近似于實際啟動序列。這樣,從利用監(jiān)控探針來監(jiān)控熱特征文件、總線業(yè)務(wù)量等等的入侵者的角度來看,由于通過監(jiān)控探針來看所有核都是相同的,所以該入侵者將無法譯碼出哪一個核正在執(zhí)行實際啟動操作。這種不明確性阻止了篡改,并使得更加難以分離出真正的啟動代碼序列、秘密密鑰信息等等。
在其他示范性實施例中,每個非選擇的處理器都可以執(zhí)行不同的指令集。通過在每個非選擇的處理器上執(zhí)行不同的指令集,在利用電或熱探針來監(jiān)控這些處理器時,沒有一個處理器看上去是唯一的。結(jié)果,無法通過探針來識別諸如熱特征文件或總線業(yè)務(wù)量那樣的明顯特征以便識別哪一個處理器是啟動處理器。
可以為多處理器系統(tǒng)中每個處理器隨機地選擇這些不同的指令集。因此,舉例來說,可以隨機地選擇針對在片上存儲設(shè)備(例如快速ROM等)上存儲的代碼序列的不同開始地址,并將該不同的開始地址提供給多處理器系統(tǒng)的處理器。然后處理器開始執(zhí)行在隨機選擇的開始地址處的指令,從而生成不同的熱特征文件和總線業(yè)務(wù)量,以對實際啟動代碼序列進行掩碼。
一種為不同的處理器提供不同的代碼序列的方法是提供啟動代碼,該啟動代碼具有插入到其內(nèi)的隨機延遲元素。舉例來說,這些延遲元素可以是重復(fù)隨機次數(shù)的循環(huán)??梢栽陔S機選擇的啟動處理器所運行的實際啟動代碼序列中以及在非選擇的處理器所運行的啟動代碼中提供這樣的延遲元素。從監(jiān)控處理器的熱和總線業(yè)務(wù)量特性的入侵者的角度來看,該隨機延遲導(dǎo)致該啟動代碼“看上去”在每個處理器上都不同。結(jié)果,入侵者不可能辨識出哪一個處理器正在運行啟動多處理器系統(tǒng)的實際啟動代碼。
在另一個示范性實施例中,提供偽處理器,其中在入侵者監(jiān)控偽處理器時該偽處理器看起來像是唯一的。該示范性實施例是先前的實施例的組合,其中隨機地選擇一個處理器作為啟動處理器,從非選擇的處理器中選擇一個處理器作為運行代碼的偽處理器,該代碼提供來自于啟動代碼序列的唯一熱和總線業(yè)務(wù)量特征文件,而其他處理器運行盡可能對實際啟動代碼序列的熱特征文件和總線業(yè)務(wù)量進行復(fù)制的代碼序列。按照這種方式,入侵者將從其他處理器中檢測到唯一的偽處理器,并推斷該處理器正在運行實際啟動代碼序列。因此,入侵者將它的攻擊導(dǎo)向該偽處理器而不是實際啟動處理器,其中從熱特征文件和總線業(yè)務(wù)量的觀點來看,啟動處理器看起來與其他處理器類似。此外,如果入侵者試圖運行啟動或積極地干擾偽處理器,則偽處理器就可以利用信號通知系統(tǒng)關(guān)閉。
圖4A-4D是描述根據(jù)示范性實施例的用于對隨機選擇的啟動處理器的安全啟動操作進行掩碼的掩碼操作的示意圖。圖4A描述了第一掩碼操作,其中從監(jiān)控探針角度來看與啟動代碼序列相同的代碼運行在每個非選擇的處理器上。如圖4A所示,例如借助于之前描述的機制,隨機地選擇SPE0 410作為多處理器系統(tǒng)400的啟動處理器。因此,SPE0 410接收秘密密鑰,對來自于快速ROM的啟動代碼序列進行解密,并執(zhí)行為使多處理器系統(tǒng)400達到操作狀態(tài)所要求的實際啟動代碼操作。其他SPE(即SPE1-SPE7 412-424)執(zhí)行從檢測探針的角度看起來好像啟動代碼序列的代碼。
如上所述,其他SPE 412-424所運行的代碼序列可以是在本地存儲器的安全部分中提供的默認代碼序列,該安全部分使SPE 412-424執(zhí)行指令來對SPE0 410上正在執(zhí)行的啟動代碼序列進行掩碼。優(yōu)選地,在這些非選擇的SPE 412-424中的每一個上運行的代碼是生成電和熱特征文件的代碼,其中所述電和熱特征文件類似于實際啟動代碼但并不提供任何秘密信息,其中入侵者為了規(guī)避多處理器系統(tǒng)的安全性就需要秘密安全信息。這樣的代碼可以執(zhí)行與實際啟動代碼的操作相類似但并不訪問多處理器系統(tǒng)400的敏感部分的操作。
圖4B描述了另一個示范性實施例,其中在每個非選擇的處理器上運行不同的隨機選擇的算法。如圖4B所示,再次選擇SPE0作為啟動處理器,并且因此,SPE0運行用于將多處理器系統(tǒng)400啟動到操作狀態(tài)的啟動代碼。其他SPE 412-424中的每一個都運行單獨的隨機選擇的算法,該算法在EIB上生成不同的熱特征文件和不同的總線業(yè)務(wù)量。因此,在與其他SPE 412-424中的每一個進行比較時,每個SPE0-7看起來是唯一的。因此,不可能辨識出哪一個SPE0-7 412-424是用于啟動多處理器系統(tǒng)400的實際啟動處理器。
如上所述,可以為多處理器系統(tǒng)中的每個SPE 412-424隨機地選擇這些不同的算法。因此,舉例來說,可以隨機地選擇在片上存儲設(shè)備(例如快速ROM等等)中存儲的代碼序列的不同開始地址,并將該不同的開始地址提供給SPE 412-424。然后,SPE 412-424可以開始執(zhí)行在隨機選擇的開始地址處的指令,從而生成對實際啟動代碼序列進行掩碼的不同的熱特征文件和總線業(yè)務(wù)量。
可替換地,可以將啟動代碼提供給SPE 412-424中的每一個,其中在啟動代碼內(nèi)插入隨機延遲元素。舉例來說,這些延遲元素可以是迭代隨機次數(shù)的循環(huán)。從監(jiān)控處理器的熱和總線業(yè)務(wù)量特性的入侵者的角度,該隨機延遲導(dǎo)致啟動代碼“看上去”在每個處理器上都不同。結(jié)果,入侵者不可能辨識出哪一個處理器正在運行用于啟動多處理器系統(tǒng)的實際啟動代碼。
圖4C描述了另一個示范性實施例,其中提供一個偽處理器,可以使入侵者的攻擊改向到該偽處理器。如圖4C所示,SPE0是隨機選擇的啟動處理器,它執(zhí)行啟動序列。正如上述參照圖4A的實施例中的那樣,SPE1-SPE4 412-418和SPE6-SPE7 422-424運行從熱和總線業(yè)務(wù)量檢測角度看起來像啟動代碼序列的代碼。另一方面,SPE5 420運行隨機選擇的算法,其中可以按照上述參照圖4B所描述的類似方式來隨機地選擇該算法。
因此,從監(jiān)控處理器410-424的特性的入侵者角度來看,所有SPE0-SPE4 410-418和SPE6-SPE7 422-424看起來都在執(zhí)行相同的代碼。然而,與其它SPE相比,SPE5 420看起來是唯一的。因此,希望攻擊多處理器系統(tǒng)的啟動代碼序列的入侵者會改向?qū)PE 5 420進行攻擊而不是實際啟動處理器SPE0 410,這是因為對于入侵者來說SPE5420看起來是實際啟動處理器。
正如利用每個加電復(fù)位(POR)操作來隨機地選擇實際啟動處理器,同樣可以從非選擇的處理器中隨機地選擇偽處理器。因此,利用每個POR操作,可以選擇不同的啟動處理器和偽處理器,從而使入侵者難以推斷哪一個處理器正在執(zhí)行實際啟動序列,該實際啟動序列可能會被危害以便獲得對多處理器系統(tǒng)的訪問。
為完整起見,圖4D描述了之前上述的示范性實施例,其中由每個處理器來執(zhí)行用來啟動該系統(tǒng)的啟動代碼。在該示范性實施例中,只允許隨機選擇的啟動處理器訪問秘密密鑰(Skey),而其他處理器接收隨機選擇的密鑰(Rkey1-Rkey7)。每個處理器都試圖利用提供給它們的密鑰(例如Skey或Rkey)來解碼和執(zhí)行該啟動代碼。只有隨機選擇的啟動處理器能正確地對啟動代碼進行解密并執(zhí)行該啟動代碼來使數(shù)據(jù)處理系統(tǒng)達到操作狀態(tài)。然而,對于外部的監(jiān)控器來說,看起來好像所有處理器都在啟動該系統(tǒng),從而對實際啟動處理器進行掩碼,這是因為每個處理器都執(zhí)行類似的任務(wù)來試圖解密和啟動該系統(tǒng)。也就是說,每個處理器都將生成類似的熱和/或電特征,這使得未來的入侵者利用檢測探針等難以辨識哪一個處理器是實際啟動處理器。
通過使用如示范性實施例中所提供的對啟動處理器的隨機選擇和對啟動序列的掩碼,對于到多處理器系統(tǒng)的未來入侵者來說,辨識哪一個處理器正在執(zhí)行啟動代碼序列就變得非常困難。因此,對于未來入侵者來說,要監(jiān)控處理器熱特征文件和總線業(yè)務(wù)量并識別用于訪問加密的啟動代碼的秘密密鑰信息就變得非常困難。此外,對于未來入侵者來說,變得難以識別啟動代碼序列中可以侵入系統(tǒng)的位置。因此,使多處理器系統(tǒng)更加安全而沒有未授權(quán)訪問啟動序列的危險。
圖5-6是概述用于在多處理器系統(tǒng)內(nèi)隨機地選擇一個處理器作為啟動處理器并對啟動代碼序列進行掩碼的示范性操作的流程圖。應(yīng)當理解,可以通過計算機程序指令來實現(xiàn)流程圖示例中的每個塊和流程圖示例中的塊的組合??梢詫⑦@些計算機程序指令提供給處理器或其他可編程數(shù)據(jù)處理裝置來生成機器,以便在處理器或其他可編程數(shù)據(jù)處理裝置上執(zhí)行的指令創(chuàng)建用于實現(xiàn)在流程圖塊中所指定功能的裝置。還可以在計算機可讀存儲器或存儲介質(zhì)中存儲這些計算機程序指令,其中計算機可讀存儲器或存儲介質(zhì)可以引導(dǎo)處理器或其他可編程數(shù)據(jù)處理裝置按照特定方式操作,以便存儲在計算機可讀存儲器或存儲介質(zhì)內(nèi)的指令生成一個制造產(chǎn)品,包括指令裝置,該指令裝置實現(xiàn)流程塊內(nèi)所指定的功能。
因此,流程圖示例的塊支持用于執(zhí)行指定功能的裝置的組合、用于執(zhí)行指定功能的步驟的組合和用于執(zhí)行指定功能的程序指令裝置。還應(yīng)該理解,可由執(zhí)行指定功能和步驟的基于專用硬件的計算機系統(tǒng)或者通過專用硬件和計算機指令的組合來實現(xiàn)流程圖示例中的每個塊和流程圖示例中的塊的組合。
圖5概述了一種隨機選擇用于啟動多處理器系統(tǒng)的啟動處理器的示范性操作。如圖5所示,該操作從系統(tǒng)控制器執(zhí)行加電復(fù)位(POR)操作開始(步驟510)。在執(zhí)行初始POR操作之后,系統(tǒng)控制器向多處理器系統(tǒng)的普適邏輯提供“電源正常”信號(步驟520),以及普適邏輯初始化一個隨機啟動操作(步驟530)。
普適邏輯從多個處理器中隨機地選擇一個處理器作為啟動處理器(步驟540)。然后普適邏輯根據(jù)該隨機選擇來設(shè)置處理器的配置位(步驟550)并利用信號通知處理器開始啟動操作(步驟560)。快速ROM向處理器提供加密的啟動代碼,而且從秘密密鑰存儲器和隨機密鑰發(fā)生器向處理器提供密鑰值(步驟570)。然后處理器根據(jù)它們的配置位的設(shè)置來選擇將由處理器使用的密鑰(步驟580)。處理器試圖根據(jù)所選擇的密鑰來對啟動代碼進行解密(步驟590)。該選擇的處理器利用秘密密鑰對啟動代碼進行解密并啟動該系統(tǒng)(步驟595)。應(yīng)當注意,由所有其他非選擇的處理器解密啟動代碼的試圖將會失敗,而且只有該選擇的處理器能夠啟動該系統(tǒng),然后操作結(jié)束。
圖6是概述了根據(jù)一個示范性實施例對啟動代碼序列進行掩碼的示范性操作的流程圖。舉例來說,可以在多處理器系統(tǒng)的每個處理器中執(zhí)行圖6所述的操作。
如圖6所示,處理器接收信號以開始啟動操作(步驟610)。舉例來說,該步驟可以與圖5中的步驟530相對應(yīng)。處理器試圖對啟動代碼進行解密(步驟620),而且判斷該解密意圖是否失敗(步驟630)。如果解密成功,即該處理器是隨機選擇的啟動處理器,則執(zhí)行啟動代碼,以由此將多處理器系統(tǒng)啟動到操作狀態(tài)(步驟640)。
如果解密失敗,則選擇執(zhí)行一個代碼序列來對啟動序列進行掩碼(步驟650)。如上所述,取決于特定實施例,可以根據(jù)本地存儲器的安全部分中的默認代碼序列、隨機選擇的開始地址、對具有隨機延遲元素的啟動代碼的使用等等來進行對掩碼代碼序列的選擇。運行掩碼代碼序列(步驟660),而且判斷該系統(tǒng)是否處于操作狀態(tài),即是否完成了啟動序列(步驟670)。如果否,該操作就返回到步驟660并繼續(xù)運行掩碼代碼序列。如果該系統(tǒng)處于操作狀態(tài),則結(jié)束掩碼代碼序列的執(zhí)行(步驟680),并且操作終止。
因此,上述示范性實施例提供了一種機制,利用該機制可以從多個處理器中隨機地選擇一個處理器作為啟動處理器,用以將多處理器系統(tǒng)啟動到操作狀態(tài)。該示范性實施例還提了一種機制,用于對隨機選擇的處理器正執(zhí)行的啟動代碼序列進行掩碼,以便使入侵者難以辨識已經(jīng)隨機選擇了哪個處理器來執(zhí)行實際啟動代碼序列。利用這些機制,通過使入侵者極難通過監(jiān)控啟動代碼序列來實現(xiàn)對系統(tǒng)的訪問而使多處理器系統(tǒng)更加安全。
相對于多處理器系統(tǒng)中單個處理器正執(zhí)行的啟動代碼序列描述了上述示范性實施例。然而,示范性實施例并不局限于此。如以下所描述的,在其他示范性實施例中,可以在多處理器系統(tǒng)中的多個處理器上來分配啟動代碼序列。通過在多處理器系統(tǒng)中的多個處理器上分配啟動代碼序列,增加了必須被危害以便獲得關(guān)于啟動序列的完整信息從而避開安全性測量的處理器的數(shù)目。
因此,以下所描述的示范性實施例的分布式啟動操作比利用單個安全核的多處理器數(shù)據(jù)處理系統(tǒng)更為安全。此外,通過分布啟動操作,如果危害了啟動操作的任何部分,則啟動操作失敗,從而防止未授權(quán)個體規(guī)避系統(tǒng)的安全性。換言之,盡管未來的入侵者可以危害啟動操作的部分,但是該入侵者不能危害全部啟動操作,因此不能獲得對多處理器數(shù)據(jù)處理系統(tǒng)的訪問。
利用該示范性實施例,將啟動代碼序列劃分成多個分區(qū),以便可以將每個分區(qū)提供給多處理器系統(tǒng)的不同的處理器。當執(zhí)行啟動代碼序列的每個分區(qū)時,在啟動代碼序列可以在另一個處理器上進行之前,該分區(qū)必須在其各自的處理器上正確地完成。利用安全通信機制來傳達對啟動代碼序列的先前分區(qū)的滿意完成。該安全通信機制可以包括一個安全令牌,例如加密的密碼或其他安全標識符,例如公鑰/私鑰對,其表示先前的會話沒有被危害。按照這種方式,創(chuàng)建必須令人滿意地完成的相關(guān)“會話”鏈。
啟動代碼的分布式執(zhí)行中所涉及的處理器可以是多處理器系統(tǒng)中的所有處理器或者是多處理器系統(tǒng)中的處理器子集。例如,可以按分布方式利用隨機選擇機制(例如上述用于選擇單個啟動處理器的隨機選擇機制)來隨機地選擇將用于啟動系統(tǒng)的多個啟動處理器。而且,可以隨機地選擇由處理器所執(zhí)行的啟動代碼的特定分區(qū),使得利用每個加電復(fù)位(POR)操作,相同的處理器可以執(zhí)行或不執(zhí)行與之前POR操作中相同的啟動代碼分區(qū)。因此,可以針對分布式啟動操作中涉及哪些處理器以及每個處理器將執(zhí)行哪些啟動代碼分區(qū)來進行隨機化。
多處理器系統(tǒng)的其他處理器(即,非啟動處理器)可以在分布式啟動操作期間不執(zhí)行任何操作,或者可以執(zhí)行上述各種掩碼代碼示范性實施例中的一個或多個掩碼代碼序列,以此對隨機選擇的處理器子集上的啟動代碼執(zhí)行進行掩碼。換言之,在不脫離本發(fā)明精神和范圍的情況下,該示范性實施例的分布式啟動代碼序列操作可以與之前所述的一個或多個示范性實施例相結(jié)合。
圖7A是描述根據(jù)一個示范性實施例配置為菊鏈或環(huán)形布置的分布式啟動操作的示意圖。如圖7A所示,提供多個處理器720-750,用于啟動多處理器數(shù)據(jù)處理系統(tǒng)。在所述實例中,在分布式啟動操作中利用了所有協(xié)處理器,即SPE,而控制處理器(例如PPE)不執(zhí)行該分布式啟動代碼。當然,在其他示范性實施例中,PPE也可以包括在分布式啟動操作中。而且,在其他示范性實施例中,正如之前所述的,只有多處理器數(shù)據(jù)處理系統(tǒng)中的處理器子集可以用來執(zhí)行分布式啟動操作。
舉例來說,可以將加密的啟動代碼710劃分成可單獨執(zhí)行的分區(qū),即啟動代碼分區(qū)1至n,其中該加密的啟動代碼710可以存儲在與多處理器數(shù)據(jù)處理系統(tǒng)相關(guān)聯(lián)的存儲設(shè)備中,例如圖2中的快速ROM230。例如,可以提供這些分區(qū)作為加密的啟動代碼中的模塊或子程序,其中利用相同的加密算法和相同的秘密密鑰(Skey)對它們分別進行加密。優(yōu)選地,啟動代碼分區(qū)的數(shù)目等于分布式啟動操作中將涉及的處理器的數(shù)目,即啟動處理器的數(shù)目。然而,在某些示范性實施例中,例如在環(huán)形布置的啟動處理器中,啟動代碼分區(qū)的數(shù)目并不局限于啟動處理器的數(shù)目,而可以是少于或多于啟動處理器數(shù)目的任意多個分區(qū)。
舉例來說,在普適邏輯790的控制下執(zhí)行分布式啟動操作,該普適邏輯790可以是圖1中相同的普適邏輯193。舉例來說,通過隨機事件發(fā)生器的用戶,普適邏輯790可以隨機地選擇將用作啟動處理器的處理器720-750,以及可以隨機地選擇每個隨機選擇的處理器720-750將執(zhí)行哪個分區(qū)。在這一實施例中,普適邏輯790可以跟蹤啟動代碼分區(qū)要執(zhí)行的次序,以便利用安全通信機制來確保啟動代碼序列的安全性,其中安全通信機制指示分布式啟動操作的前一個會話是否已經(jīng)被危害。然而,為了該描述的簡單起見,將假設(shè)在所述實例中,在分布式啟動操作中利用了多處理器系統(tǒng)的所有處理器或至少協(xié)處理器,而且按相繼次序向處理器720-750提供啟動代碼分區(qū)。
普適邏輯790向處理器720-750提供選擇器信號,用以選擇每個處理器720-750將要執(zhí)行哪個啟動代碼分區(qū)。另外,普適邏輯790提供密鑰值選擇器信號,用以使處理器720-750從Skey存儲器中選擇Skey作為將用來對處理器720-750的相應(yīng)啟動代碼分區(qū)進行解密的密鑰。舉例來說,處理器720-750利用所提供的Skey對它們的啟動代碼分區(qū)進行解密,以及然后借助于按照菊鏈體系結(jié)構(gòu)的處理器720-750的布置或者在普適邏輯790的控制下,以合適的序列執(zhí)行啟動代碼分區(qū)。
在所述實例中,SPE0 720通過以下步驟開始分布式啟動操作對其啟動代碼分區(qū)1進行解密,執(zhí)行該啟動代碼分區(qū),然后向SPE1 730安全地傳達啟動代碼分區(qū)1的成功完成。而且,可以在這些SPE之間利用安全機制用,用以表示沒有危害先前的會話,即,包括先前的啟動代碼分區(qū)的執(zhí)行的會話。舉例來說,該安全機制可以傳送安全令牌、數(shù)字簽名、密碼、先前啟動代碼分區(qū)的校驗和,利用成功完成消息的公鑰/私鑰加密,等等。任何可以用來傳達是否危害了分布式啟動操作的先前會話的安全機制都旨在本發(fā)明的精神和范圍內(nèi)。
在接收到啟動代碼分區(qū)1執(zhí)行的成功和未危害的確認之后,SPE1730可以對它的啟動代碼分區(qū)2進行解密,執(zhí)行啟動代碼分區(qū),然后向SPE2 740傳達其成功完成啟動代碼分區(qū)2。該處理可以繼續(xù)進行,直至利用信號通知了所有處理器它們已經(jīng)完成了它們的分布式啟動操作部分而沒有被危害。在這種啟動代碼分區(qū)相關(guān)鏈中的任何中斷(例如利用信號通知未成功的執(zhí)行或者被危害的執(zhí)行)都會導(dǎo)致啟動失敗,其中可以利用信號通知系統(tǒng)控制器啟動失敗。一旦成功地完成了所有啟動代碼分區(qū),該多處理器數(shù)據(jù)處理系統(tǒng)就處于操作狀態(tài),其中可以在各個處理器上執(zhí)行軟件應(yīng)用。
上述示范性實施例利用了針對啟動代碼分區(qū)的處理器的菊鏈布置,其中在處理器上執(zhí)行該啟動代碼分區(qū)。在不脫離本發(fā)明的精神和范圍的情況下可以使用確保連續(xù)執(zhí)行啟動代碼分區(qū)的其它布置。例如,對上述菊鏈布置的擴展是提供一種針對分布式啟動操作的處理器的環(huán)形布置,以便最后一個的處理器(例如,SPE7 750)反過來向第一個處理器(例如,SPE0 720)傳達其啟動代碼分區(qū)的執(zhí)行的成功的和未受危害的完成,其中選擇第一個處理器(例如,SPE0 720)作為“主要”啟動處理器。按照這種方式,可以在主要啟動處理器處使用通過環(huán)形布置從一個會話傳送到下一個會話的安全機制來對整個分布式啟動操作的未被危害的執(zhí)行進行檢驗,驗證機制例如為安全令牌、增加的計數(shù)值等等。
而且,處理器的環(huán)形布置允許利用比啟動處理器的數(shù)目多的啟動代碼分區(qū)。因此,如果只選擇多處理器數(shù)據(jù)處理系統(tǒng)中的處理器子集作為啟動處理器,則該處理器子集可以在針對分布式啟動操作設(shè)置成的環(huán)形布置時執(zhí)行任意數(shù)目個啟動代碼分區(qū)。這不僅提供了普適邏輯790在多處理器數(shù)據(jù)處理系統(tǒng)中隨機地選擇哪些處理器將成為啟動處理器的能力,還提供了普適邏輯790隨機地選擇多少個處理器將在分布式啟動操作中作為啟動處理器的能力。因此,在第一POR操作中,可以選擇四個處理器作為啟動處理器,而在隨后的POR操作中,可以選擇三個啟動處理器。普適邏輯790可以包含用于隨機地選擇多個處理器來將其選擇為啟動處理器的邏輯,然后如上所述,利用該邏輯來控制對處理器的隨機選擇。
另一種針對分布式啟動操作的可能的啟動處理器布置是提供了一種主/從布置。圖7B是描述根據(jù)一個示范性實施例配置為主/從布置的分布式啟動操作的示意圖。如圖7B所示,指定處理器760為主機處理器。該處理器可以是其中的一個協(xié)處理器(例如,SPE)或控制處理器(例如,PPE)。每個從處理器(例如,SPE0-SPE7 720-750)都負責以類似于圖7A中所述的方式來完成它們的啟動代碼分區(qū)并向主核安全地傳達它們已經(jīng)完成了執(zhí)行和沒有被危害。一旦主處理器760接收了來自每個從處理器720-750的信號,并確認它本身沒有被危害,則允許多處理器數(shù)據(jù)處理系統(tǒng)進入其中可以執(zhí)行軟件應(yīng)用的操作狀態(tài)。
應(yīng)當理解,盡管在這里描述了針對分布式啟動操作的處理器菊鏈布置、環(huán)形布置和主/從布置,但是本發(fā)明并不局限于這些所述的布置。相反,在不脫離本發(fā)明的精神和范圍的情況下,任何針對分布式啟動操作的處理器布置都可以與示范性實施例的機制一起使用。
圖8是概述了根據(jù)一個示范性實施例的用于多處理器系統(tǒng)的分布式啟動的示范性操作的流程圖。如圖8中所示,該操作從普適邏輯接收來自于系統(tǒng)控制器的“電源正?!毙盘栭_始(步驟810)。普適邏輯從多處理器數(shù)據(jù)處理系統(tǒng)中的多個處理器中選擇處理器作為啟動處理器(步驟820)。如上所述,這種選擇會導(dǎo)致選擇所有處理器或選擇多處理器數(shù)據(jù)處理系統(tǒng)中的處理器子集作為啟動處理器。舉例來說,可以利用普適邏輯中的隨機事件發(fā)生器來執(zhí)行這種選擇。
普適邏輯選擇將要分配給所選擇的啟動處理器的啟動代碼分區(qū)(步驟830)。由相關(guān)聯(lián)的啟動處理器執(zhí)行下一個啟動代碼分區(qū)(步驟840)。啟動處理器判定啟動代碼分區(qū)的執(zhí)行是否成功和沒有被危害(步驟850)。如果否,則利用信號通知系統(tǒng)控制器啟動失敗(步驟860),并且操作結(jié)束。
如果啟動代碼分區(qū)成功地執(zhí)行并且沒有被危害,則啟動處理器判定是否已經(jīng)成功地執(zhí)行了所有啟動代碼分區(qū)(步驟870)。如果否,則操作返回步驟840,并由其相關(guān)聯(lián)的啟動處理器來執(zhí)行下一個啟動代碼分區(qū)。如果成功地執(zhí)行了所有的啟動代碼分區(qū),則啟動處理器利用信號通知系統(tǒng)控制器數(shù)據(jù)處理系統(tǒng)的成功啟動(步驟880),并且操作結(jié)束。
因此,如上所述,除了隨機地選擇單個啟動處理器并對多處理器數(shù)據(jù)處理系統(tǒng)中的其他處理器上的操作進行掩碼之外,示范性實施例還提供了用以在多個處理器上分布啟動操作的機制。示范性實施例提供了用于以下內(nèi)容的機制隨機地選擇啟動處理器;隨機地選擇要在所選擇的啟動處理器上執(zhí)行的啟動代碼分區(qū);以確保各個啟動處理器執(zhí)行啟動代碼分區(qū)的安全性。所有的這些機制旨在提高多處理器數(shù)據(jù)處理系統(tǒng)的安全性,保護該系統(tǒng)不受啟動操作的未授權(quán)監(jiān)控的威脅。
示范性實施例可以采用完全硬件的實施例、完全軟件的實施例或包含硬件和軟件元素的實施例的形式。在優(yōu)選的實施例中,可以通過軟件來實現(xiàn)本發(fā)明,它包括但不局限于固件、常駐軟件、微代碼等。
此外,示范性實施例可以采用可通過計算機可用或計算機可讀介質(zhì)訪問的計算機程序產(chǎn)品的形式,該介質(zhì)提供為計算機或任何指令執(zhí)行系統(tǒng)所使用或與其結(jié)合使用的程序代碼。為了本描述目的,計算機可用或計算機可讀介質(zhì)可以是任何包含、存儲、傳送、傳播或傳輸程序的裝置,該程序供指令執(zhí)行系統(tǒng)、裝置或設(shè)備使用或與其結(jié)合使用。
該介質(zhì)可以是電、磁、光學(xué)、電磁、紅外線或半導(dǎo)體系統(tǒng)(或裝置或設(shè)備)或者傳播介質(zhì)。計算機可讀介質(zhì)的實例包括半導(dǎo)體或固態(tài)存儲器、磁帶、可移動計算機盤、隨機存取存儲器(RAM)、只讀存儲器(ROM)、硬磁盤和光盤。光盤的當前實例包括致密盤-只讀存儲器(CD-ROM)、致密盤-讀/寫(CD-R/W)和DVD。
上述電路可以是集成電路芯片設(shè)計的一部分??梢岳脠D形計算機編程語言來創(chuàng)建芯片設(shè)計,并在計算機存儲介質(zhì)(例如盤、磁帶、物理硬盤驅(qū)動器或諸如存儲訪問網(wǎng)絡(luò)中的虛擬硬盤驅(qū)動器)中存儲該芯片設(shè)計。如果設(shè)計者不制造芯片或用來制造芯片的光刻掩模,則設(shè)計者就可以直接或間接地通過物理裝置(例如,通過提供存儲該設(shè)計的存儲介質(zhì)的副本)或電子地(例如,通過因特網(wǎng))向這類實體發(fā)送生成的設(shè)計。然后可以將所存儲的設(shè)計轉(zhuǎn)換成合適的形式(例如,GDSII),用于光刻掩模的制造,光刻掩模通常包括將在晶片上形成的所討論的芯片設(shè)計的多個副本??梢岳霉饪萄谀硐薅▽⒁g刻或進行處理的晶片區(qū)域(和/或其上的層)。
可由制造者按原始晶片的形式來分布生成的集成電路芯片(也就是,作為具有多個非封裝芯片的單個晶片)作為裸模,或者按照封裝的形式來分布生成的集成電路芯片。在后一種情況中,可以將芯片安裝在單芯片封裝(例如,塑性載體,利用附著到主板或其他高層載體的引線)或多芯片封裝(例如,陶瓷載體,它具有表面互連結(jié)構(gòu)和埋藏的互連結(jié)構(gòu))內(nèi)。然后,在任何情況下芯片都可以與其他芯片、分立電路元件和/或其他作為(a)中間產(chǎn)品(例如主板)或(b)最終產(chǎn)品的一部分的信號處理裝置進行集成。最終產(chǎn)品可以是任何包括集成電路芯片的產(chǎn)品,即從玩具和其他低端應(yīng)用到具有顯示器、鍵盤或其他輸入設(shè)備以及中央處理器的高級計算機產(chǎn)品。而且,在其中可以配備集成電路芯片的最終產(chǎn)品可以包括游戲機、游戲控制臺、手持計算設(shè)備、個人數(shù)字助理、諸如無線電話等的通信裝置、膝上型計算設(shè)備、桌面型計算設(shè)備、服務(wù)器計算設(shè)備或任何其他計算設(shè)備。
為了描述和說明目的已經(jīng)提出了本發(fā)明的說明,而本發(fā)明的說明并非旨在窮盡性的或者將本發(fā)明限制為所公開的形式。許多修改和變化對本領(lǐng)域普通技術(shù)人員來說是明顯的。選擇和說明了實施例,以便最佳地解釋本發(fā)明地原理、特定應(yīng)用,而且使本領(lǐng)域其他技術(shù)人員能夠理解針對具有各種修改的各種實施例的本發(fā)明,正如所述各種修改適合于所考慮的特定用途。
權(quán)利要求
1.一種在具有多個處理器的數(shù)據(jù)處理系統(tǒng)中用于啟動所述數(shù)據(jù)處理系統(tǒng)的方法,該方法包括在所述多個處理器的每個處理器中接收秘密密鑰值;在所述多個處理器的每個處理器中接收至少一個隨機密鑰值;隨機選擇所述多個處理器中的一個處理器作為啟動處理器;根據(jù)對所述啟動處理器的隨機選擇,由所述多個處理器中的每個處理器選擇對于該處理器的密鑰值,其中只有所述啟動處理器選擇所述秘密密鑰作為其相應(yīng)的密鑰值,而所述多個處理器中的每個其他處理器選擇所述至少一個隨機密鑰值中的一個作為它們的相應(yīng)密鑰值;由所述啟動處理器從加密啟動代碼存儲器中接收加密的啟動代碼;由所述啟動處理器使用所述秘密密鑰值對所述加密的啟動代碼進行解密;以及執(zhí)行所述解密的啟動代碼,以由此將所述數(shù)據(jù)處理系統(tǒng)啟動到操作狀態(tài)。
2.根據(jù)權(quán)利要求1所述的方法,其中所述多個處理器的每個處理器接收所述秘密密鑰值和預(yù)定數(shù)目的隨機密鑰值,以及其中所述預(yù)定數(shù)目等于所述多個處理器中的處理器的數(shù)目。
3.根據(jù)權(quán)利要求2所述的方法,其中所述多個處理器中沒有被選擇作為所述啟動處理器的每個處理器選擇一個與所述至少一個隨機密鑰值不同的密鑰值。
4.根據(jù)權(quán)利要求1所述的方法,其中所述多個處理器中的每個處理器包括多路轉(zhuǎn)換器,所述秘密密鑰值和所述至少一個隨機密鑰值被提供作為到所述多個處理器中的每個處理器的多路轉(zhuǎn)換器的輸入,以及將一個選擇信號提供給所述多個處理器中的每個處理器的每個多路轉(zhuǎn)換器,其中輸入到處理器的多路轉(zhuǎn)換器的所述選擇信號具有關(guān)聯(lián)值,所述關(guān)聯(lián)值對應(yīng)于對于所述處理器的密鑰值的選擇。
5.根據(jù)權(quán)利要求1所述的方法,其中隨機選擇所述多個處理器中的一個處理器作為啟動處理器包括使用在所述數(shù)據(jù)處理系統(tǒng)的普適邏輯中提供的隨機事件發(fā)生器來產(chǎn)生隨機值;以及解碼所述隨機值,以從所述數(shù)據(jù)處理系統(tǒng)的所述多個處理器中標識一個處理器作為所述啟動處理器。
6.根據(jù)權(quán)利要求5所述的方法,其中所述隨機事件發(fā)生器包括線性反饋移位寄存器(LFSR)計數(shù)器以及耦合到所述LFSR的環(huán)形振蕩器,其中所述環(huán)形振蕩器提供到所述LFSR的輸入,以由此產(chǎn)生隨機值。
7.根據(jù)權(quán)利要求1所述的方法,其中所述至少一個隨機密鑰值包括多個隨機密鑰值,以及其中通過不同的隨機密鑰值發(fā)生器來生成所述多個隨機密鑰值中的每個隨機密鑰值。
8.根據(jù)權(quán)利要求1所述的方法,其中所述至少一個隨機密鑰值包括多個隨機密鑰值,以及其中通過相同的隨機密鑰值發(fā)生器生成所述多個隨機密鑰值中的每個隨機密鑰值。
9.根據(jù)權(quán)利要求1所述的方法,其中所述數(shù)據(jù)處理系統(tǒng)是異構(gòu)多處理器片上系統(tǒng),該異構(gòu)多處理器片上系統(tǒng)具有根據(jù)第一指令集進行操作的第一處理器以及一個或多個根據(jù)第二指令集進行操作的第二處理器,所述第二指令集不同于所述第一指令集。
10.根據(jù)權(quán)利要求9所述的方法,其中所述第一指令集是RISC指令集,而所述第二指令集是SIMD指令集。
11.一種數(shù)據(jù)處理系統(tǒng),包括多個處理器;與所述處理器耦合的普適邏輯;與所述多個處理器耦合的至少一個隨機密鑰發(fā)生器;與所述多個處理器耦合的加密啟動代碼存儲設(shè)備;以及與所述多個處理器耦合的秘密密鑰存儲器,其中所述多個處理器中的每個處理器從所述秘密密鑰存儲器接收秘密密鑰值;所述多個處理器中的每個處理器從所述至少一個隨機密鑰發(fā)生器接收至少一個隨機密鑰值;所述普適邏輯隨機選擇所述多個處理器中的一個處理器作為啟動處理器;所述多個處理器中的每個處理器根據(jù)對所述啟動處理器的隨機選擇,來選擇對于該處理器的密鑰值,其中只有所述啟動處理器選擇所述秘密密鑰作為其相應(yīng)的密鑰值,而所述多個處理器中的每個其他處理器選擇所述至少一個隨機密鑰值中的一個作為它們的相應(yīng)密鑰值;所述啟動處理器從所述加密啟動代碼存儲器接收加密的啟動代碼;所述啟動處理器使用所述秘密密鑰值對所述加密的啟動代碼進行解密;以及由所述啟動處理器執(zhí)行所述解密的啟動代碼,以由此將所述數(shù)據(jù)處理系統(tǒng)啟動到操作狀態(tài)。
12.根據(jù)權(quán)利要求11所述的系統(tǒng),其中所述多個處理器中的每個處理器接收所述秘密密鑰值和預(yù)定數(shù)目的隨機密鑰值,以及其中所述預(yù)定數(shù)目等于所述多個處理器中的處理器的數(shù)目。
13.根據(jù)權(quán)利要求12所述的系統(tǒng),其中所述多個處理器中沒有被選擇作為所述啟動處理器的每個處理器選擇一個與所述至少一個隨機密鑰值不同的密鑰值。
14.根據(jù)權(quán)利要求11所述的系統(tǒng),其中所述多個處理器中的每個處理器包括多路轉(zhuǎn)換器,所述秘密密鑰值和所述至少一個隨機密鑰值被提供作為到所述多個處理器中的每個處理器的多路轉(zhuǎn)換器的輸入,以及將一個選擇信號提供給所述多個處理器中的每個處理器的每個多路轉(zhuǎn)換器,其中輸入到處理器的多路轉(zhuǎn)換器的所述選擇信號具有關(guān)聯(lián)值,所述關(guān)聯(lián)值對應(yīng)于對于所述處理器的密鑰值的選擇。
15.根據(jù)權(quán)利要求11所述的系統(tǒng),其中所述普適邏輯包括隨機事件發(fā)生器和解碼器,以及其中所述普適邏輯通過以下動作隨機選擇所述多個處理器中的一個處理器作為啟動處理器使用所述隨機事件發(fā)生器產(chǎn)生隨機值;以及使用所述解碼器解碼所述隨機值,以從所述數(shù)據(jù)處理系統(tǒng)中的所述多個處理器中標識一個處理器作為所述啟動處理器。
16.根據(jù)權(quán)利要求15所述的系統(tǒng),其中所述隨機事件發(fā)生器包括線性反饋移位寄存器(LFSR)計數(shù)器以及與所述LFSR耦合的環(huán)形振蕩器,其中所述環(huán)形振蕩器提供到所述LFSR的輸入,以由此產(chǎn)生隨機值。
17.根據(jù)權(quán)利要求11所述的系統(tǒng),其中所述至少一個隨機密鑰值包括多個隨機密鑰值,以及其中通過不同的隨機密鑰值發(fā)生器來生成所述多個隨機密鑰值中的每個隨機密鑰值。
18.根據(jù)權(quán)利要求11所述的系統(tǒng),其中所述至少一個隨機密鑰值包括多個隨機密鑰值,以及其中通過相同的隨機密鑰值發(fā)生器生成所述多個隨機密鑰值中的每個隨機密鑰值。
19.根據(jù)權(quán)利要求11所述的系統(tǒng),其中所述數(shù)據(jù)處理系統(tǒng)是異構(gòu)多處理器片上系統(tǒng),該異構(gòu)多處理器片上系統(tǒng)具有根據(jù)第一指令集進行操作的第一處理器以及一個或多個根據(jù)第二指令集進行操作的第二處理器,所述第二指令集不同于所述第一指令集。
全文摘要
本發(fā)明提供一種用于根據(jù)將要提供給處理器的加密密鑰的選擇來啟動多處理器設(shè)備的系統(tǒng)和方法。利用該系統(tǒng)和方法,將安全性密鑰和一個或者多個隨機產(chǎn)生的密鑰值提供給多處理器設(shè)備的每個處理器的選擇器機制。在普適邏輯中提供隨機選擇機制,用戶隨機選擇一個處理器作為啟動處理器,以及由此將選擇信號提供給啟動處理器的選擇器,使得啟動處理器選擇安全性密鑰。所有其他處理器選擇所述一個或者多個隨機產(chǎn)生的密鑰值中的一個。作為結(jié)果,只有隨機選擇的啟動處理器能夠使用正確的安全性密鑰對啟動代碼進行解密,以供執(zhí)行。
文檔編號G06F9/445GK101086756SQ20071010556
公開日2007年12月12日 申請日期2007年5月25日 優(yōu)先權(quán)日2006年6月9日
發(fā)明者J·N·戴爾, J·J·德門特, C·M·奧尼爾, C·J·斯帕迪科 申請人:國際商業(yè)機器公司