硬件和軟件關聯和認證的制作方法
【專利摘要】通過在啟動時間時從外部存儲器加載安全代碼并且使用認證密鑰對程序代碼進行認證來完成硬件和軟件的認證和關聯。當認證了該安全代碼后,可以獲得對全硬件和軟件功能性的訪問。然而,如果安全代碼的認證失敗,則執行向硬件和軟件資源提供受限功能性的不安全代碼。
【專利說明】硬件和軟件關聯和認證
[0001] 相關申請的奪叉引用
[0002] 本申請是2012年3月22日(22. 03. 2012)提交的美國SN13/427, 148的繼續申請 并要求保護其優先權,該申請的整體教導通過引用結合于此。
【技術領域】
【背景技術】
[0003] 裝置克隆和未經授權的產品生產會對公司的收入和品牌資產造成損失。此類克隆 活動影響原始設備制造商(OEM)的研究和開發,從而以更低的成本提供相似和具有競爭力 的產品。自然,這給OEM的利潤和品牌資產造成重大損失。例如,依賴盜取的硬件設計和克 隆系統的非品牌系統(其通常構建質量較低)可以用于以減低的成本與OEM進行競爭。此 類克隆系統的制造商還經常從原始產品復制軟件并以非常低的成本提供完整的系統(例 如,非品牌服務器和路由器)。
[0004] 除了利潤損失以外,未經授權的產品生產會引起OEM的商業模式的中斷。例如,黑 客可以改變現有系統的功能性,從而運轉和執行使OEM的商業模式中斷的非預期功能。進 一步地,承包商會過度構建OEM的訂單以外的設備并且用同一品牌但更低的價格銷售未經 授權的設備,并且沒有給OEM帶來收入。
[0005] 可信計算組織(TCG)是一個包括組件供應商、軟件開發商、系統供應商以及網絡 和基礎設施公司的行業組織,該組織開發和支持用于跨多個平臺類型的可信計算的開放行 業規范。TCG定義了存儲密鑰、密碼和數字證書的微控制器的可信平臺模塊(TPM)規范。通 過安全TCG子系統保護安全工藝(如數字簽名和密鑰交換)。如果啟動順序不是和預期的 一樣,則會拒絕對平臺中的數據和秘密的訪問。由此使如安全電子郵件、安全網絡訪問和本 地數據保護等關鍵應用和能力更加安全得多。TPM不能夠控制被執行的軟件。TCG子系統通 過存儲和報告運行時間之前的配置信息可以僅充當更高級服務和應用的'從屬(slave)'。 其他應用確定用此信息來完成什么。TCG構建塊從不可以控制系統或報告正在運行的應用 的狀態。
【發明內容】
[0006] 本發明的不例實施例中的一種方法和相應的裝置通過在啟動時間時從一個外部 存儲器加載一個安全代碼以及使用一個與設備相關聯的認證密鑰對該安全代碼進行認證 并且在該安全代碼的認證失敗的情況下執行一個不安全代碼來認證該安全代碼并使其與 該設備相關聯。
[0007] 在某些實施例中,該外部存儲器可以是不安全存儲器、可重編程閃速存儲器、或只 讀存儲器(ROM)中的至少一個。
[0008] 在某些實施例中,該安全代碼可以存儲在該設備的一個內部存儲器中。可以使用 來自一個ROM的多個指令存儲該安全代碼。在認證了該安全代碼的情況下,可以執行該安 全代碼。在某些實施例中,在認證了該安全代碼的情況下,可以執行來自該內部存儲器的該 安全代碼。在某些實施例中,在認證了該安全代碼的情況下,可以進一步認證該安全代碼的 執行觸發的多個程序。
[0009] 在某些實施例中,可以使用來自一個ROM的多個指令將該安全代碼復制到一個安 全內部可寫存儲器中。該安全內部可寫存儲器可以是一個高速緩沖存儲器的一個分區,并 且可以被安排成用于執行該安全代碼。在某些實施例中,該安全代碼可以是未加密的。
[0010] 在某些實施例中,一個高速緩沖存儲器可以被分區成包括該內部存儲器。該內部 存儲器可以位于該高速緩沖存儲器內的一個地址處并且具有一個動態可變的容量。
[0011] 在某些實施例中,可以使用該安全代碼從該外部存儲器加載與該設備相關聯的多 個安全密鑰。這些安全密鑰可以包括裝置認證密鑰、冗余裝置認證密鑰、芯片加密密鑰、圖 像認證密鑰、存儲器保護密鑰、以及安全存儲密鑰中的至少一項。這些安全密鑰可以是未加 密的或加密的。可以使用該安全代碼對這些安全密鑰進行認證。在某些實施例中,該安全 代碼可以用于確定對這些安全密鑰的更新是否可用。在某些實施例中,可以使用一個更新 代碼對這些安全密鑰進行更新。在某些實施例中,可以使用該安全代碼將這些安全密鑰與 一個秘密密鑰進行比較,并且在該比較失敗的情況下,發出一個出錯指示。
[0012] 在某些實施例中,一個安全最早啟動代碼認證器是該認證密鑰和該安全代碼的一 個函數,該認證密鑰是一個與該設備相關聯的主認證密鑰(MAK)的一個函數。該認證密鑰 可以是加密的。在某些實施例中,可以從該安全內部可寫存儲器執行該安全最早啟動代碼。 在某些實施例中,可以對該認證密鑰進行認證,并且在該認證失敗的情況下,可以根據一個 合適的出錯指示執行該不安全代碼。
[0013] 在某些實施例中,在該安全代碼的認證失敗的情況下,可以生成一個出錯信號。
[0014] 在某些實施例中,可以執行來自該內部存儲器和該外部存儲器中的至少一個的該 不安全代碼。該不安全代碼可以包括受限功能性。在某些實施例中,具有受限功能性可以 包括具有對該設備的結構的受限訪問。在某些實施例中,具有受限功能性可以包括具有對 該設備上存儲的軟件的受限訪問。某些實施例可以在一段預先確定的時期中提供該受限功 能性。該不安全代碼可以是未加密的并且是可改變的。
[0015] 在某些實施例中,將該認證密鑰確定為該設備相關聯的一個主認證密鑰(MAK)的 一個函數。在某些實施例中,該認證密鑰可以是一個高級加密標準(AES)密鑰。在某些實 施例中,該安全代碼包括一個認證器。該認證器可以是該認證密鑰的一個函數。
[0016] 在某些實施例中,該設備可以是網絡處理器、通用處理器片上系統、以及主板中的 至少一項。
【專利附圖】
【附圖說明】
[0017] 根據本發明的示例性實施例的以下更具體的說明,上述內容將是明顯的,如在這 些附圖中展示的,其中貫穿這些不同的視圖的相同的參照字符是指相同的部分。這些圖不 一定是按比例繪制,而是著重展示本發明的實施例。
[0018] 圖1展示了根據本發明的實施例的安全軟件和硬件關聯(SSHA)電路的框圖。
[0019] 圖2展示了安全密鑰的高級框圖。
[0020] 圖3為可以用某些實施例執行的程序的流程圖。
【具體實施方式】
[0021] 以下是對本發明的示例性實施例的說明。
[0022] 圖1展示了可以與本發明的實施例一起使用的安全軟件和硬件關聯(SSHA)電路 100的示例實施例的框圖。該SSHA支持兩種能力:
[0023] ?原始設備制造商(OEM)硬件將僅運行OEM軟件;以及
[0024] · OEM軟件將僅在OEM硬件上運行。
[0025] 如所示,SSHA電路100包括一個耦合到具有內部存儲器220的處理器100上的外 部存儲器210。外部存儲器210可以是不安全存儲器、可重編程閃速存儲器、或只讀存儲器 (ROM)。外部存儲器210可以包括安全存儲器270、不安全存儲器280、或受保護存儲器290。
[0026] 內部存儲器220可以是片上指令存儲器,如只讀存儲器(ROM)。內部存儲器220經 常保持有安全軟件和硬件關聯功能的實現所需的功能。內部存儲器220中所保持的信息可 以是加密的或未加密的。然而,不管加密與否,由于內部存儲器220在芯片上,其完全安全 并且被保護免受芯片外對手影響。
[0027] 在啟動時間時,內部存儲器220中所存儲的指令從外部存儲器210加載安全最早 啟動代碼273-C。安全最早啟動代碼273-C可以是啟動代碼或應用軟件。通過安全最早啟 動代碼認證器273-A使用認證密鑰(未示出)對安全最早啟動代碼273-C進行認證。安全 最早啟動代碼認證器237-A使用安全最早啟動代碼273-C的功能和主AES密鑰(MAK) 340。 例如,認證密鑰可以是將MAK 340當作AES密鑰使用的AES-CBC MAC (消息認證代碼)。MAK 340對每個處理器100而言是唯一的,并且,如安全最早啟動認證器273-A對每個處理器 100而言也是唯一的。
[0028] 安全存儲器270是外部存儲器210中的最安全的區域并且除了用于稍后啟動階段 的密鑰和用于對這些密鑰進行更新的代碼以外還存儲了最早啟動代碼。MAK 340通常用于 保護安全存儲器270和保護安全存儲器270中所存儲的代碼的執行。在一個實施例中,稍 后啟動階段不使用MAK。受保護存儲器290存儲稍后啟動階段和用戶代碼。受保護存儲器 290通常由安全密鑰保護。不安全存儲器280存儲在許多實施例中不受任何密鑰保護的代 碼。
[0029] 在某些實施例中,可以通過內部存儲器220使用從外部安全存儲器270檢索認證 器273-A并使用MAK 340對處理器100的安全最早啟動代碼273-C進行認證的代碼認證單 元(CAU)201來對安全最早啟動代碼273-C進行認證。CAU 201可以是可編程邏輯。
[0030] -旦被認證,安全最早啟動代碼273-C可以存儲在設備的內部存儲器220內。然 而,如果安全最早啟動代碼273-C的認證失敗,則內部存儲器指令根據合適的出錯指示執 行來自外部存儲器210的不安全存儲器280部分的不安全代碼281。不安全代碼281 -般 以受限特權來執行。
[0031] 安全存儲器270進一步包括對用于認證、加密、以及完整性的信息和密鑰進行認 證的安全密鑰認證器271-A (下文中通常稱為安全密鑰271-C)。安全密鑰認證器271-A還 可以存儲用于執行認證操作的認證參數320 (稍后參照圖2示出)。
[0032] 安全存儲器270可以進一步包括安全密鑰更新代碼認證器272-A。安全密鑰更新 代碼認證器272-A可以用于對用于更新安全密鑰271-C的信息(下文中通常稱為安全密鑰 更新代碼272-C)進行認證。安全密鑰更新代碼272-C還可以更新安全密鑰更新代碼272-C 和/或安全最早啟動代碼273-C。安全密鑰更新代碼272-C可以通過使用從外部存儲器210 獲得的信息進一步確定何時以及如何執行對安全密鑰的更新。在某些實施例中,可以使用 MAK 340 (稍后參照圖2進行描述)或通過其他認證密鑰對更新代碼認證器進行認證。
[0033] 安全密鑰更新代碼272-C通常以完全特權運行并且可以訪問MAK。如此,必須對安 全密鑰更新代碼272-C進行認證并且還可以對其進行加密。一旦被認證,安全密鑰更新代 碼272-C可以被授予其完全特權。然而,如果沒有被認證(即,如果存在錯誤和/或認證失 敗),則可以根據合適的出錯指示執行來自不安全存儲器281的不安全代碼281。在此類實 例中,不安全代碼281可以用受限特權運行和/或運行一段有限時期。
[0034] 外部存儲器210的受保護存儲器290部分可以包括用于對受保護初始啟動(PIB) 代碼291-C進行認證的(PIB)代碼認證器291-A。安全最早啟動代碼273-C和/或安全密 鑰更新代碼272-C可以用于對安全密鑰271-C進行認證。正常地在成功認證安全代碼以后 執行(PIB)代碼291-C。
[0035] 在某些實施例中,(PIB)代碼291-C初始地用盡處理器100的安全內部可寫存儲 器230區段。(PIB)代碼291-C具有受限功能性并且需要后續啟動階段來啟動處理器100。 關于后續啟動階段(稍后啟動階段代碼292-C)的信息可以存儲在受保護存儲器290內并 且使用稍后啟動階段代碼認證器292-A來認證。進一步地,在某些實施例中,可以通過處理 器100的動態隨機存取存儲器(DRAM,未示出)部分來認證后續啟動階段。
[0036] 在某些實施例中,存儲在處理器100內的R0MEN啟動字段在啟動時用于確定處理 器100是否應執行SSHA啟動。在一個實施例中,R0MEN啟動字段是一個位或其他布爾表示。 當執行安全軟件和硬件關聯時,R0MEN啟動字段被設置成1、或"被設置",其訪問內部存儲 器220。換言之,當R0MEN啟動字段被設置成1時,使能處理器的SSHA啟動。在所有其他情 況下,R0MEN啟動字段被設置成零,或者"未被設置"。當R0MEN啟動字段被設置成零時,處 理器100通過訪問外部存儲器210來啟動。在啟動以使能對內部存儲器220的訪問之前通 過硬件設置R0MEN啟動字段。當R0MEN啟動字段被設置成1時,在處理器100充分發揮功 能并且發起在此描述的安全軟件和硬件關聯程序之前,內部存儲器220運行。確切地,在處 理器100的標準啟動位置內的物理地址處使能內部存儲器220,并且當設置R0MEN啟動字段 (即,設置成1)時,處理器100執行內部存儲器220中所包括的指令。
[0037] 在某些實施例中,該受保護存儲器可以包括可以用于執行進一步認證和硬件-軟 件關聯的一般用戶代碼293-C。在一個實施例中,一般用戶代碼293-C包括不只一條代碼。 一般用戶代碼認證器293-A可以用于對一般用戶代碼293-C進行認證。在一個實施例中, 一般用戶代碼認證器293-A包括不只一個認證器。然而,在許多實施例中,一般用戶代碼 293-C用于執行用戶的任務。
[0038] 內部存儲器220中所存儲的指令通常為在啟動時間時執行的第一指令。這些內 部存儲器指令的主要功能是一旦安全最早啟動代碼273-C被認證就對其進行存儲、加載和 /或執行。然而,在加載和執行安全最早啟動代碼273-C之前,這些內部存儲器指令創建保 持安全最早啟動代碼273-C的片上安全內部可寫存儲器230。可以通過對高速緩沖存儲器 (未示出)進行分區來創建片上安全內部可寫存儲器230,從而使得片上安全內部可寫存儲 器230位于該高速緩沖存儲器內的一個地址處并且具有動態可變的容量。在某些實施例 中,片上安全內部可寫存儲器230可以位于2級高速緩沖存儲器(未示出)內。
[0039] 片上安全內部可寫存儲器230可以用于執行早期啟動功能,包括在處理器初始化 之前保持和執行安全最早啟動代碼273-C。片上安全內部可寫存儲器230位于芯片上,并且 如此,是安全的并且被保護免受外部對手影響。除了保持和執行安全最早啟動代碼273-C 以外,片上安全內部可寫存儲器230可以用于使用安全最早啟動代碼273-C從外部存儲器 210加載安全密鑰271-C。
[0040] 在某些實施例中,片上安全內部可寫存儲器230可以用于存儲認證密鑰。如之前 指出的,由于片上安全內部可寫存儲器230在芯片上,防護其免受外部對手影響。相應地, 片上安全內部可寫存儲器230可以用于安全地存儲認證密鑰245。認證密鑰245可以用加 密或未加密格式存儲在片上安全內部可寫存儲器230上。
[0041] 圖2展示了安全密鑰271-C的高級框圖。安全密鑰271-C存儲用于認證、加密、和 完整性330的信息和密鑰。安全密鑰271-C還可以存儲用于執行認證操作的認證參數320。
[0042] 可以使用用于存儲安全密鑰271-C的不同加密鑰模式301或選項。例如,可以使用 將安全密鑰271-C存儲在SSHA使能的裝置(未示出,例如,硅裝置)內的直接加密鑰模式。 在一個優選實施例中,可以使用間接加密鑰模式。間接加密鑰模式可以將安全密鑰271-C 作為二值圖像的一部分來存儲。在某些實施例中,安全密鑰271-C可以存儲在SSHA使能的 裝置(例如,附接到SSHA使能的裝置上的閃存裝置)外部。
[0043] 在某些實施例中,安全密鑰271-C可以存儲在安全內部可寫存儲器230內。鑒于安 全內部可寫存儲器230是安全的,可以用或者未加密或者加密的格式存儲安全密鑰271-C 及其加密鑰模式301。在某些實施例中,安全密鑰271-C可以存儲在外部存儲器210的安全 存儲器270部分內。
[0044] 可以通過每個SSHA使能的裝置的唯一高級加密標準(AES)密鑰來對安全密鑰 271-C的內容進行加密。例如,唯一 AES 256位密鑰(如MAK 340)可以用于對安全密鑰 271-C進行加密。因此,MAK340通常不存儲在安全密鑰271-C內。
[0045] 在某些實施例中,通過硬件生成MAK 340 (圖1)。MAK 340可以是密值和芯片ID 362的一個函數。芯片ID 362可以是可讀的,但該密值不可以被軟件讀取。
[0046] 在某些實施例中,在SSHA使能的裝置的制造過程中可以選擇MAK 340 (圖1)加密 鑰模式并將其安裝在SSHA使能的裝置內。未披露MAK 340 (圖1)并且任何人不可對其進 行訪問。在某些實施例中,MAK 340(圖1)可以被設計成使得其不能被讀出或被改變。進 一步地,MAK 340(圖1)可以針對任何具有根據本發明的實施例的密碼關聯機構的給定裝 置保持相同并且可以用作在安全密鑰271-C與該裝置之間建立關系的基礎。
[0047] 在某些實施例中,可以使用其他安全密鑰認證加密鑰模式。此類安全密鑰認證加 密鑰模式的示例包括:裝置認證密鑰350 (DAK)、冗余裝置認證密鑰355 (RDAK)、芯片加密密 鑰365 (CEK)、圖像認證密鑰345 (IAK)、存儲器保護密鑰360 (MPK)、以及安全存儲密鑰(未示 出)。
[0048] DAK 350是用于建立裝置的所有權的公共密鑰。DAK 350可以用于認證安全密鑰 271-C寫和/或更新消息。通過認證寫和/或更新消息,DAK 350對安全密鑰271-C中所存 儲的密鑰進行控制。在某些實施例中,相應的私有密鑰(未示出)可以與DAK 350相關聯。 裝置所有人(即,OEM)擁有與DAK 350相對應的私有密鑰。
[0049] 在某些實施例中,可以使用冗余裝置認證密鑰(RDAK)355。DAK 355是用于建立裝 置的所有權的冗余公共密鑰。RDAK 355用于認證安全密鑰271-C寫/更新消息。通過認 證安全密鑰271-C寫/更新消息,RDAK 355對安全密鑰271-C中所存儲的密鑰進行認證和 控制。在某些實施例中,相應的私有密鑰(未示出)可以與RDAK 355相關聯。裝置所有人 (即,OEM)擁有與RDAK 355相對應的私有密鑰。
[0050] 在某些實施例中,可以通過DAK 350或RDAK 355私有密鑰所有者使用安全密鑰 271-C更新機構更新RDAK 355。RDAK 355實現方式是可選的并且對于在此描述的密碼關聯 機構的完整功能性而言是不需要的。
[0051] CEK 365可以是任何對稱加密密鑰。CEK 365與任何具有根據本發明的實施例的 密碼關聯機構的給定裝置相關聯。CEK 365是安全密鑰271-C的一部分并且用于保護二值 圖像,其是供應商軟件。CEK365在每裝置基礎上可以是唯一的,或其對于一組裝置或屬于 OEM的所有裝置而言可以是相同的。
[0052] 進一步地,可以通過接收提供新對稱CEK 365的相關聯對稱OEM私有密鑰所簽名 的請求在安全連接上改變CEK 365。此外,可以通過DAK 350或RDAK 355私有密鑰的所有 者使用安全密鑰271-C更新機構更新CEK 365。可以使用安全密鑰271-C訪問機構在DAK 350或RDAK 355公共密鑰加密容器中讀取CEK。
[0053] IAK 345可以包括用于對可以在相應的SSHA使能的裝置上運行的二值圖像進行 認證的一個或多個公共密鑰。
[0054] 在某些實施例中,IAK 345可以存儲在用于在程序代碼圖像認證過程中參考密鑰 的索引表內。
[0055] 在某些實施例中,可以通過DAK 350或RDAK 355私有密鑰的所有者使用安全密鑰 271-C更新機構更新IAK 345。在某些實施例中,可以使用安全密鑰271-C訪問機構在DAK 350或RDAK 355公共密鑰加密容器中讀取IAK 345。
[0056] 在某些實施例中,MPK 360 (其是一個高級加密標準(AES)基礎密鑰)可以用于 保護主存儲器的內容并且是安全密鑰271-C的一部分。在某些實施例中,處理器100的 DRAM(未示出)可以可選地被分區成多個完全安全且受保護的區域,并且SSHA使能的處理 器的DRAM控制器可以被安排成包括用于加密/解密和加擾/解擾的內置邏輯。可以使用 存儲器加密密鑰(MEK) 362對完全安全的區域中所存儲的數據進行加密或解密。在某些實 施例中,可以使用存儲器加擾密鑰(MSK) 364對存儲到存儲器的受保護區域的數據進行加 擾或解擾。可以從MPK 360導出MSK 364和MEK 362。
[0057] 在某些實施例中,安全代碼還可以用于對安全密鑰進行認證。該安全代碼可以用 于確定對這些安全密鑰的更新是否可用。在某些實施例中,更新代碼可以用于對安全密鑰 進行更新。更新代碼可以通過使用從外部存儲器210(圖1所示)獲得的信息來確定何時 以及如何執行對安全密鑰的更新。在某些實施例中,可以具有與更新代碼相關聯的認證器。 可以通過MAK 340或通過其他認證密鑰對更新代碼認證器進行認證。
[0058] 更新代碼通常以完全特權運行并且可以訪問主認證密鑰。如此,必須對更新代碼 進行認證并且還可以對其進行加密。在某些實施例中,為了確保安全執行,更新代碼用盡安 全內部可寫存儲器230(圖1所示)。一旦被認證,更新代碼可以被授予其完全特權。然而, 如果沒有被認證(即,如果存在錯誤和/或認證失敗),則安全代碼反而可以根據合適的出 錯指示執行不安全代碼。如之前所指出的,不安全代碼可以用受限特權運行和/或運行一 段有限時期。
[0059] 在某些實施例中,在執行防止未經授權的程序代碼獲得對系統的訪問之前,使在 處理器1〇〇(圖1)中執行的所有程序代碼有效并且對其進行認證。在某些實施例中,可以 對某個客戶代碼加密以防止可能的對手復制該代碼。
[0060] 進一步地,在某些實施例中,可以使用認證密鑰認證對安全密鑰271-C的更新。在 某些實施例中,認證密鑰可以包括該認證密鑰(參照圖2所描述的)。該認證密鑰可以是加 密的或未加密的。在某些實施例中,可以執行來自安全內部可寫存儲器230(圖1)的認證 密鑰以確保其安全。
[0061] 本發明的實施例防止OEM軟件在除了 OEM硬件以外的任何事物上運行。然而,鑒 于對安全密鑰271-C中的某些密鑰和認證密鑰的訪問,對手會可能在處理器100 (圖1)上 運行安全代碼或安全密鑰271-C的舊版本。為了防止這樣做,本發明的某些實施例限制僅 通過外部代碼訪問處理器而只允許最終OEM訪問安全代碼和安全密鑰271-C。
[0062] 在某些實施例中,為了防止對手使用安全密鑰271-C和安全最早啟動代碼273-C 的更舊的版本,可以使用秘密密鑰(未示出)。安全最早啟動代碼273-C可以將該秘密密 鑰與安全密鑰271-C字段進行比較,并且如果這些字段不匹配則認為其失敗。為了保證僅 OEM可以訪問安全密鑰271-C,秘密密鑰值保持遠離除了 OEM以外的所有處理器100(圖1) 用戶。
[0063] 如之前指出的,如果安全最早啟動代碼273-C的認證失敗,則安全內部可寫存儲 器230指令根據合適的出錯指示執行不安全代碼281。如果對安全密鑰的更新的認證失敗, 則還可以執行不安全代碼281。還可以在其他情況下執行不安全代碼281。例如,不安全代 碼281可以用于提供對處理器100資源的受限訪問。例如,不安全代碼可以用于向不可以 訪問安全最早啟動代碼273-C或安全密鑰271-C的用戶提供受限使用/測試。
[0064] 在某些實施例中,如果安全最早啟動代碼273-C的認證失敗,則在使系統不支持 僅受限調試模式之后,不安全代碼281可以斷言通用輸入/輸出(GPI0)標志并停止或跳至 特定位置。
[0065] 不安全代碼281通常以受限特權運行并且具有對軟件和系統結構的受限訪問。不 安全代碼281可以是未加密的并且未認證的。在某些實施例中,對手可以自由修改不安全 代碼281。盡管不安全代碼281可以初始地用盡外部存儲器210的安全內部可寫存儲器230 部分,但在某些實施例中,不安全代碼281可以用盡不安全存儲器280 (圖1)。進一步地,如 果高級功能需要,在某些實施例中,不安全代碼281可以執行進一步的芯片初始化。
[0066] 本發明的實施例提供了限制MAK 340的使用、和減少對安全密鑰的訪問、以及保 護系統免受對手的硬件、軟件、和系統結構解決方案。對MAK 340訪問的限制是關鍵的,因 為一旦對手獲得對MAK340的訪問,其會可能對安全密鑰271-C進行解碼并獲得對所有代碼 的訪問。
[0067] 為了限制對MAK的訪問,本發明的實施例使用一種可以禁用訪問MAK (下文中稱為 "DIS_MAK")的功能。如果DIS_MAK字段為零,則可以訪問MAK。然而,當設置DIS_MAK字段 時,則該硬件防止對MAK 340的任何訪問。該硬件還可以防止DIS_MAK字段歸零。
[0068] 如以上指出的,在處理器100(圖1)充分發揮功能之前,在早期啟動時進行內部存 儲器220 (圖2)、安全代碼、以及更新代碼的認證。早期啟動之外,由于存在對手軟件正在運 行的可能性,通過設置DIS_MAK字段來禁用對MAK的訪問。進一步地,當執行其他處理步驟 時,如不安全代碼或客戶特定代碼的執行,該硬件不允許使用或訪問MAK 340并且DIS_MAK 字段保持設置。此外,某些實施例允許DIS_MAK字段在安全密鑰271-C和安全密鑰更新代 碼272-C的認證過程中保持設置。
[0069] 某些實施例可以包括用于限制對處理器100(圖1)的訪問的附加功能性。例如, 某些實施例可以使用一種用于對外部代碼可用的處理器1〇〇(圖1)功能性進行限制的功 能(下文中稱為"CHIPKILL")。重要的是限制外部代碼訪問,因為外部代碼執行可以指示 對手未經授權使用處理器100 (圖1)。在某些實施例中,CHIPKILL功能性可以包括限制處 理器100的正在使用的處理器內核的數量。在某些實施例中,在一段預先確定的時期后, CHIPKILL功能性可以防止訪問處理器100(圖1)。在某些實施例中,CHIPKILL功能性可以 被擴展至禁用處理器1〇〇(圖1)的某些輸入/輸出特征。進一步地,某些實施例可以防止 禁用CHIPKILL功能性。
[0070] 在某些實施例中,當設置CHIPKILL字段時,除了一個內核以外的所有處理器內核 可選地保持復位。當CHIPKILL字段從0過渡到1后,該硬件發起CHIPKILL計時器。當計時 器到期時,如果CHIPKILL字段仍然設置,則該硬件內在地迫使指令斷言將芯片保持復位, 直到下一個芯片復位。
[0071] CHIPKILL計時器可以被設置成任何預先確定的時期。例如,在一個實施例中, CHIPKILL計時器可以默認為大致20秒。僅可以由芯片復位停止CHIPKILL計時器。在某些 實施例中,由對時間量進行控制的CHIPKILL[計時器(TIMER)]字段選擇CHIPKILL計時器 間隔,CHIPKILL字段保持設置并且可以大到一天或更大。
[0072] 在某些實施例中,可以對DRAM內容進行加擾。這是為了防止芯片對手以僅僅監控 處理器100的DRAM中進行的讀/寫來訪問受保護的代碼和數據。
[0073] 該示例實施例的大多數認證和驗證功能可以存儲在外部存儲器210上和從其中 執行,在該存儲器中存儲是更成本有效的。如此,內部存儲器220不需要是大的并且可以具 有受限功能性。
[0074] 圖3為可以用某些實施例執行的程序的流程圖400。在啟動時間時,來自內部存儲 器的指令可以用于準備安全內部可寫存儲器410。該安全內部可寫存儲器位于物理地址處 并且具有一個比處理器100(圖1)的高速緩沖存儲器的容量更小的容量。將安全代碼從外 部存儲器加載到安全內部可寫存儲器內420并對其進行認證430。如果安全代碼認證440, 則執行445安全代碼。如果安全代碼沒有認證450,在包括用于限制對處理器100(圖1)的 訪問的功能性的實施例中,某些功能性可以用于限制對處理器的訪問455。然后,執行來自 不安全存儲器460的不安全代碼。可以執行來自不安全存儲器、可重編程閃速存儲器、或只 讀存儲器(ROM)的不安全代碼。
[0075] 雖然通過參考本發明的示例實施例已經具體地示出和描述了本發明,但本領域普 通技術人員將會理解在不脫離由所附權利要求書限定的本發明范圍的情況下可在形式和 細節中做出不同的改變。
【權利要求】
1. 一種用于認證安全代碼并使其與設備相關聯的方法,所述方法包括: 在啟動時間時從外部存儲器加載所述安全代碼;以及 使用與所述設備相關聯的認證密鑰對所述安全代碼進行認證,并且在所述安全代碼的 認證失敗的情況下,執行不安全代碼。
2. 根據權利要求1所述的方法,其中,所述外部存儲器是不安全存儲器、可重編程閃速 存儲器、或只讀存儲器(ROM)中的至少一個。
3. 根據權利要求1所述的方法,進一步包括將所述安全代碼存儲在所述設備的內部存 儲器中。
4. 根據權利要求3所述的方法,進一步包括將高速緩沖存儲器分區成包括所述內部存 儲器,所述內部存儲器位于所述高速緩沖存儲器內的地址處并且具有動態可變的容量。
5. 根據權利要求4所述的方法,進一步包括執行來自所述內部存儲器和所述外部存儲 器中的至少一個的所述不安全代碼。
6. 根據權利要求4所述的方法,進一步包括在認證了所述安全代碼的情況下執行來自 所述內部存儲器的所述安全代碼。
7. 根據權利要求6所述的方法,進一步包括在認證了所述安全代碼的情況下繼續認證 由所述安全代碼的執行觸發的程序。
8. 根據權利要求3所述的方法,進一步包括使用來自所述設備的所述內部存儲器的指 令存儲所述安全代碼。
9. 根據權利要求1所述的方法,進一步包括在認證了所述安全代碼的情況下執行所述 安全代碼。
10. 根據權利要求9所述的方法,進一步包括使用來自只讀存儲器(ROM)的指令來將 所述安全代碼復制到安全內部可寫存儲器內,所述安全內部存儲器是高速緩沖存儲器的分 區,并且執行來自所述安全內部可寫存儲器的所述安全代碼。
11. 根據權利要求10所述的方法,進一步包括使用所述安全代碼從所述外部存儲器加 載與所述設備相關聯的安全密鑰。
12. 根據權利要求11所述的方法,其中所述安全密鑰包括裝置認證密鑰、冗余裝置認 證密鑰、芯片加密密鑰、圖像認證密鑰、存儲器保護密鑰、以及安全存儲密鑰中的至少一項。
13. 根據權利要求11所述的方法,其中對所述安全密鑰進行加密。
14. 根據權利要求11所述的方法,進一步包括使用所述安全代碼對所述安全密鑰進行 認證。
15. 根據權利要求11所述的方法,進一步包括使用所述安全代碼確定對所述安全密鑰 的更新是否可用。
16. 根據權利要求15所述的方法,進一步包括使用更新代碼對所述安全密鑰進行更 新。
17. 根據權利要求11所述的方法,其中安全代碼認證器是所述認證密鑰和所述安全代 碼的函數,所述認證密鑰是與所述設備相關聯的主認證密鑰(MAK)的函數。
18. 根據權利要求17所述的方法,其中對所述認證密鑰進行加密。
19. 根據權利要求17所述的方法,進一步包括執行來自所述安全內部可寫存儲器的所 述安全最早啟動代碼。
20. 根據權利要求17所述的方法,進一步認證所述認證密鑰,并且在所述認證失敗的 情況下,根據合適的出錯指示執行所述不安全代碼。
21. 根據權利要求11所述的方法,進一步包括使用所述安全代碼將所述安全密鑰與秘 密密鑰進行比較,并且在所述比較失敗的情況下,發出出錯指示。
22. 根據權利要求1所述的方法,進一步包括在所述安全代碼的認證失敗的情況下生 成出錯信號。
23. 根據權利要求1所述的方法,其中所述不安全代碼包括受限功能性。
24. 根據權利要求23所述的方法,其中具有受限功能性包括具有對所述設備的結構的 受限訪問。
25. 根據權利要求23所述的方法,其中具有受限功能性包括具有對所述設備上所存儲 的軟件的受限訪問。
26. 根據權利要求23所述的方法,其中所述不安全代碼未加密并且是可改變的。
27. 根據權利要求23所述的方法,進一步包括在預先確定的時期中提供所述受限功能 性。
28. 根據權利要求1所述的方法,進一步包括將所述認證密鑰確定為所述設備相關聯 的主認證密鑰(MAK)的函數。
29. 根據權利要求1所述的方法,其中所述安全代碼包括認證器,所述認證器是所述認 證密鑰的函數。
30. 根據權利要求1所述的方法,其中所述認證密鑰是高級加密標準(AES)密鑰。
31. 根據權利要求1所述的方法,其中所述設備是網絡處理器、通用處理器片上系統、 以及主板中的至少一項。
32. 根據權利要求1所述的方法,其中所述安全代碼未加密。
33. 根據權利要求1所述的方法,進一步包括使用認證密鑰對與所述設備相關聯的安 全密鑰進行更新。
34. -種用于認證安全代碼并使其與設備相關聯的裝置,所述裝置包括: 加載器,在啟動時間時從外部存儲器加載所述安全代碼;以及 認證器,使用與所述設備相關聯的認證密鑰對所述安全代碼進行認證,并且在所述安 全代碼的認證失敗的情況下,執行不安全代碼。
35. 根據權利要求34所述的裝置,其中所述外部存儲器是不安全存儲器、可重編程閃 速存儲器、或只讀存儲器(ROM)中的至少一個。
36. 根據權利要求34所述的裝置,其中所述設備進一步包括被配置成用于存儲所述安 全代碼的內部存儲器。
37. 根據權利要求36所述的裝置,其中高速緩沖存儲器被分區成包括所述內部存儲 器,所述內部存儲器被安排成位于所述高速緩沖存儲器內的地址處并且包括動態可變的容 量。
38. 根據權利要求37所述的裝置,其中執行來自所述內部存儲器和所述外部存儲器中 的至少一個的所述不安全代碼。
39. 根據權利要求37所述的裝置,其中在認證了所述安全代碼的情況下,執行來自所 述內部存儲器的所述安全代碼。
40. 根據權利要求39所述的裝置,其中在認證了所述安全代碼的情況下,繼續認證由 所述安全代碼的執行觸發的程序。
41. 根據權利要求36所述的裝置,其中使用來自只讀存儲器(ROM)的指令存儲所述安 全代碼。
42. 根據權利要求34所述的裝置,其中在認證了所述安全代碼的情況下,執行所述安 全代碼。
43. 根據權利要求42所述的裝置,其中使用來自只讀存儲器(ROM)的指令來將所述 安全代碼復制到安全內部可寫存儲器內,所述安全內部可寫存儲器是高速緩沖存儲器的分 區,并且其中執行來自所述安全內部可寫存儲器的所述安全代碼。
44. 根據權利要求43所述的裝置,其中使用所述安全代碼從所述外部存儲器加載與所 述設備相關聯的安全密鑰。
45. 根據權利要求44所述的裝置,其中所述安全密鑰包括裝置認證密鑰、冗余裝置認 證密鑰、芯片加密密鑰、圖像認證密鑰、存儲器保護密鑰、以及安全存儲密鑰中的至少一項。
46. 根據權利要求44所述的裝置,其中對所述安全密鑰進行加密。
47. 根據權利要求44所述的裝置,其中使用所述安全代碼認證所述安全密鑰。
48. 根據權利要求44所述的方法,進一步包括更新器,所述更新器使用所述安全代碼 確定對所述安全密鑰的更新是否可用。
49. 根據權利要求48所述的裝置,其中所述更新器使用更新代碼對所述安全密鑰進行 更新。
50. 根據權利要求48所述的裝置,其中安全代碼認證器是所述認證密鑰和所述安全代 碼的函數,所述認證密鑰是與所述設備相關聯的主認證密鑰(MAK)的函數。
51. 根據權利要求50所述的裝置,其中對所述認證密鑰進行加密。
52. 根據權利要求50所述的裝置,其中執行來自所述安全內部可寫存儲器的所述安全 最早啟動代碼。
53. 根據權利要求50所述的裝置,其中在所述認證失敗的情況下,所述認證器根據合 適的出錯指示執行所述不安全代碼。
54. 根據權利要求44所述的裝置,進一步包括比較器,所述比較器使用所述安全代碼 將所述安全密鑰與秘密密鑰進行比較,并且在所述比較失敗的情況下,發出出錯指示。
55. 根據權利要求34所述的裝置,其中在所述安全代碼的認證失敗的情況下生成出錯 信號。
56. 根據權利要求34所述的裝置,其中所述不安全代碼包括受限功能性。
57. 根據權利要求56所述的裝置,其中所述不安全代碼具有對所述設備的結構的受限 訪問。
58. 根據權利要求56所述的裝置,其中所述不安全代碼具有對所述設備上所存儲的軟 件的受限訪問。
59. 根據權利要求56所述的裝置,其中所述不安全代碼未加密并且是可改變的。
60. 根據權利要求56所述的裝置,在預先確定的時期中提供所述受限功能性。
61. 根據權利要求34所述的裝置,其中將所述認證密鑰確定為所述設備相關聯的主認 證密鑰(MAK)的函數。
62. 根據權利要求34所述的裝置,其中所述安全代碼包括認證器,所述認證器是所述 認證密鑰的函數。
63. 根據權利要求34所述的裝置,其中所述認證密鑰是高級加密標準(AES)密鑰。
64. 根據權利要求34所述的裝置,其中所述設備是網絡處理器、通用處理器片上系統、 以及主板中的至少一項。
65. 根據權利要求34所述的裝置,其中所述安全代碼未加密。
66. 根據權利要求34所述的裝置,其中使用認證密鑰對與所述設備相關聯的安全密鑰 進行更新。
【文檔編號】G06F21/57GK104221027SQ201380015295
【公開日】2014年12月17日 申請日期:2013年3月20日 優先權日:2012年3月22日
【發明者】R·E·凱斯勒, M·R·赫塞恩, E·F·羅賓斯 申請人:凱為公司