處理系統的制作方法
【專利摘要】公開了一種處理系統以及控制處理系統的處理單元對固件代碼進行訪問的方法。提出基于存儲器的第二區(qū)域中的有效性數據來識別存儲器的第一區(qū)域中存儲的有效密鑰,所述有效性數據指示密鑰是否是有效的。根據預定的驗證算法來處理固件代碼,以計算固件代碼的驗證值。解析所述驗證值和有效密鑰,以確定固件代碼是否是可信任的?;诠碳a是否被確定為可信任來控制處理單元對固件代碼的訪問。
【專利說明】
處理系統
【技術領域】
[0001]本發(fā)明涉及處理系統,更具體地,涉及處理系統的處理單元對處理系統存儲的固件的訪問進行控制。
【背景技術】
[0002]安全性是諸如微控制器等處理系統的重要考慮因素。例如,可能需要確保處理器僅執(zhí)行由可執(zhí)行程序代碼(或等同的指令集,例如腳本)描述的特定任務。然而代碼和/或代碼的執(zhí)行可能遭受攻擊。攻擊可以包括以下示例列表中的任何一個:
[0003]所存儲的程序代碼的未授權修改;
[0004]執(zhí)行期間的代碼修改;
[0005]代碼轉儲(例如,出于逆向工程目的來讀出代碼);
[0006]存儲器存取特權的未授權改變;
[0007]執(zhí)行來自數據段的未授權代碼。
[0008]典型地,固件(例如,基本輸入/輸出系統(B1S)代碼或核心系統軟件代碼)操作用于識別和初始化處理系統或電子設備的硬件子系統和組件。因此,第三方對固件的逆向工程可以提供對采用固件集成電路的系統的硬件架構的指示。此外,固件上的成功攻擊(如以上所列)可以使第三方能夠改變處理系統的操作,阻止處理系統正確操作,和/或向組件或其他系統/設備發(fā)送病毒。
[0009]已知使用基于硬件的安全性來保護固件,如,將固件存儲在非易失性存儲器(例如,只讀存儲器(R0M),使得無法在存儲器內修改該固件。然而這可能沒有提供足夠的保護來防止第三方訪問固件并解析固件以用于不期望的或未授權的用途。
[0010]已知在嵌入式設備上提供已知為“安全啟動(Secure Boot) ”的安全性特征,試圖確保處理器僅執(zhí)行由設備的發(fā)布者授權的固件。所述安全啟動過程采用密鑰來驗證固件的完整性。使用驗證算法來驗證固件的完整性,所述驗證算法執(zhí)行固件上的功能并檢查該功能相對于密鑰的輸出。如果驗證算法驗證了固件的完整性,則允許處理器執(zhí)行該固件。
[0011]因此,安全啟動構思嘗試例如在固件中沒有可利用缺陷的情況下相對于在重置之前發(fā)生的被動攻擊或軟件攻擊提供保護。為了符合安全性模型,安全啟動基于硬件中的信任根(root of trust)。
[0012]傳統的安全啟動構思具有以下缺點:
[0013]-固件驗證密鑰需要更大容量的一次可編程(OTP)存儲器:使用驗證密鑰需要更大容量的OTP存儲器和/或需要使用在低成本設備中甚至在軟件中不常用的密碼算法。例如,示例簽名可以需要2048比特密鑰來被看作在接下來的二三十年中是安全的。
[0014]-存在密鑰泄密的風險:即使基本密碼算法很強,密鑰仍然會由于例如固件更新期間的不適當保護和/或錯誤操縱而被泄密。因此安全啟動機制的魯棒性依賴于用于保護密鑰機密性的過程的魯棒性。如果密鑰被泄密,則可能無法阻止未授權的固件被執(zhí)行。
【發(fā)明內容】
[0015]根據本發(fā)明的實施例,提供了一種控制處理系統的處理單元對處理系統的存儲器所存儲的固件代碼的訪問的方法,所述方法包括以下步驟:基于存儲器的第二區(qū)域中的有效性數據來識別存儲器的第一區(qū)域中存儲的有效密鑰,所述有效性數據指示密鑰是否是有效的;根據預定的驗證算法來處理固件代碼,以計算固件代碼的驗證值;解析所述驗證值和有效密鑰,以確定固件代碼是否可信任;以及基于固件代碼是否被確定為可信任來控制處理單元對固件代碼的訪問。
[0016]因此,提出了一種控制對處理系統的固件代碼的訪問的構思。實施例可以采用多個密鑰,所述多個密鑰在片上系統內提供嵌入式的安全固件執(zhí)行。實施例因此可以限制或防止固件代碼的執(zhí)行。
[0017]在實施例中,如果確定固件代碼不是可信任的,則修改存儲器的第二區(qū)域的有效性數據,以指示所述密鑰不再有效。因此,可以檢測到泄密密鑰并采取預防措施以將泄密密鑰呈現為無效。
[0018]可以采用多個密鑰,使得在先前密鑰被泄密或超期之后可以使用新密鑰。相較于采用傳統安全性構思(如,安全啟動)的系統,這可以允許實施例長時間保持功能性和安全性。
[0019]存儲器的第二區(qū)域的有效性數據可以簡單地包括針對每個密鑰的指示該密鑰是否有效的標志或比特值。此外,存儲器的第二區(qū)域可以包括一次可編程存儲器,使得一旦有效性數據被修改過(例如,指示密鑰不是有效的)則該有效性數據就不能再被修改。這可以幫助防止有效性數據受到未授權修改。
[0020]在實施例中,可以確定有效密鑰是否是壽命終止密鑰,所述壽命終止密鑰指示存儲器的第一區(qū)域中不再存儲有有效密鑰。如果確定有效密鑰是壽命終止密鑰,則執(zhí)行預定的壽命終止算法。這樣,實施例可以采用解決所有密鑰都被泄密的情形的構思。壽命終止算法可以例如永久性禁用處理系統,使得不能再使用該處理系統。
[0021]在實施例中,存儲器的第一區(qū)域可以包括非易失性存儲器,存儲器的第二區(qū)域可以包括OTP存儲器。將OTP存儲器用于存儲器的第二區(qū)域可以使能僅一次修改有效性數據,以允許密鑰有效性從有效變?yōu)闊o效,此后不再改變。因此,可以使密鑰無效(假定在發(fā)布之后密鑰全都被標記為有效),但是然后不能在解除操作(例如,使已標記為“無效”的密鑰有效)。這可以幫助確保甚至在軟件攻擊的情況下密鑰也保持無效。
[0022]處理系統的可信任處理器可以包括R0M,使得使用基于硬件的安全性來保護所述ROM以防止被修改。
[0023]根據本發(fā)明的另一構思,提供了一種計算機程序產品,用于控制處理系統的處理單元對處理系統的存儲器所存儲的固件代碼的訪問。所述計算機程序產品可以包括計算機可讀存儲介質,所述計算機可讀存儲介質具有體現在其上的計算機可讀程序代碼,所述計算機可讀程序代碼配置為執(zhí)行根據本發(fā)明實施例的方法的所有步驟。
[0024]根據本發(fā)明的另一方面,提供了根據獨立權利要求11所述的一種處理系統。
[0025]系統可以適用于在確定固件代碼不是可信任的情況下修改第二存儲區(qū)域的數據使得密鑰不再有效。
[0026]在實施例中,系統可以適用于確定有效密鑰是否是壽命終止密鑰,所述壽命終止密鑰指示第一存儲區(qū)域中不再存儲有有效密鑰。如果確定有效密鑰是壽命終止密鑰,系統可以執(zhí)行預定的壽命終止算法。
[0027]處理系統可以是微控制器、微處理器、微芯片或處理平臺。因此,處理器可以是中央處理單元(CPU)或處理器核。
[0028]提出的實施例可以采用處理系統中典型存在的組件(全部通過通信總線/橋接器來連接的處理器單元或CPU、存儲器和外圍設備)。
【專利附圖】
【附圖說明】
[0029]現在將參考附圖僅通過示例來描述本發(fā)明的優(yōu)選實施例,附圖中:
[0030]圖1是示出了采用傳統安全啟動過程的處理系統的存儲區(qū)的示意框圖;
[0031]圖2是示出了根據實施例的處理系統的存儲區(qū)的示意框圖;
[0032]圖3示出了根據實施例的使密鑰無效的示例;
[0033]圖4是根據實施例的方法的流程圖;
[0034]圖5是根據另一實施例的方法的流程圖;以及
[0035]圖6是根據本發(fā)明實施例的系統的示意框圖。
【具體實施方式】
[0036]本文中,對固件代碼的引述應當被理解為意思是永久性存儲區(qū)與其中存儲的程序代碼和數據的組合,所述程序代碼和數據例如是處理系統的B1S代碼或核心系統軟件代碼,典型地被處理系統的制造商或供應商設置在非易失性存儲器中。固件代碼與應用代碼的區(qū)別在于應用代碼典型地設計用于除了由固件代碼提供的功能以外還實現更高級別的或補充的功能,應用代碼典型地是易失性存儲區(qū)上存儲的引導處理器執(zhí)行特定操作的機器可讀指令集(同行采用計算機程序的形式)。因此,固件代碼典型地永久性存儲在硬件中(具體地,存儲在非易失性存儲器中),而應用代碼典型地存儲在易失性或可編程存儲器中,因此能夠被修改。
[0037]另外,固件代碼由硬件實現方式繼承,獨立于其應用。固件代碼支持兩種不同類型的服務:低級別服務,包括通用接口控制處理和硬件提取層(注冊控制、電力管理等);以及安全私有功能,包括啟動序列、對于終端用戶保護的服務(例如,訪問限制)以及系統監(jiān)督。典型地對于終端用戶保護這種代碼(例如以防止未授權的修改)。
[0038]相反,應用代碼專用于處理系統的最終使用,獨立于硬件實現方案。通過重新使用底層級別的功能(固件代碼的一部分)可以開發(fā)任何應用代碼。
[0039]在下一節(jié)討論低成本嵌入式設備的情況,所述低成本嵌入式設備具有單個中央處理器(或CPU)、啟動只讀存儲(ROM)區(qū)以及一次可編程(OTP)存儲區(qū)。啟動ROM是初始硬件信任根。啟動ROM典型地包含在重置之后馬上由處理器執(zhí)行的引導程序(bootstrap)軟件。由于啟動程序軟件存儲于受保護以免被修改的ROM中,可以不需要驗證啟動程序軟件。OTP存儲器的作用類似于啟動R0M(例如,提供硬件信任根),但是OTP存儲器是可編程的(一次),因此制造商可以配置系統的選項或參數。除了 0ΤΡ,設備之間不再有任何區(qū)別,因此具有相同啟動ROM的所有CPU可以僅啟動同一個固件。OTP存儲器的種類可以取決于實際安全性模型。典型地,OTP存儲器僅支持一個反向的比特編程(例如,從I到0),并且通常在OTP存儲器中存在附加OTP鎖定標志,所述附加OTP鎖定標志防止在OTP已被編程之后在OTP中進一步寫入。任何軟件或硬件裝置都無法解除鎖定。
[0040]片上解決方案(例如,與CPU在相同管芯上或者至少在相同封裝內的ROM和0ΤΡ)可以比片下解決方案(例如,分離的離散組件)提供更好的保護,但是如果僅考慮軟件攻擊,這兩種解決方案是相同的。
[0041]現在參考圖1,首先提供了對啟動ROM 10中編程的傳統安全啟動過程的高級別描述。這種傳統的安全性方法依賴于:計算固件二進制代碼20的“摘要(digest) ” (或認證值),然后將該摘要與OTP 30中存儲的參考密鑰值相比較。為了提供顯著的保護,摘要函數優(yōu)選地是現有技術密碼單向函數(例如,所謂的密碼散列函數,如,SHA-1/2/3標準),使得:⑴找到給出完全相同的摘要值的兩個二進制值是極為困難的;并且(ii)給出摘要值以找到在散列之后給出相同值的二進制值是極為困難的。
[0042]相較于圖1描述的傳統安全啟動過程,提出的構思可以提供相同的靈活性,但是還可以允許在密鑰泄密的情況下反應。此外,相較于傳統安全啟動過程,提出的構思可以僅需要容量稍大的OTP存儲器。此外,提出的構思可以保持固件更新過程簡單,并且可以不需要附加的軟件接口。
[0043]圖2是示出了根據實施例的處理系統的存儲區(qū)的示意框圖。
[0044]提出的解決密鑰泄密的構思允許多個固件簽名密鑰。實施例可以允許這一點,同時最小化對OTP存儲器的影響。
[0045]提出在啟動序列中添加另一步驟。在第一步驟中,啟動ROM加載啟動加載器的代碼和數據,其中經由OTP中存儲的散列來保護啟動加載器的完整性。在第二步驟中,啟動加載器加載固件的代碼和數據,其中經由簽名來保護固件的完整性。這種兩步方法得益于基于散列的安全啟動的低硬件影響和最大安全保證,同時仍然允許由基于簽名的安全啟動提供的靈活性。
[0046]將啟動序列分成兩步可能不能解決密鑰泄密問題。為了解決該問題,提出在啟動加載器35中采用多個簽名驗證密鑰。這允許在認為先前密鑰被泄密或無效時發(fā)布以新密鑰來簽名的固件代碼。所有簽名驗證密鑰的完整性可以由OTP中的散列函數來保護,因為其覆蓋了整個啟動加載器35代碼和數據。因此,可以既無法篡改密鑰,也無法在設備/系統發(fā)布之后改變可信任的密鑰的集合。因此,對于一些實施例,系統制造商可以必須仔細選擇該系統終身受用的密鑰的數目。然而由于啟動加載器35和密鑰可以存儲在常規(guī)非易失性(NV)存儲器中,附加密鑰的成本可以是可忽略的。
[0047]當密鑰被泄密時,提供了一種告知啟動加載器35不使用該密鑰的方式。通過針對每個密鑰分派有效性比特40來實現這一點。在使用密鑰來驗證固件簽名之前,啟動加載器35首先從OTP讀取針對該密鑰的有效性比特40,并且僅在該有效性比特40標識為有效的情況下使用該密鑰。
[0048]通過在OTP中存儲有效性比特,可以使密鑰無效(假定在發(fā)布之后全都標記為有效),但是然后無法解除該操作(使已經標記為“無效”的密鑰有效)。這種機制的簡單性可以將OTP存儲器使用中的開銷減小至最小。
[0049]在實施例中,當啟動加載器35利用密鑰存儲器中的給定密鑰成功驗證了固件20簽名20a時,啟動加載器35可以在執(zhí)行該固件20之前將密鑰存儲器中的所有先前密鑰都標記為無效。因此,制造商可以容易地通過發(fā)布以密鑰存儲器中的下一個密鑰來簽名的新固件(或相同固件)來遠程地使密鑰無效。
[0050]注意,由于可以不更新啟動加載器35代碼,優(yōu)選地該代碼盡可能簡單以便減小找到可利用缺陷的機率。此外,為了防止拒絕服務(denial-of-service)攻擊,優(yōu)選地在執(zhí)行固件20之前,啟動加載器35鎖定對OTP存儲器的寫入訪問。這樣,即使某惡意軟件能夠通過開發(fā)獲得特權訪問,該惡意軟件也無法篡改有效性比特40。
[0051]在優(yōu)選實施例中,在運行新固件之前更新先前密鑰的有效性比特。在圖3中示出了這一點,圖3示出了根據實施例的使密鑰無效的示例。本文中,修改OTP的驗證數據,使得先前密鑰(密鑰I)的有效性比特改變成指示該密鑰無效的值(例如,邏輯O)。這可以幫助確保甚至在軟件攻擊的情況下密鑰也是無效的。
[0052]注意,現代固件更新過程通常包括恢復機制,所述恢復機制允許在新固件沒有正確啟動的情況下回到先前固件。通常的實現是在存儲器中保存先前固件的拷貝,如果檢測到問題則啟動該拷貝(當然這需要CPU重置)。提出的密鑰失效機制可以干擾該機制,因為啟動加載器不會再接受啟動先前固件。為了不降低密鑰失效機制的魯棒性,提出在使密鑰無效時使用與設備中當前加載的固件相同的固件。這僅僅在于更新設備中的簽名。如果固件也必須被更新,這應當分兩階段進行:首先使用下一個密鑰來更新簽名(保持相同的固件二進制值),然后更新簽名和固件兩者。
[0053]示例實施例的方法步驟可以概括為如下:
[0054]設置
[0055]i)產生新的啟動加載器代碼MBl
[0056]ii)產生η個私鑰/公鑰對的集合pairs {SKi; PKj (i = I…η)
[0057]iii)在啟動加載器代碼和密鑰存儲器上計算摘要ΗΒ? = HASH(Mbl)PK1 |…|PKn)
[0058]iv)將摘要寫入設備0ΤΡ,將啟動加載器代碼和密鑰存儲器M& IPK11…I PKn寫入設備NV存儲器
[0059]V)以嚴格的訪問控制將私鑰{SKJ保存在安全位置
[0060]vi)保存當前活躍私鑰的索引。令current = I。
[0061]密鑰泄密
[0062]如果密鑰SKi泄密則執(zhí)行該過程,其中j彡current ο
[0063]i)令 current = j+1
[0064]ii)計算固件簽名 Sfw = SIGNsk, current (Mfw)
[0065]注意,重新使用與設備中當前加載的固件相同的固件。
[0066]iii)將簽名Sfw寫入設備NV存儲器
[0067]固件寫入/更新
[0068]i)產生新固件Mfw
[0069]ii)計算固件簽名 Sfw = SIGNskj current (Mfw)。
[0070]iii)將固件Mfw和簽名Sfw寫入設備NV存儲器[0071 ] 啟動加載器啟動
[0072]i)重置CPU,并開始執(zhí)行位于啟動ROM中的程序。
[0073]ii)CPU讀取(未受保護的)非易失性存儲器中存儲的啟動加載器二進制值ΜΒ?,并使用安全的現有技術密碼散列函數在該固件二進制值上計算摘要H。
[0074]h = HASH(Mfw)
[0075]iii)如果h與參考摘要值H&相同,CPU執(zhí)行啟動加載器。否則,CPU完全暫停直到下一次重置。
[0076]多密鑰固件啟動
[0077]在圖4的流程圖中示出了該過程。
[0078]100)過程開始,檢查密鑰存儲器是否為空。如果密鑰存儲器為空,則啟動加載器立即加載并執(zhí)行200固件而不用驗證。這允許在部署過程中部署新固件。
[0079]102)如果密鑰存儲器不為空,CPU加載固件并檢查固件是否被簽名。如果固件沒有被簽名,則CPU完全暫停(例如,凍結)210直到下一次重置。
[0080]104)如果固件被簽名,則選擇下一個密鑰。
[0081]106)通過讀取OTP中存儲的有效性數據(例如,針對所選密鑰的相關有效性比特)來獲取與所選密鑰的有效性相關的信息。
[0082]108)基于讀取的有效性數據,確定所選密鑰是否有效。
[0083]110)如果確定密鑰不是有效的,則檢查是否存在更多密鑰。如果不存在要選擇的更多密鑰,則CPU完全暫停(例如,凍結)210直到下一次重置。然而,如果存在更多密鑰,則方法返回104以選擇下一個密鑰。因此,步驟104-110在密鑰存儲器中找到有效密鑰PKitl
[0084]112)在找到有效密鑰PKi之后,CPU從NV存儲器讀取固件簽名Sfw和固件二進制值,并嘗試驗證固件簽名
[0085]{0,1} — VERIFYpk, i (Mfw,Sfw)
[0086]114)基于讀取驗證步驟112,確定是否驗證了固件簽名。如果沒有驗證固件簽名,則過程返回步驟110以確定是否可以選擇另一密鑰并使用所述另一密鑰來進行驗證。如果驗證了固件簽名,則方法進行至步驟116。
[0087]116) CPU修改驗證數據以將所有先前密鑰的有效性比特設置為“無效”(僅當i >I時),然后執(zhí)行200非易失性存儲器中加載的固件。
[0088]處理壽命終止(Handlingend-of-life)
[0089]從以上描述可以看出,在啟動加載器中采用多個簽名驗證密鑰通過使泄密的密鑰無效并切換至另一密鑰而解決了密鑰泄密問題。然而仍然可能存在啟動加載器中的所有密鑰都泄密的問題。
[0090]無法改變預定的密鑰集合,優(yōu)選地可以采用在所有密鑰都被泄密的情形下永久性禁用系統的構思。這可以稱作是對系統壽命終止的處理。提出了用于處理壽命終止的兩個構思:
[0091]第一壽命終止構思——壽命終止固件
[0092]以上參考圖3和圖4描述的實施例不適于使啟動加載器密鑰存儲器中的最后一個密鑰無效。因此,提出通過在發(fā)布處理系統/設備之前采用永久性準備來解決壽命終止問題(而無需對標識啟動加載器過程做任何改變)。更具體地,提出的構思為啟動加載器密鑰存儲器中的最后一個密鑰賦予特殊用途。因此,相應的私鑰僅使用一次以簽名特殊的壽命終止固件,然后被永久性破壞。對于這樣的實施例,如果制造商想要遠程終止系統/設備,簡單地將壽命終止固件與簽名一起發(fā)送至系統/設備。由于密鑰不再可用,不存在密鑰泄密的風險,并且沒有辦法用另一固件來更新設備。
[0093]注意,該方法需要更新固件和驗證密鑰兩者,這典型地優(yōu)選是要避免的。然而對于這樣的實施例而言這是可接受的,因為目的是無論如何要終止系統/設備。
[0094]例如,壽命終止固件可以顯示警告消息,所述警告消息聲明不再能夠使用該設備并且用戶必須聯系設備賣主或制造商以便更換。固件還可以刪除敏感數據、向發(fā)布者主機發(fā)送確認等等。
[0095]可以如下概括采用這種壽命終止構思的示例實施例的方法步驟(其中其他過程沒有改變)。
[0096]設置——壽命終止
[0097]i)產生壽命終止私鑰/公鑰對{SKEQl,PKeolI
[0098]ii)產生壽命終止固件Mew,eol
[00"] iii)計算固件簽名 SFW,EQL = SignSKjE0L(MpffjE0L).
[0100]iv)破壞壽命終止私鑰SKm
[0101]V)添加壽命終止公鑰作為啟動加載器密鑰存儲器中的最后一個密鑰(這是在計算啟動加載器散列之前進行的)。
[0102]vi)以嚴格的訪問控制將壽命終止簽名存儲在安全位置。也存儲壽命終止固件,但是不需要超出防止刪除和修改以外的嚴格訪問控制。
[0103]終止設備
[0104]i)將壽命終止固件Mfw,和簽名Sfm寫入設備NV存儲器。
[0105]可以優(yōu)選地采取一些防范以避免拒絕服務攻擊。
[0106]由于可以不加密壽命終止固件和簽名,因此如果惡意用戶能夠訪問終止的設備,則該惡意用戶可以容易地讀取所述壽命終止固件和簽名。如果該用戶進行管理以將該固件發(fā)送或寫入在密鑰存儲器中具有相同壽命終止驗證密鑰的其他設備,則該用戶可以不經發(fā)布者同意就終止這些設備。提出的解決該問題的構思是針對每個系統/設備產生唯一的壽命終止密鑰對和簽名。每個系統/設備然后可以具有其自己的壽命終止驗證密鑰的版本。在產生之后,將優(yōu)選地以嚴格的訪問控制將每個設備的壽命終止簽名保存在安全位置。
[0107]注意,壽命終止固件可以對于所有系統/設備而言是相同的。在這種情況下,每當制造商/發(fā)布者希望終止系統/設備時,將會把一般壽命終止固件與對應于該具體系統/設備的壽命終止簽名一起發(fā)送/寫入。
[0108]第二壽命終止構思——立即壽命終止
[0109]備選構思可以采用對參考圖4描述的啟動加載器過程的修改。如上述第一壽命終止構思一樣,第二構思為密鑰存儲器中的最后一個密鑰賦予特殊用途。然而在該第二構思中,當啟動加載器使用密鑰存儲器中的最后一個密鑰成功驗證了新固件時,將會立即使密鑰存儲器中的所有密鑰無效,然后進入無限凍結循環(huán)。因此從不執(zhí)行新固件。
[0110]在圖5的流程圖中描述了這種修改后的啟動加載器過程。將會看出,修改后的啟動加載器過程與圖4所示的啟動加載器過程的區(qū)別僅在于在將先前密鑰標記為無效的步驟116之后包括附加步驟(步驟118和120)。
[0111]更具體地,在修改驗證數據以將所有先前密鑰PIV^PKh的有效性比特設置為“無效”(僅當i > I時)的步驟116之后,執(zhí)行步驟118,在步驟118中檢查密鑰是否是密鑰存儲器中的最后一個密鑰。如果在步驟118確定該密鑰不適密鑰存儲器中的最后一個密鑰,則方法簡單地進行至步驟200,在步驟200執(zhí)行加載到非易失性存儲器中的固件。
[0112]然而如果在步驟118確定密鑰是密鑰存儲器中的最后一個密鑰,則方法進行至步驟120,在步驟120,(通過合適地修改驗證數據)使密鑰存儲器中的所有密鑰無效。在使所有密鑰無效之后,方法進行至步驟210,在步驟210CPU完全暫停(例如,凍結)。
[0113]現在參考圖6,示出了根據本發(fā)明實施例的處理系統的示意框圖。系統包括與通信總線204相連的處理器單元或CPU202。還與通信總線204相連的是易失性存儲器單元206、非易失性存儲器單元208、外圍設備210和ROM單元212。
[0114]本文中,ROM單元212存儲:用于啟動/初始化系統200的固件啟動代碼序列;在第三方應用執(zhí)行期間要保護的安全固件代碼;以及服務實現方式獲得的制造商內部固件。
[0115]易失性存儲器206包括隨機存取存儲器(RAM)單元206a和一次可編程存儲器206b,如閃存或EEPROM。RAM單元206a用于存儲在啟動代碼執(zhí)行或應用代碼執(zhí)行期間由CPU 202使用的數據。一次可編程存儲器206b適于存儲用于驗證密鑰有效性的散列函數和驗證數據。一次可編程存儲器206b還可以存儲固件代碼(如果沒有位于ROM單元208中的話)。
[0116]非易失性存儲器208適于存儲處理系統200的啟動加載器代碼、一個或多個密鑰、固件代碼以及文件系統。因此將理解,與傳統處理系統不同,圖6的系統200適于采用與圖2所示的存儲區(qū)類似的存儲區(qū),其中在非易失性存儲器中存儲多個密鑰,在一次可編程存儲器中存儲表示密鑰有效性的驗證數據。
[0117]實施例可以在用于在例如個人計算機或網絡服務器等計算機的處理器上執(zhí)行的計算機程序產品中實現,如果在計算機上執(zhí)行所述計算機程序產品,所述計算機程序產品使計算機實現根據實施例的方法的步驟。由于將這些步驟實現為計算機程序產品僅需要本領域技術人員的慣用技術,為了簡明起見以下將不再詳細論述。
[0118]在實施例中,將計算機程序產品存儲在計算機可讀介質中??梢钥紤]任意合適的計算機可讀介質,例如,CD-ROM、DVD、USB棒、存儲卡、網絡區(qū)域存儲設備、互聯網可訪問數據倉庫等等。
[0119]通過閱讀附圖、說明書和所附權利要求,實踐要求保護的發(fā)明的本領域技術人員可以理解并實現所公開的實施例的其他變型。在權利要求中,詞語“包括”不排除其他元件或步驟,“一種”不排除多個。單個處理器或其他單元可以實現權利要求中所列若干項功能。在互不相同的從屬權利要求中闡述特定的措施并不表明不能有利地使用這些措施的組合。計算機程序可以存儲/分布于合適的介質上,如,與其他硬件一起或作為其他硬件的一部分提供的光學存儲介質或固態(tài)介質,但是也可以以其他形式分布,如,經由互聯網或其他有線或無線通訊系統。權利要求中的任何參考標記不應看作是對范圍的限制。
【權利要求】
1.一種控制處理系統的處理單元對處理系統的存儲器所存儲的固件代碼的訪問的方法,所述方法包括以下步驟: 基于存儲器的第二區(qū)域中的有效性數據來識別存儲器的第一區(qū)域中存儲的有效密鑰,所述有效性數據指示密鑰是否是有效的; 根據預定的驗證算法來處理固件代碼,以計算固件代碼的驗證值; 解析所述驗證值和有效密鑰,以確定固件代碼是否可信任;以及 基于固件代碼是否被確定為可信任來控制處理單元對固件代碼的訪問。
2.根據權利要求1所述的方法,還包括以下步驟: 如果確定固件代碼不是可信任的,則修改存儲器的第二區(qū)域的有效性數據,以指示所述密鑰不再有效。
3.根據權利要求1或2所述的方法,其中,確定有效密鑰的步驟包括: 標識存儲器的第一區(qū)域中存儲的第一密鑰; 通過查閱存儲器的第二區(qū)域的有效性數據來確定第一密鑰是否有效;以及 如果確定第一密鑰有效,則將第一密鑰標識為有效密鑰。
4.根據權利要求3所述的方法,其中,確定有效密鑰的步驟包括: 如果確定第一密鑰不是有效的,則標識存儲器的第一區(qū)域中存儲的第二密鑰; 通過查閱存儲器的第二區(qū)域的有效性數據來確定第二密鑰是否有效;以及 如果確定第二密鑰有效,則將第二密鑰標識為有效密鑰。
5.根據權利要求4所述的方法,還包括以下步驟: 如果確定第二密鑰有效,則修改存儲器的第二區(qū)域的數據以指示第一密鑰不是有效的。
6.根據權利要求3、4或5所述的方法,其中,有效性數據包括指示密鑰是否有效的標志或比特值。
7.根據前述任一項權利要求所述的方法,還包括: 確定有效密鑰是否是壽命終止密鑰,所述壽命終止密鑰指示存儲器的第一區(qū)域中不再存儲有有效密鑰;以及 如果確定有效密鑰是壽命終止密鑰,則執(zhí)行預定的壽命終止算法。
8.根據前述任一項權利要求所述的方法,其中,存儲器的第一區(qū)域包括非易失性存儲器,存儲器的第二區(qū)域包括一次可編程存儲器。
9.根據前述任一項權利要求所述的方法,還包括以下在前步驟: 將來自可信任存儲器的程序代碼加載到存儲器的第一區(qū)域; 根據預定的認證算法處理所述程序代碼以確定程序代碼是否可信任;以及 基于程序代碼是否被確定為可信任,控制處理單元對程序代碼的訪問。
10.根據權利要求9所述的方法,其中,可信任存儲器包括只讀存儲器。
11.一種計算機程序產品,用于控制處理系統的處理單元對處理系統的存儲器所存儲的固件代碼的訪問,所述計算機程序產品包括計算機可讀存儲介質,所述計算機可讀存儲介質具有體現在其上的計算機可讀程序代碼,所述計算機可讀程序代碼配置為執(zhí)行前述任一項權利要求的所有步驟。
12.—種處理系統,包括: 處理單元; 存儲器,適用于存儲固件代碼,所述存儲器包括適用于存儲一個或多個密鑰的第一存儲區(qū)域以及適用于存儲指示密鑰是否有效的有效性數據的第二存儲區(qū)域; 密鑰有效性單元,適用于基于第二存儲區(qū)域的有效性數據來標識第一存儲區(qū)域中存儲的有效密鑰; 驗證單元,適用于根據預定的驗證算法處理固件代碼以計算固件代碼的驗證值; 認證單元,適用于解析驗證值和有效密鑰以確定固件代碼是否可信任;以及 訪問控制單元,適用于基于固件代碼是否被確定為可信任來控制處理單元對固件代碼的訪問。
13.根據權利要求12所述的系統,其中,所述系統適用于在確定固件代碼不是可信任情況下修改第二存儲區(qū)域的數據以指示密鑰不再有效。
14.根據權利要求12或13所述的系統,其中,密鑰有效性單元適用于標識第一存儲區(qū)域中存儲的第一密鑰,以通過查閱第二存儲區(qū)域的有效性數據來確定第一密鑰是否有效,以及如果確定第一密鑰有效,則將第一密鑰標識為有效密鑰;并且 密鑰有效性單元還適用于如果確定第一密鑰不是有效的則標識第一存儲區(qū)域中存儲的第二密鑰,通過查閱第二存儲區(qū)域的有效性數據來確定第二密鑰是否有效,以及如果確定第二密鑰有效,則將第二密鑰標識為有效密鑰。
15.根據權利要求12至14中任一項權利要求所述的系統,其中,所述系統適用于確定有效密鑰是否是壽命終止密鑰,以及如果確定有效密鑰是壽命終止密鑰,則執(zhí)行預定的壽命終止算法,其中所述壽命終止密鑰指示第一存儲區(qū)域中不再存儲有有效密鑰。
【文檔編號】G06F21/57GK104424441SQ201410412509
【公開日】2015年3月18日 申請日期:2014年8月20日 優(yōu)先權日:2013年8月21日
【發(fā)明者】麥克爾·麥克·派德里克·皮德斯, 克勞德·德巴, 勞倫·杰拉德 申請人:恩智浦有限公司