訂更高的安全修訂的軟件組件的情況下,更新表的 存儲映像中的安全修訂號;和
[0035] ?在先前未裝載的新的受保護的軟件組件現(xiàn)在已被裝載且成功驗證的情況下,利 用新的條目(至少包含軟件組件標識符和安全修訂號)更新表的存儲映像。
[0036] 如果在開機過程期間變更防回滾表的存儲映像(通過更新軟件組件的安全修訂 號或者通過添加新的表條目),則必須將防回滾表的存儲映像保存到非易失性存儲器18、 22中。然而,盡管可操作W讀取閃存的驅動器可能是可用的,但是閃存寫入驅動器通常不被 裝載,直到開機過程接近尾端。因此,ISSW可在RAM36中設置標記,其指示當合適的軟件 組件已經被裝載時將要發(fā)生防回滾表的存儲映像被寫入非易失性存儲器18、22。如上文所 述,防回滾表的存儲映像連同完整性信息(例如使用在安全OTP存儲器40中存儲的密鑰生 成的HMAC-SHA-256)可被寫入非安全的、非易失性存儲器18中。在該種情況下,在OTP40 中也增大防回滾表的版本號,W排除再次使用裝載到存儲器中的防回滾表的(預修改)版 本。可替選地,使用RPMB22和安全加密電路38之間共享的設備專用密鑰(也可使用存儲 在安全OTP存儲器40中的密鑰生成該密鑰),可將防回滾表寫入eMMC20的安全RPMB塊 22中。
[0037] 如果ISSW不能夠讀取防回滾表,則開機過程不能進行。在開機失敗的情況下,在 授權服務中屯、中執(zhí)行設備的重新初始化。該可包含經由USB或者UART接口(未示出)的接 口開機,W使設備10刷新。如果啟動防回滾(例如,OTP位元在設備10生產期間被編程成 啟動軟件防回滾),且開機失敗的原因為丟失的或損壞的防回滾表,則針對特定的設備10 發(fā)布暫時性的、簽名的防回滾表,W允許該設備10開機。專用的存儲位置18被限定成用于 存儲暫時性防回滾表。暫時性防回滾表是當刷新設備時借助USB/UART下載的軟件映像的 一部分,且在從閃存18執(zhí)行開機的情況下也可被存儲在閃存18中。注意,服務中屯、必須從 OTP存儲器40獲得將要用在暫時性防回滾表中的表版本的值W及唯一的設備ID,且包括在 暫時性防回滾表的加密簽名中的該些參數(shù)值,如在下文中更詳細討論的。借助開機ROM代 碼或ISSW獲得該些參數(shù)。
[003引如果啟動防回滾且原始的防回滾表沒有成功被裝載和驗證,則ISSW請求具有簽 名的暫時性防回滾表的存儲條目(經由USB/UART或來自閃存18)。該表包含軟件組件的安 全修訂。使用可用在執(zhí)行重新初始化的服務中屯、處的私人密鑰,對暫時性防回滾表進行簽 名。用于驗證表的對應的公共密鑰是ISSW的一部分。簽名的暫時性防回滾表??谟糜诮o 定的設備10,且包含設備10的公共設備ID。在驗證期間,通過將設備10的公共設備ID與 簽名的表的公共設備ID匹配,來檢查簽名的暫時性防回滾表對于特定設備10有效。也針 對存儲在OTP存儲器40中的版本,對暫時性防回滾表的版本號進行檢查。
[0039] 如果該種簽名的暫時性防回滾表是可用的且由ISSW成功驗證,則該表被裝載到 RAM36中,且在開機期間將該表的存儲映像用作可操作的防回滾表。在安全RAM36中設 置狀態(tài)變量,其指示:當OS被啟動且對于非易失性存儲器18、22的寫入能力可用時,防回滾 表的該存儲映像應當被更新并被寫入非易失性存儲器18、22中作為替換防回滾表。在開機 期間W如上所述的相同方式進行對于防回滾表的存儲映像的任何更新。如果防回滾表被更 新(通過增大軟件組件的安全修訂號或者通過添加對于一個或多個軟件組件的表條目), 且替換的防回滾表被存儲到非安全存儲器18,則防回滾表的完整性(例如HMAC-SHA-256) 被重新計算且與該表一起被存儲,并增大該表的版本號且將OTP存儲器40內的位元翻轉W 反映增大的防回滾表的版本號,另外,在OTP40中,增大最小的暫時性表版本號W廢除該 暫時性表。可替選地,替換防回滾表可被存儲到RPMB22。在該種情況下,在OTP40中,也 增大最小的暫時性表版本號W廢除暫時性簽名表。
[0040] 注意,借助USB/UART的開機可W裝載閃速裝載器并使設備10刷新。如果該是存 儲防回滾表的情況,則裝載器可支持從可信執(zhí)行環(huán)境30請求防回滾表并將其寫入公共非 易失性存儲器18中(在該情況下,表被完整保護)。在表被存儲在RPMB22中的情況下, 裝載器必須能夠處理讀取和寫入RPMB分區(qū)22。當防回滾表在RPMB22中不可用時的假設 是,非易失性存儲設備已經被替換且RPMB22共享的密鑰需要被共享給新的存儲設備。該 需要認證。如果裝載器支持認證W及讀取和寫入RPMB分區(qū)22,則防回滾表可被修復。
[0041] 如果裝載器不支持處理防回滾和認證,則暫時性的、簽名的防回滾表必須也被存 儲在非易失性存儲器18中。它被用在來自非易失性存儲器18的下一次平臺開機中??扇?上所述進行使用簽名的表的相同驗證,但在該情況下,OS被啟動且功能可用于認證、RPMB 22密鑰共享、W及將替換防回滾表寫入非易失性存儲器18、22中。
[0042] 在設備10為具有處于閉式橋配置的調制解調器的無線電話的具體情況下,即, 調制解調器電路不具有閃存但連接至能夠訪問閃存18、20的CPU14的情況下,執(zhí)行經由 UART/USB/服1/服IC/C2C或某種其它接口的接口開機。完整的調制解調器軟件被存儲在非 易失性存儲器18、20中,非易失性存儲器18、20包括當使調制解調器軟件映像閃現(xiàn)時被置 入存儲器18、20中的暫時性的、簽名的防回滾表。防回滾方案與如上所述的針對設備10軟 件開機的情況的工作方式相同。調制解調器開機直到調制解調器OS運行,然后支持可用于 借助在富執(zhí)行環(huán)境12中可用的服務(和利用來自可信執(zhí)行環(huán)境30的密鑰)將替換防回滾 表寫入非易失性存儲器18中。
[0043] 當替換防回滾表被成功寫入時,刪除暫時性防回滾表。為了阻止攻擊者進行暫時 性防回滾表的任何重新安裝,表包含表版本號。需要被設備10接受的簽名的防回滾表的最 小版本被存儲在OTP存儲器40中。當暫時性防回滾表被刪除時,通過翻轉OTP40中的至 少一個位元而將所需的最小版本至少加一。當驗證簽名的防回滾表時,也檢查出表版本號 大于或等于存儲在OTP存儲器40中的最小防回滾表的版本號。該W相同的方式應用于全 部的上述配置中。如上文已提到的,對暫時性防回滾表的刪除和在OTP40中的位元翻轉直 到替換防回滾表成功被寫回到非易失性存儲器18、22中才會發(fā)生。因此,在替換防回滾表 成功被寫回到非易失性存儲器18、22之前中斷開機的情況下,暫時性防回滾表可被用在一 個W上的開機程序中,直到替換防回滾表被存儲。
[0044] 注意,如上所述,必須可W從設備10中提取在OTP存儲器40中存儲的防回滾表的 最小版本號W及唯一的設備ID。當在服務中屯、中創(chuàng)建暫時性防回滾表時,該是需要的。
[0045] 圖2和圖3分別示出在服務中屯、處創(chuàng)建暫時性防回滾表的方法50W及更新電子 設備10中的防回滾表的方法100。創(chuàng)建用于電子設備10的暫時性防回滾表的方法50開始 于從電子設備獲得唯一的設備ID和所需的防回滾表的最小版本號(框52)。生成暫時性 防回滾表(框54),其包括待進行防回滾驗證的全部安全軟件組件的標識W及對于各個該 種軟件組件的安全修訂號。優(yōu)選地,安全修訂號為各個對應的軟件組件的當前安全修訂號。 在一個實施方式中,全部的安全修訂號為零。在該實施方式中,當對應的軟件組件被裝載且 防回滾驗證過程發(fā)現(xiàn)它們的安全修訂號大于在暫時性防回滾表的存儲映像中的安全修訂 號時,暫時性防回滾表的存儲映像中的安全修訂號將被更新。使用私人密鑰、設備IDW及 所需的最小表版本號對暫時性防回滾表進行加密簽名(框56)。然后將暫時性防回滾表提 供給電子設備10 (框58)。
[0046] 圖3示出電子設備10進行恢復的方法100,其中,防回滾表丟失或損壞。在服務中 屯、處使設備10刷新,且重新開機(框102)。設備10然后可裝載第一安全軟件組件(ISSW) (框104),防回滾針對在OTP存儲器40中存儲的對應的安全修訂號驗證第一安全軟件組 件??商孢x地,開機ROM34代碼可包括所需的功能。該設備然后裝載和驗證具有版本號的 且已經被加密簽名的暫時性防回滾表(框106)。暫時性防回滾表包括對于多個軟件組件中 的每一個軟件組件可允許的最小安全修訂號。暫時性防回滾表可經由USB/UART接口進行 裝載,或者從閃存至非易失性存儲器18的軟件映像進行裝載。使用與僅服務中屯、已知的私 人密鑰相對應的公共密鑰對暫時性防回滾表進行加密驗證;設備ID(利用該設備ID對表進 行簽名)被驗證為匹配設備10的ID;W及暫時性防回滾表的版本號被驗證為至少與在OTP 存儲器40中的最小表版本號一樣大。
[0047] 對于待裝載的多個軟件組件中的每一個軟件組件,設備10將該軟件組件的安全 修訂號與在暫時性防