新四季網

安全啟動計算設備的製作方法

2023-11-04 00:24:32

專利名稱:安全啟動計算設備的製作方法
技術領域:
本發明一般涉及電子安全性。更具體地,本發明涉及安全地啟動 (boot)計算設備。
背景技術:
隨著越來越多的計算設備被用於人們的日常生活,安全性已受到用戶 和內容提供者的普遍關注。病毒、蠕蟲、特洛伊木馬、身份盜用、軟體和 媒體內容盜版以及使用對數據破壞的威脅進行敲詐是猖獗的。通常,這些 攻擊涉及安裝和執行惡意軟體代碼以暴露對設備資源的訪問,這些設備資 源在其他情況下對於系統、內容提供者、用戶或應用而言是私密的。
例如,當在被開發來播放音頻/視頻內容(例如,好萊塢電影或音樂)
的消費者計算設備中運行時,黑客程序可能潛在地使得用於保護A/V內容 的加密受到破壞。因此,這種設備通常需要高級別的安全性。
作業系統可提供一些安全特徵來防止這種攻擊。然而,作業系統的安 全特徵通常無法跟上每天都在發生的新攻擊。此外,當啟動計算設備時, 安全特徵可能還未被初始化並且容易被繞過和/或篡改。
防止這些攻擊的另一種方式是完全封鎖計算設備,使其在從製造商運 出之後不能安裝和/或運行任何其他軟體。然而,這樣一種嚴格措施嚴重限 制了基礎計算設備的能力和靈活性。這不僅使得升級計算設備變得昂貴和 困難,而且無法利用確實需要下載和運行來自設備外部的軟體代碼的越來 越多的應用。另外,快速的技術進步通常使得最初內置在計算設備中的應 用或功能在非常短的時期內變得過時。
因此,當前的安全措施不能提供有力方案來保護計算設備內的應用和 內容,而同時提供為設備更新軟體和/或固件的靈活性。

發明內容
這裡描述了一種用於執行嵌入在設備內的代碼以驗證設備的存儲器中 所加載的代碼鏡像的方法和裝置。代碼鏡像可在被驗證為受信代碼鏡像
(trusted code image)之後被執行。所嵌入的代碼可被存儲在設備的安全 存儲區中,例如存儲在ROM (只讀存儲器)中。在一個實施例中,對代 碼鏡像的驗證基於存儲在安全存儲區內的密鑰。該密鑰對於每個設備而言 可以是唯一的。對密鑰的訪問可受相關安全存儲區的控制。設備可以在執 行經驗證的代碼鏡像之後完成對操作環境的建立。
在一替代實施例中,代碼鏡像可表示作業系統(OS)的核心,所述操 作系統提供設備的操作環境。代碼鏡像可以是從設備的海量存儲裝置加載 的。在被利用存儲在安全ROM內的密鑰成功驗證並且密鑰唯一的識別該 設備之後,可在設備的主存儲器中執行代碼鏡像以建立OS的核心,從而 建立設備的操作環境。在一個實施例中,設備是可攜式設備。
在一替代實施例中,從設備的安全ROM (只讀存儲器)所嵌入的第 一可執行鏡像可被執行,以初始化與設備相關聯的海量存儲設備,從而使 得海量存儲設備能夠被訪問。安全ROM中可存儲有唯一地識別設備的唯 一標識符(ID)。在成功初始化海量存儲設備之後,存儲在海量存儲設備 內的第二可執行鏡像可被定位並利用嵌入在安全ROM內的唯一標誌符
(ID)來驗證。在被成功驗證之後,第二可執行鏡像可被執行,以對設備 執行低級別硬體初始化。第二可執行鏡像可被成功執行以定位和執行第三 可執行鏡像,從而為設備驗證和加載作業系統(OS)的核心鏡像。核心鏡 像可被成功執行,從而為設備初始化和配置OS的其餘部分。 本發明的其他特徵將從附圖和以下詳細描述中變得清楚。


通過示例圖示了本發明並且本發明不限於附圖的各圖,在附圖中相似 的標號表示類似的要素,其中
圖1是圖示用於安全啟動的系統組件的一個實施例的框圖; 圖2是圖示執行安全啟動的系統組件的一個實施例的框圖;圖3是圖示執行安全啟動的過程的一個實施例的流程圖4是圖示基於UID (唯一標識符)和種子字符串(seed string)從代 碼鏡像生成籤名的過程的一個實施例的流程圖5是圖示使得主機安全地啟動設備的網絡連接的一個實施例的框
圖6是圖示從主機向設備安全恢復操作環境的過程的一個實施例的流 程圖7是圖示從主機向設備執行操作環境的最低限度安全恢復的過程的 一個實施例的狀態圖8是圖示從主機向設備安全恢復軟體組件的過程的一個實施例的流 程圖9是圖示從主機向設備安全更新應用的過程的一個實施例的流程
圖10是圖示用於執行未經驗證的代碼鏡像的過程的一個實施例的流 程圖11圖示可結合這裡描述的實施例而使用的典型計算機系統的一個 示例;
圖12示出可與本發明一個實施例一起使用的數據處理系統的示例。
具體實施例方式
這裡描述了用於安全地啟動計算設備的方法和裝置。在以下描述中, 給出了許多具體細節以提供對本發明的實施例的全面說明。然而,本領域 技術人員將會清楚,可在沒有這些具體細節的情況下實施本發明的實施 例。在其他實例中,為了不模糊對說明書的理解,公知的組件、結構和技 術未被詳細示出。
說明書中對"一個實施例"或"實施例"的提及指的是結合該實施例 而描述的特定特徵、結構或特性可包括在本發明的至少一個實施例中。說 明書各處出現的短語"在一個實施例中"不必都指同一實施例。
在附圖中所示的過程是由處理邏輯執行的,所述處理邏輯包括硬體(例如,電路、專用邏輯等)、軟體(例如,運行在通用計算機系統或者 專用機器上)或兩者的組合。儘管以下按照一些順序操作來描述這些過 程,但是應當認識到,所描述的一些操作可按不同順序執行。此外, 一些 操作可被並行執行而非順次執行。
術語"主機"和術語"設備" 一般地指數據處理系統,而非具體地指
主機的特定形狀因數(form factor)與設備的形狀因數。
在一個實施例中,安全地啟動設備可被設計為使得設備內的關鍵資源
將在操作環境中受到保護。同時,安全地啟動設備可以提供以下靈活性
使得在設備內運行的軟體能夠在不同策略和過程下被更新和安裝,而不需 要不必要的管理、素材和/或性能成本。在一個實施例中,啟動設備的安全
性可由存儲在諸如ROM (只讀存儲器)(也稱為安全ROM)之類的一起 集成在設備內的安全存儲區內的代碼和數據執行。可在設備的製造階段期 間存儲安全ROM的內容。安全ROM可與設備的UID (唯一標識符)相 關聯,該UID唯一地標識設備。在設備中運行的軟體代碼的置信(trust) 可以源自基於UID並通過安全ROM所籤名的代碼鏡像。
根據一個實施例,設備的安全ROM可包括受信實體的根證書的指 紋。通過受信實體所認證的代碼鏡像可經由基於指紋的安全ROM並根據 確認過程(certification process)而被受信在設備中執行。在一個實施例 中,安全啟動該設備可在根據安全ROM而與受信實體相耦合時恢復受信 軟體代碼。安全ROM可基於所存儲的設備UID將置信擴展到通過指紋所 確認的代碼鏡像。在一個實施例中,安全ROM可使得能夠通過確認從外 部連接所下載的代碼鏡像來進行應用軟體恢復。在另一實施例中,安全 ROM可強制由通過外部連接所下載的受信軟體代碼來清理存儲在設備內 的用戶數據。
圖1是圖示用於安全啟動的系統組件的一個實施例的框圖。系統100 可位於設備內的一個或多個晶片中。在一個實施例中,系統100可包括與 存儲器組件103相耦合的晶片105。晶片105還可以包括RAM (隨機存取 存儲器)組件111,例如SRAM (靜態隨機存取存儲器)或EDRAM (嵌 入式動態隨機存取存儲器)。代碼鏡像可在被設備執行之前加載到存儲器組件103中。在被執行時,代碼鏡像可為支持用戶或系統應用的設備啟動 用戶應用、系統應用和/或操作環境(例如,作業系統)。在一個實施例
中,存儲器組件103包括DDR (雙數據率)存儲器。晶片105可包括存儲 代碼115和相關數據117的ROM113。代碼115可包括SHA (安全哈希算 法)哈希函數的實現,這些SHA哈希函數例如是密碼哈希函數SHA-1、 SHA-224、 SHA-256、 SHA-384禾P SHA-512。另外,代碼115可包括諸如 AES (高級加密標準)加密之類的數據加密算法的實現。在一個實施例 中,代碼115可引起對設備的硬體初始化,以支持諸如USB (通用串行總 線)之類的連接或通信接口。代碼115可包括用於改變設備的時鐘速率的 指令。注意到在整個該申請中,僅出於說明目的而利用SHA和AES作為 示例;將會認識到,也可以利用其他哈希和/或加密技術。
在一個實施例中,代碼115可使得將代碼鏡像加載到諸如存儲器組件 103或RAM lll之類的設備存儲器中。可從與晶片105相耦合的存儲裝置 組件109中加載代碼鏡像。存儲裝置組件109可以是諸如NAND快閃記憶體、 NOR快閃記憶體之類的快閃記憶體,或者其他海量存儲裝置(例如,硬碟)組件。在另 一實施例中,可通過連接接口 101從設備外的源加載代碼鏡像。連接接口 101可基於USB連接、乙太網連接或者無線網絡連接(例如,IEEE 802.1x)等。在一個實施例中,代碼115可使得在驗證出代碼鏡像僅包括 受信代碼之後將來自設備存儲器的代碼鏡像存儲到存儲裝置組件109中。
在設備可以開始執行設備存儲器中所加載的代碼鏡像之前,代碼115 可對所加載的代碼鏡像執行驗證操作,以確保代碼鏡像是可受信的。在一 個實施例中,代碼115可根據晶片105中包括的數據來驗證所加載的代碼 鏡像,該數據例如是ROM內的數據部分117、 UID 119禾口/或GID (全局 標識符)121。 UID 119對於每個設備而言可以是唯一的。在一個實施例 中,所有設備與單個GID 121相關聯。在一個實施例中,GID可用於對代 碼鏡像加密以防止代碼檢査。ROM 115的數據部分117可存儲基於來自受 信實體的籤名的指紋123,例如公共密鑰證書。在一個實施例中,分離的 多個設備可包括基於同一受信實體的指紋123。
圖2是圖示執行安全啟動的系統組件的一個實施例的框圖。系統100可將來自存儲裝置組件109的LLB (低級別啟動)代碼鏡像229加載到 RAM 111中作為LLB 225。 LLB 225可與系統100的長期電力管理相關。 在一個實施例中,LLB 225可包括對系統100的版本的標識。代碼鏡像 LLB 225可被基於代碼115的執行而加載。在一個實施例中,代碼鏡像 LLB 229可以是通過代碼115的執行,基於代碼鏡像LLB 225而從RAM lll存儲的。
根據一個實施例,可根據LLB 225的執行,基於代碼鏡像iBoot 231 從存儲裝置109將代碼鏡像iBoot 227加載到存儲器組件111中。代碼鏡像 iBoot 231可引起對作業系統的硬體初始化,該作業系統為容納了系統100 的設備提供操作環境。設備可在成功啟動之後進入操作環境。操作環境可 支持系統中運行的各種用戶和/或系統應用。在一個實施例中,代碼鏡像 iBoot 231可使能設備的海量存儲裝置組件、為用戶接口初始化圖形組件和 /或為設備激活屏幕組件等。代碼鏡像iBoot 231可以是通過代碼鏡像LLB 225的執行,基於代碼鏡像iBoot 227而從RAM 111存儲的。
在一個實施例中,可基於代碼鏡像Kemelcache (核心緩存)233將代 碼鏡像Kemelcache 223從存儲裝置109加載到存儲器103。代碼鏡像 Kemelcache 223可以是作業系統的用於支持設備的操作環境的核心的一部 分。在一個實施例中,代碼鏡像Kemelcache 223使得核心和作業系統組件 235從存儲裝置109加載到存儲器103中。作業系統組件可包括用戶應 用、庫、圖形用戶接口組件和/或用戶數據235。用戶數據可包括與設備用 戶相關聯的音樂、圖像、視頻或者其他數字內容。例如,這種用戶數據可 以是具有受限用途的遵從DRM (數字權利管理)的數據。代碼鏡像 Kemelcache 223可使得能夠將核心和作業系統組件235加載到存儲器103 中。在一個實施例中,代碼鏡像Kemelcache 223可引起驗證過程,以確保 核心在存儲器103中執行之前是受信的。在另一實施例中,代碼鏡像 Kemelcache 223可引起驗證過程,以確保作業系統組件235在存儲器103 中執行之前是受信的。可執行代碼鏡像Kemelcache 223以確定作業系統組 件235是基於UID U9或指紋123而受信的。在一個實施例中,代碼鏡像 Kemelcache 223可使得根據GID 121在存儲器103中對作業系統組件235進行解密。在一個實施例中,可執行代碼鏡像Kernelcache 223以將來自存 儲器103的作業系統組件235存儲到存儲裝置109中。代碼鏡像 Kemelcache 223可在作業系統組件235被存儲在存儲裝置109中之前對操 作系統組件235進行加密。
在一個實施例中,UID 119對於一些運行在特許模式中的作業系統組 件而言是可訪問的。作業系統的核心可取決於應用是否運行在特許模式中 來否定或批准應用對UID 119的訪問。在一個實施例中,作業系統的核心 可基於應用的相應代碼鏡像是否包括被正確籤署(sign)的籤名來確定應 用是否可運行在特許模式中。DRM (數字權利管理)系統可運行在特許模 式中以基於UID 119來控制對作業系統組件235的用戶數據的訪問。應用 可通過DRM系統來訪問用戶數據。在一些實施例中,作業系統的網絡設 施(utility)可被給予特許。網絡設施可使得設備能夠通過接口晶片(例如 基帶晶片)而與外部資源互連。在另一實施例中,可由作業系統提供病毒 保護軟體以運行在特許模式中。
這樣,任何將在系統內運行的軟體組件在執行之前必須被驗證或認 證,除非軟體組件滿足某些預定(例如,由置信銷售商提供,或者在諸如 設備製造或軟體組件測試期間之類的某些情況期間提供)。在一個實施例 中,在系統中對安全存儲區的設定可與預定條件相關聯。結果,諸如遵從 DRM的數據之類的任何數據在違背正確驗證或認證的情況下將不被訪問 或損害。
圖3是圖示執行安全啟動的過程的一個實施例的流程圖。例如,過程 300可由圖1的系統100執行。在設備的啟動過程器期間,根據一個實施 例,過程300的處理邏輯可在框301通過執行ROM晶片中的指令來從設 備內定位代碼鏡像。可從ROM晶片的代碼部分讀取指令,如圖1的代碼 115。代碼鏡像可被存儲在設備的存儲器組件或存儲裝置組件中。存儲器 組件可以是RAM。存儲裝置組件可以是附接到設備的快閃記憶體或海量存儲設 備。在一個實施例中,如果鏡像代碼不能被定位,則啟動過程可被中斷並 且設備可在框309進入DFU (設備固件升級)模式。如果代碼鏡像被成功 定位,則根據一個實施例,過程300的處理邏輯可在框303將代碼鏡像加載到存儲器中。在另一實施例中,代碼鏡像在被定位時可以已經被加載到 存儲器中。
在框305,根據一個實施例,過程300的處理邏輯可基於與設備相關
聯的UID (例如圖1的UID 119)來驗證所加載的代碼鏡像是否可被受 信。過程300的處理邏輯可從代碼鏡像提取頭部值。頭部值在代碼鏡像內 的位置可以是預定的。在一個實施例中,可基於在代碼鏡像內的屬性值對 (pair)中的預設屬性來提取頭部值。頭部值可包括通過公知的哈希以及 加密算法並根據設備的UID而在代碼鏡像上所籤署的籤名值。在一個實施 例中,過程300的處理邏輯在框305通過相同的公知哈希以及加密算法並 根據UID從代碼鏡像得出另一籤名值。過程300的處理邏輯可將所得出的 籤名值與所提取的籤名值相比較,以驗證代碼鏡像是否是受信的。在一個 實施例中,如果所得出的籤名值和所提取的籤名值彼此匹配,則驗證可以 成功。否則,驗證可能失敗。如果驗證不成功,則過程300的處理邏輯可 在框309使設備進入DFU模式。在一個實施例中,在框309,過程300的 處理邏輯可在設備進入DFU模式之前從存儲器中去除代碼鏡像。
如果驗證是成功的,則過程300的處理邏輯可在框311執行代碼鏡 像。在一個實施例中,代碼鏡像可以是圖2中的標號225、 227和223所示 的LLB、 iBoot或Kernelcache。過程300的處理邏輯可在框311為設備執 行啟動操作。啟動操作可包括產品識別、開啟設備電力管理、使能海量存 儲裝置組件、為用戶接口初始化圖形組件、激活屏幕組件和/或設備硬體初 始化等。在一個實施例中,啟動操作可包括將作業系統加載到存儲器,包 括核心和例如圖2的標號235所示的某些作業系統組件。過程300的處理 邏輯可將置信指示符附接到存儲器中的受信代碼鏡像上,以表示成功的驗 證。在一個實施例中,與位於存儲器中的置信指示符相關聯的代碼鏡像可 被作為受信代碼執行,而不進行驗證。在框313,過程300的處理邏輯可 確定設備是否被完全啟動。如果設備被完成啟動,則設備可以變得可操作 並在框315進入正常操作模式。在一個實施例中,Kemelcache 227可在設 備進入正常操作之後開啟運行在用戶模式中的用戶應用。運行在用戶模式 中的應用可以不訪問與設備硬體有關的信息,例如圖2的UID 119和GID121。如果在框313啟動操作失敗,則設備可進入DFU模式。
在框317,根據一個實施例,當過程300的處理邏輯在框313確定設 備啟動過程未完成時,啟動過程可以繼續。過程300的處理邏輯可基於執 行當前代碼鏡像而在框313定位另一代碼鏡像。在一個實施例中,執行代 碼鏡像LLB可定位圖2所示的代碼鏡像iBoot。在另一實施例中,執行代 碼鏡像iBoot可定位圖2所示的代碼鏡像Kernelcache。在一些實施例中, 執行代碼鏡像Kemelcache可定位包括圖2所示的核心和作業系統組件在 內的代碼鏡像。過程300的處理邏輯可返回到框319,以根據在框317定 位下一代碼鏡像的結果來繼續進行啟動過程。
圖4是圖示基於UID和種子字符串從代碼鏡像生成籤名的過程的一個 實施例的流程圖。例如,過程400可由圖l所示的系統執行。在一個實施 例中,過程400的處理邏輯對代碼鏡像411 (例如圖2所示的LLB 225、 iBoot 227或Kemelcache 223)執行哈希操作409。哈希操作可基於SHA (安全哈希算法)哈希函數,例如密碼哈希函數SHA-1、 SHA-224、 SHA-256、 SHA-384禾n SHA-512。在一個實施例中,哈希操作409可以產生密 鑰字符串413。密鑰字符串413可以具有20位元組的長度。在一個實施例 中,過程400的處理邏輯可在框403執行加密操作,以基於與設備相關聯 的密鑰字符串413、 UID 401和種子字符串407而生成籤名405。在一個實 施例中,在框403,加密操作可基於AES (高級加密標準)算法。過程 400的處理邏輯可在框403對密鑰字符串413進行截取,例如丟棄密鑰字 符串413的20位元組中的4位元組。在一個實施例中,框403的AES算法基 於16位元組。UID 401可被存儲在設備內,作為圖1所示的UID 119。種子 字符串407可以是通過基於設備的種子生成函數生成的。在一個實施例 中,在每次種子生成函數被用於同一設備時,種子字符串407可以是相同 的。
圖5是圖示使得主機根據圖1的系統安全地啟動設備的網絡連接的一 個實施例的框圖。在一個實施例中,設備可通過連接到主機而進入用於啟 動的DFU模式。設備可基於來自用戶的發起而被強制進入DFU模式。在 一個實施例中,設備可響應於用戶執行諸如按下設備按鈕之類的預定動作而進入DFU模式。用戶可請求設備進入DFU模式以對設備執行系統管理
任務,例如包括清理用戶數據、升級硬體驅動、升級用戶應用和/或安裝新 應用等。當設備未能在啟動序列的至少一個階段中啟動時,設備可自動進
入DFU模式,例如圖3的框309所示。或者,當作業系統在正常操作期間 遇到異常時,例如當受破壞的數據或受損的軟體組件被檢測到時,設備可 進入DFU模式。
根據一個實施例,網絡500可包括與主機503相耦合的設備501。設 備501可以是運行恢復守護應用(restoring daemon application)以從所耦 合的主機503來恢復作業系統的媒體播放器,例如來自蘋果計算機公司的 iPod。設備501可通過支持TCP/IP協議的連接接口而與主機503相耦合。 連接接口可基於USB、無線網絡或者乙太網等。在一個實施例中,主機 503可以是運行諸如來自蘋果計算機公司的iTime應用之類的應用軟體的 基於Mac或Windows的計算機。主機503可通過網絡505連接到中央服 務器507,網絡505例如是廣域網(例如,網際網路)或區域網(例如,內 聯網或對等網絡)。在一個實施例中,中央伺服器507可基於公眾可訪問 的web伺服器。或者,伺服器507可以是內聯網或者本地伺服器。
圖6是圖示從主機向設備安全地恢復操作環境的過程的一個實施例的 流程圖。例如,過程600可由圖l和/或圖5所示的系統執行。在一個實施 例中,過程600的處理邏輯可在框601向主機計算機發送狀況(status), 該狀況表示設備處於恢復模式。設備可響應於驗證代碼鏡像的失敗而進入 恢復模式。主機計算機可耦合到執行過程600的設備,如圖5所示。在一 個實施例中,狀況可包括產品ID和/或銷售商ID。主機計算機可基於接收 到的狀況來準備用於恢復所連接的設備的代碼鏡像。在一個實施例中,代 碼鏡像可由通過諸如圖5所示的網絡505之類的網絡而連接的主機計算機 從中央伺服器計算機取回(retrieve)。在框603,根據一個實施例,過程 600的處理邏輯可從主機計算機接收代碼鏡像使其進入設備的存儲器組件 中,例如圖1所示的存儲器103。在框605,過程600的處理邏輯可從主 機計算機接收指令以執行接收到的代碼鏡像。在一個實施例中,過程600 可由運行在主機計算機上的恢復軟體(例如運行在基於MAC的計算機中的iTune)控制。
根據一個實施例,在框607,過程600的處理邏輯可提取與設備的存 儲器中接收到的代碼鏡像相伴隨的證書。代碼鏡像可以是圖2所示的 LLB 、 iBoot和/或Kernelcache 。可根據諸如RSA ( Ralph Shamir Adelman)公共密鑰密碼學之類的公共密鑰密碼學來對代碼鏡像進行加 密。證書可以包括基於X.509標準的密鑰。在框609,過程600的處理邏 輯可根據存儲在設備的安全ROM中的代碼(例如圖1所示的代碼115) 來驗證證書。在一個實施例中,過程600的處理邏輯可確認一連串的證 書,以利用作為該串中的最後一個證書的根證書來驗證所提取的證書。過 程600的處理邏輯可從所連接的主機計算機中取回證書。在一個實施例 中,可基於存儲在設備的安全ROM中的指紋(例如圖1所示的指紋 123)來驗證根證書。根證書可以是由蘋果計算機公司發布的。如果驗證 失敗,則在框613,過程600的處理邏輯可使設備返回到DFU模式以被恢 復。
如果來自代碼鏡像的證書被成功驗證,則過程600的處理邏輯可在框 615繼續恢復過程,以基於經驗證的證書中所包括的密鑰來對代碼鏡像進 行解密。在框617,過程600的處理邏輯可基於存儲在設備的安全ROM 中的UID (例如圖1所示的UID 119)而從代碼鏡像得出哈希籤名。在一 個實施例中,例如可根據圖4所示的過程來獲得哈希籤名。在框619,過 程600的處理邏輯可將得出的籤名籤署到代碼鏡像中。在一個實施例中, 得出的籤名可被籤署為代碼鏡像的頭部值。在框621,過程600的處理邏 輯可將經籤名的代碼鏡像存儲到設備的存儲裝置(例如圖1所示的存儲裝 置109)中。在一個實施例中,可存儲經籤名的代碼鏡像以修復設備中驗 證失敗的另一代碼鏡像。在一個實施例中,代碼鏡像可在存儲到設備的存 儲裝置之前被執行。在另一實施例中,代碼鏡像可在成功執行之後被存儲 到設備的存儲裝置中。
圖7是圖示從主機向設備執行操作環境的安全恢復的過程的一個實施 例的狀態圖。例如狀態700可表示圖l和/或圖5所示的系統的某些操作狀 態。在一個實施例中,設備可進入初始狀態Boot 701以開始啟動過程。存儲在設備的安全ROM中的指令可在狀態Boot 701期間被執行。在一個實 施例中,在狀態Boot 701期間,諸如圖2所示的LLB 229之類的低級別啟 動程序可位於設備內。該低級別啟動程序可被定位並加載到設備的存儲器 組件中。在一個實施例中,根據例如圖3的框305所描述的處理,可將所 定位的低級別啟動程序驗證為受信的代碼鏡像。如果低級別啟動程序被成 功定位和驗證,則狀態700可根據轉變Success (成功)711而從狀態 Boot 701進入LLB 703。否則,根據一個實施例,狀態700可在設備進入 DFU模式時通過轉變DFU 713而進入狀態Recoveryl 717。
在狀態Recoveryl 717期間,設備可與主機計算機相耦合以執行恢復 過程,例如圖5所示。在一個實施例中,設備可公布基於狀態Recoveryl 717的狀況。主機計算機可以發送與從設備接收到的狀況相對應的代碼鏡 像。在一個實施例中,代碼鏡像可以是圖2所示的LLB 229。設備可基於 存儲在設備的安全ROM內的UID和指紋(例如圖1的UID 119和指紋 123)執行一連串的確認,以驗證接收到的代碼鏡像是受信的。這一連串 的確認可基於與圖6中過程600的框609類似的處理而被執行。如果代碼 鏡像被成功加載和驗證,則在一個實施例中,設備的狀態可通過轉變Load (加載)715而從狀態Recoveryl 717轉變到狀態LLB 703 。
在一個實施例中,在狀態LLB701期間,設備可執行經驗證的低級別 啟動程序(例如,如上所述的LLB或低級別庫),以定位設備內的另一啟 動鏡像,例如圖2所示的iBoot231。在狀態LLB701期間,該啟動鏡像可 被定位並加載到設備的存儲器組件中。在一個實施例中,可根據例如圖3 的框305所描述的處理來將啟動鏡像驗證為受信的代碼鏡像。如果代碼鏡 像被成功定位和驗證,則狀態700可從狀態LLB 703進入狀態iBoot 705。 否則,根據一個實施例,狀態700可在設備進入DFU模式時進入狀態 Recovery2 719。
在狀態Recovery2 719期間,設備可與主機計算機相耦合以執行恢復 過程,例如圖5所示。在一個實施例中,設備可公布基於狀態Recovery2 719的狀況。在狀態Recovery2 719,主機計算機可以發送與從設備接收到 的狀況相對應的代碼鏡像。在一個實施例中,代碼鏡像可以是圖2所示的iBoot 231。設備可基於存儲在設備的安全ROM內的UID和指紋(例如圖 1的UID 119和指紋123)執行一連串的確認,以驗證接收到的代碼鏡像 是受信的。這一連串的確認可基於與圖6中過程600的框609類似的處理 而被執行。如果代碼鏡像被成功加載和驗證,則在一個實施例中,設備的 狀態可從狀態Recovery2 719轉變到狀態Kernelcache 707。
在狀態iBoot 705期間,根據一個實施例,設備可執行經驗證的啟動 程序以定位設備內的核心鏡像,例如圖2所示的Kemelcache 233。在狀態 iBoot 705期間,核心鏡像可被定位並加載到設備的存儲器組件中。在一個 實施例中,可根據例如圖3的框305所描述的處理來將啟動鏡像驗證為受 信的代碼鏡像。如果核心鏡像被成功定位和驗證,則狀態700可從狀態 iBoot 705進入狀態Kemelcache 707。否則,根據一個實施例,狀態700可 在設備進入DFU模式時進入狀態Recovery3 721 。
在狀態Recovery3 721期間,設備可與主機計算機相耦合以執行恢復 過程,例如圖5所示。在一個實施例中,設備可公布基於狀態Recovery3 721的狀況。在狀態Recovery3 721,主機計算機可以發送與從設備接收到 的狀況相對應的代碼鏡像。在一個實施例中,代碼鏡像可以是諸如圖2所 示的Kemelcache 233之類的核心鏡像。設備可基於存儲在設備的安全 ROM內的UID和指紋(例如圖1的UID 119和指紋123)執行一連串的確 認,以驗證接收到的代碼鏡像是受信的。這一連串的確認可基於與圖6中 過程600的框609類似的處理而被執行。如果代碼鏡像被成功加載和驗 證,則在一個實施例中,設備的狀態可從狀態Recovery3 721轉變到狀態 Kemelcache 707 。
在一個實施例中,在狀態Kemelcache 707期間,設備可執行經驗證的 核心鏡像以定位作業系統組件,例如圖2的235。所定位的作業系統組件 可被加載到設備的存儲器組件中,以根據在狀態Kemelcache 707期間對經 驗證的核心鏡像的執行而被驗證為可信的。在一個實施例中,核心鏡像可 根據例如圖3的框305所描述的處理來確定作業系統組件是否是受信的。 可基於核心鏡像而向受信的作業系統組件指派特許模式以訪問設備的硬體 級接口,例如圖2的UID 119或GID 123。沒有經籤署的籤名的作業系統組件可在狀態Kerndcache 707期間被指派用戶模式特許。在一個實施例 中,可能不允許作業系統組件訪問設備的硬體級接口。在作業系統被成功 加載到設備的存儲器中之後,狀態700可從狀態Kemdcache 707轉變到與 正常操作環境相對應的狀態OS 709。在狀態OS 709期間,用戶應用可開 始運行在所指派的用戶模式中。在一個實施例中,處於狀態Kernelcache 707的設備可進入DFU模式以從所耦合的主機計算機接收根鏡像,從而為 設備恢復或更新作業系統組件。
圖8是圖示從主機向設備安全恢復軟體組件的過程的一個實施例的流 程圖。例如,過程800可由圖l和/或圖5所示的系統執行。在一個實施例 中,在框801,過程800的處理邏輯可將設備配置為啟動設備。啟動設備 可以處於DFU模式。用戶可在設備的正常啟動期間按下設備的按鈕,以 將啟動設備配置成DFU模式。過程800的處理邏輯可被設備用戶故意激 活,以修復受損的應用軟體、更新舊的應用軟體、安裝固件組件或者管理 設備中所存儲的現有用戶數據。在框803,根據一個實施例,過程800的 處理邏輯可建立與主機計算機的網絡連接。設備和主機計算機可通過例如 圖5所示的網絡接口而連接。諸如來自蘋果計算機公司的iTime之類的恢 復軟體可運行在主機計算機上以與設備通信。在框805,過程800的處理 邏輯可通過網絡連接向主機計算機公布狀況,以標識設備處於恢復模式。 處於恢復模式的設備也可以處於DFU模式。在一個實施例中,狀況可包 括諸如設備ID和/或產品ID之類的信息。狀況可包括來自主機計算機的對 所需代碼鏡像的指示。
在框807,根據一個實施例,過程800的處理邏輯可從所連接的主機 計算機接收啟動鏡像。啟動鏡像可包括啟動加載程序(boot loader),例 如圖2所示的LLB 229或iBoot231。在一個實施例中,啟動鏡像可包括核 心緩存,例如圖2所示的Kernelcache 233。可基於在框805向主機計算機 公布的狀況來接收啟動鏡像。在一個實施例中,啟動鏡像可被加載到設備 的存儲器組件(例如圖1的存儲器103)中。在框809,過程800的處理 邏輯可從所連接的主機計算機接收根鏡像。根鏡像可以是基於設備操作系 統的剝離版本(stripped down version)的RAM盤。在一個實施例中,根鏡像可以包括恢復應用。
在框811,根據一個實施例,過程800的處理邏輯可從所連接的主機 計算機接收命令以執行所接收的啟動鏡像。啟動鏡像可以是啟動加載程
序。作為響應,在框813,過程800的處理邏輯可以驗證啟動鏡像是受信 的。在一個實施例中,過程800的處理邏輯可執行例如圖6所示的過程, 以基於諸如圖1的晶片105之類的安全ROM晶片來確定啟動鏡像是否是 受信的。在一個實施例中,在框815,過程800的處理邏輯可通過執行受 信的啟動鏡像來驗證從所連接的主機計算機接收到的Kemelcache是受信 的。過程800的處理邏輯可執行例如圖6所示的過程,以基於存儲在設備 中的根證書指紋(例如圖1中的指紋123)來確定Kemdcache是否可以是 受信的。在框817,過程800的處理邏輯可通過執行受信的Kemelcache來 驗證來自根鏡像的恢復守護應用是受信的。在一個實施例中,過程800的 處理邏輯可通過驗證根鏡像是受信的代碼鏡像來確定恢復守護應用可以是 受信的。過程800的處理邏輯可執行例如圖6所示的過程,以確定根鏡像 中所包括的恢復守護應用是否可以是受信的。
在框819,根據一個實施例,過程800的處理邏輯可通過恢復守護應 用從主機計算機接收和執行命令調用,以執行軟體恢復操作。在一個實施 例中,軟體恢復操作可包括海量存儲裝置的文件系統的分區和格式化、設 備級恢復或將新的固件加載到設備中。處理邏輯可啟動根鏡像中所包括的 OS,以發起設備中的恢復守護程序。在一個實施例中,OS中僅有縮減的 部分或者最低限度部分被開啟。該守護應用可基於XML (可擴展標記語 言)協議與運行在所連接的主機計算機中的恢復軟體進行通信。在一個實 施例中,恢復守護程序可使得運行在主機計算機上的恢復軟體能夠發布將 由設備執行的任意命令。這些命令可包括執行RAM盤中所包括的輔助工 具和/或進行庫調用。在一個實施例中,這些命令可使得對設備的海量存儲 裝置和可編程ROM中存儲的整個軟體集合進行替換。在框821,過程800 的處理邏輯可從所連接的主機計算機接收命令以重啟設備。作為響應,過 程800的處理邏輯可重置設備。隨後,設備可從存儲在設備的海量存儲裝 置中的作業系統而重新啟動。圖9是圖示從主機向設備安全地更新應用的過程的一個實施例的流程
圖。例如,過程900可由圖l和/或圖5所示的系統執行。在框901,過程 900的處理邏輯可建立與主機計算機的網絡連接。設備和主機計算機可通 過例如圖5所示的網絡接口而連接。諸如來自蘋果計算機公司的汀ime之 類的更新軟體可運行在主機計算機上以與設備通信。在框903,過程900 的處理邏輯可通過網絡連接向主機計算機公布狀況,以標識設備處於更新 模式。處於更新模式的設備也可以處於DFU模式。在一個實施例中,狀 況可包括諸如設備ID和/或產品ID之類的信息。狀況可包括對當前位於設 備內的應用的版本ID的指示。
在框905,根據一個實施例,過程900的處理邏輯可從所連接的主機 計算機接收代碼鏡像。基於來自由主機計算機在框903接收到的所公布的 狀況的版本ID,代碼鏡像可包括與應用的更新版本相關的軟體包。在一個 實施例中,代碼鏡像可被加載到設備的存儲器組件,例如圖1所示的存儲 器103。在框907,根據一個實施例,過程900的處理邏輯可驗證代碼鏡 像是受信的。過程900的處理邏輯可執行例如圖6所示的過程,以基於安 全ROM晶片中的根證書的指紋(例如圖l所示晶片105中的指紋123)來 確定代碼鏡像是否可以是受信的。在一個實施例中,在框909,過程900 的處理邏輯可以執行經驗證的代碼鏡像,以對來自所包括的軟體包的文件 進行解包並將那些文件放置在設備的文件系統內。來自軟體包的文件可以 是新的文件或者設備現有文件的更新版本。過程900的處理邏輯可對來自 軟體包的文件執行完整性檢查,以確保在將文件放置到設備的文件系統中 之前,文件未被損害或破壞。在一個實施例中,可根據對文件內容的哈 希,基於籤名來檢查文件的完整性。在框911,過程900的處理邏輯可重 置設備,以從存儲在設備內的作業系統來重新啟動。
圖10是圖示執行未經驗證的代碼鏡像的過程的一個實施例的流程 圖。例如,過程IOOO可由圖l所示的系統執行。在框1001,過程1000的 處理邏輯可禁止對設備中安全ROM的UID (例如圖1中的UID 119)的 訪問。在一個實施例中,受信的代碼鏡像可被配置為在被執行時關閉對 UID的訪問。在另一實施例中,設備的硬體開關可包括關閉對UID的訪問的設定。UID的訪問配置可以是根據設備的診斷或測試要求而指定的。受 信的代碼鏡像例如是通過設備的安全ROM內的代碼(例如圖1中的代碼
115)所驗證的啟動鏡像。在一個實施例中,可按與圖6所示的類似過程 來執行驗證。啟動鏡像可以是圖2所示的LLB 225或iBoot 227。在框 1003,過程1000的處理邏輯可將代碼鏡像加載到設備的存儲器組件(例 如圖1的RAM 111)中。在一個實施例中,過程1000的處理邏輯可基於 當前被執行的受信代碼鏡像的配置來加載代碼鏡像。可從耦合到設備的外 部網絡連接或海量存儲裝置來加載代碼鏡像。在一個實施例中,代碼鏡像 可包括用於設備的診斷軟體。
在框1005,過程1000的處理邏輯可通過執行代碼鏡像來激活用於訪 問設備硬體的編程接口 。可通過讀取或設定設備硬體參數的值來訪問設備 硬體。處理邏輯可從所加載的代碼鏡像得出哈希值,以確定代碼鏡像是否 未被損害(例如,未被破壞)。該確定可以基於所得出的哈希值與來自代 碼鏡像的頭部值之間的比較。在一個實施例中,在框1007,過程1000的 處理邏輯可以確定UID是不活動的。用於訪問設備硬體的編程接口可使得 執行安全ROM內的代碼(例如圖1中的代碼115),以確定UID是否是 活動的。在框1009,過程1000的處理邏輯繼續執行代碼鏡像,而不訪問 設備硬體。在一個實施例中,基於相關聯的UID是否活動,對設備硬體的 訪問可以受設備的安全ROM內的代碼控制。在另一實施例中,當UID不 是活動的時,用戶數據可能是不可訪問的。如果UID不是活動的,則即使 當未經驗證的應用在設備中被加載和執行時,設備硬體或用戶敏感數據也 不會被損害。
圖11示出可與本發明的一個實施例一起使用的數據處理系統的一個 示例。例如,系統1100可被實現為包括圖5所示的主機。注意到雖然圖 11圖示出計算機系統的各種組件,但並不是為了代表使組件互連的任何特 定體系結構或方式,因為這種細節與本發明不是密切相關的。還將認識 到,具有更少組件或者可能更多組件的網絡計算機或其他數據處理系統也 可與本發明一起使用。
如圖11所示,計算機系統IIOO是數據處理系統的形式,其包括總線1103,總線1103耦合到(一個或多個)微處理器1105禾n ROM (只讀存 儲器)1107以及易失性RAM 1109和非易失性存儲器1111。微處理器 1105可從存儲器1107、 U09和1111中取回指令,並執行指令以執行以上 所述的操作。總線1103將各種組件互連在一起,並且還將這些組件 1105、 1107、 1109和1111與顯示控制器和顯示裝置1113以及外圍設備互 連,這些外圍設備例如是輸入/輸出(I/O)裝置,可以是滑鼠、鍵盤、調 制解調器、網絡接口、印表機和本領域公知的其他裝置。通常,輸入/輸出 裝置1115通過輸入/輸出控制器1117耦合到系統。易失性RAM (隨機存 取存儲器)1109通常被實現為動態RAM (DRAM) , DRAM需要連續供 電以刷新或保持存儲器中的數據。
海量存儲裝置1111通常是磁性硬碟驅動器、磁光學驅動器、光學驅 動器、DVD RAM、快閃記憶體或者其他類型的存儲器系統,這些存儲器系統即 使在從設備去除電力之後也保持數據(例如,大量數據)。通常,海量存 儲裝置1111也是隨機存取存儲器,儘管這不是必需的。雖然圖11示出海 量存儲裝置1111是直接耦合到數據處理系統中的其餘組件的本地設備, 但是將會認識到,本發明可以利用遠離系統的非易失性存儲器,例如通過 諸如數據機、乙太網接口或無線網絡之類的網絡接口耦合到數據處理 系統的網絡存儲設備。總線1103可以包括通過各種橋、控制器和/或適配 器而彼此相連的一條或多條總線,這是本領域公知的。
圖12示出可與本發明一個實施例一起使用的另一數據處理系統的示 例。例如,系統1200可被實現為圖l所示的系統的一部分。圖12所示的 數據處理系統1200包括處理系統1211,並且該系統還包括用於存儲數據 和由處理系統執行的程序的存儲器1201,處理系統1211可以是一個或多 個微處理器或者可以是片上系統集成電路。系統1200還包括音頻輸入/輸 出子系統1205,音頻輸入/輸出子系統1205可以包括麥克風和揚聲器,以 例如通過揚聲器和麥克風來回放音樂或者提供電話功能。
顯示控制器和顯示裝置1207為用戶提供可視用戶接口;該數字接口 可包括與在運行OS X作業系統軟體時在Macintosh計算機上顯示的圖形用 戶接口類似的圖形用戶接口。系統1200還包括一個或多個無線收發器1203,以與另一數據處理系統(例如圖11的系統1100)通信。無線收發 器可以是WiFi收發器、紅外收發器、藍牙收發器和/或無線蜂窩電話收發
器。將會認識到,在某些實施例中,其他組件(未示出)也可以是系統
1200的一部分,並且在某些實施例中,也可以在數據處理系統中使用比圖 12所示更少的組件。
數據處理系統1200還包括一個或多個輸入裝置1213,提供輸入裝置 1213是為了使得用戶能夠向系統提供輸入。這些輸入裝置可以是鍵區 (keypad)、鍵盤、觸摸板或者多點觸摸板。數據處理系統1200還包括可 選的輸入/輸出裝置1215,輸入/輸出裝置1215可以是用於塢(dock)的連 接器。將會認識到,可使用一條或多條總線(未示出)來互連各種組件, 這是本領域公知的。圖12所示的數據處理系統可以是手持式計算機或個 人數字助理(PDA)、具有類似PDA的功能的蜂窩電話、包括蜂窩電話 的手持式計算機、媒體播放器(例如iPod)或者將這些設備的方面或功能 相結合的設備(例如在一個設備中將媒體播放器與PDA和蜂窩電話相結 合)。在其他實施例中,數據處理系統1200可以是網絡計算機或另一設 備內的嵌入式處理設備,或者比圖12所示的系統具有更少組件或者可能 更多組件的其他類型的數據處理系統。
發明的至少某些實施例可以是數字媒體播放器(例如可攜式音樂和/或 視頻媒體播放器)的一部分,該數字媒體播放器可包括用於呈現媒體的媒 體處理系統、用於存儲媒體的存儲設備,並且還可以包括與天線系統和媒 體處理系統相耦合的射頻(RF)收發器(例如,用於蜂窩電話的RF收發 器)。在某些實施例中,存儲在遠程存儲設備上的媒體可通過RF收發器 傳送到媒體播放器。媒體例如可以是音樂或其他音頻、靜態圖像或運動圖 像中的一者或多者。
可攜式媒體播放器可包括媒體選擇裝置、觸控螢幕輸入裝置、按鈕裝 置、可動指點輸入裝置或其他輸入裝置,其中媒體選擇裝置例如是來自加 利福尼亞州庫珀蒂諾市的蘋果計算機公司的iPod⑧或者iPod Nano⑧媒體播 放器上的撥輪(click wheel)輸入裝置。媒體選擇裝置可用於選擇存儲在 存儲設備和/或遠程存儲設備上的媒體。在至少某些實施例中,可攜式媒體播放器可以包括顯示裝置,該顯示裝置耦合到媒體處理系統以顯示通過輸 入裝置而被選擇或者被呈現的媒體的標題或其他指示符,其中通過揚聲器 或(一個或多個)耳機、或者在顯示裝置上、或者既在顯示裝置又在揚聲 器或(一個或多個)耳機上來呈現媒體。在公布的美國專利申請
2003/0095096和2004/0224638中描述了可攜式媒體播放器的示例,這兩個 專利申請通過引用結合於此。
以上描述的一些部分可利用諸如專用邏輯電路之類的邏輯電路來實 現,或者利用微控制器或者執行程序代碼指令的其他形式的處理核心來實 現。這樣,以上討論所教導的過程可利用程序代碼來執行,該程序代碼例 如是使得執行這些指令的機器執行某些功能的機器可執行指令。在該上下 文中,"機器"可以是將中間形式(或者"抽象")指令轉換成處理器具 體指令的機器(例如抽象執行環境,諸如"虛擬機"(例如,Java虛擬 機)、解釋器、公共語言運行庫(Common Language Runtime)、高級語 言虛擬機等),和/或被設計為執行指令的置於半導體晶片上的電子電路 (例如,用電晶體實現的"邏輯電路"),例如通用處理器和/或專用處理 器。以上討論所教導的過程也可以由被設計為執行這些過程(或者其一部 分)而不執行程序代碼的電子電路來執行(替換該機器或者結合該機 器)。
本發明還涉及用於執行這裡描繪的操作的裝置。該裝置可以是針對所 需目的而專門構建的,或者,該裝置可以包括由存儲在計算機中的計算機 程序來選擇性地激活或者重配置的通用計算機。這種電腦程式可被存儲 在計算機可讀存儲介質中,例如但不限於任何類型的盤(包括軟盤、光 盤、CD-ROM和磁光碟)、只讀存儲器(ROM) 、 RAM、 EPROM、 EEPROM、磁卡或光卡、或者任何類型的適於存儲電子指令並各自耦合到 計算機系統總線的介質。
機器可讀介質包括任何以機器(例如,計算機)可讀形式存儲或傳送 信息的機制。例如,機器可讀介質包括只讀存儲器("ROM");隨機存 取存儲器("RAM");磁碟存儲介質;光存儲介質;快閃記憶體裝置;電、 光、聲或其他形式的傳播信號(例如載波、紅外信號、數位訊號等);等等。
製造品可用於存儲程序代碼。存儲程序代碼的製造品可被實現為(但 不限於) 一個或多個存儲器(例如, 一個或多個快閃記憶體、隨機存取存儲器
(靜態的、動態的或者其他的))、光碟、CD-ROM、 DVD ROM、 EPROM、 EEPROM、磁卡或光卡、或者適於存儲電子指令的其他類型的 機器可讀介質。也可通過在傳播介質中實現的數據信號(例如,通過通信 鏈路(例如,網絡連接))將程序代碼從遠程計算機(例如,伺服器)下 載到作出請求的計算機(例如,客戶端)。
前述詳細描述是按照對計算機存儲器內的數據比特的操作的算法和符 號表示來呈現的。這些算法描述和表示是數據處理領域的技術人員將其工 作的實質最有效地傳遞給本領域其他技術人員所使用的工具。算法在這裡 一般被認為是產生所需結果的自洽操作序列。這些操作是需要對物理量進 行物理操縱的操作。通常,儘管不是必要的,但是這些量採用能夠被存 儲、傳輸、組合、比較或者以其他方式操作的電或磁信號的形式。有時己 證明了主要出於通用的原因,將這些信號稱為比特、值、元素、符號、字 符、項、數字等是方便的。
然而應當記住,所有這些和類似術語都將要適當物理量相關聯,並且 僅僅是用於這些量的方便標記。除非從以上討論可以清楚地明確看到,否 則將會認識到,在整個描述中,利用諸如"處理"、"計算"、"運 算"、"確定"或"顯示"等的術語的討論指的是計算機系統或類似電子 計算設備的動作和處理,該動作或處理對在計算機系統的寄存器或存儲器 中表示為物理(電子)量的數據進行操縱並將其變換成在計算機系統存儲 器或寄存器或者其他這種信息存儲、傳輸或顯示設備中類似地表示為物理 量的其他數據。
這裡所呈現的過程和顯示內容不是固有地與任何特定計算機或其他裝 置相關聯。各種通用系統可用於根據這裡的教導的程序,或者,可以證明 構建更加專門化的裝置來執行所描述的操作是方便的。各種這些系統所需 要的結構將從以下描述中變得明顯。另外,本發明不是參考任何特定編程 語言來描述的。將會認識到,可以使用各種程式語言來實現這裡描述的本發明的教導。
前述討論僅僅描述了本發明的一些示例性實施例。本領域技術人員將 容易地從這種討論、附圖和權利要求中認識到,可以作出各種修改而不脫 離本發明的精神和範圍。
權利要求
1.一種計算機實現的方法,包括執行從設備的ROM(只讀存儲器)嵌入的代碼,以利用所述ROM中存儲的密鑰來驗證第一代碼鏡像;以及響應於成功地驗證所述第一代碼鏡像,在所述設備的主存儲器中執行經驗證的第一代碼鏡像。
2. 如權利要求1所述的方法,還包括 從所述第一代碼鏡像得出哈希值;以及基於所述密鑰確定所述哈希值與來自所述第一代碼鏡像的第一頭部值 之間的匹配,其中,所述第一頭部值對所述第一代碼鏡像進行數字籤名。
3. 如權利要求2所述的方法,其中,所述執行經驗證的第一代碼鏡像的步驟包括從具有第二頭部值的第二代碼鏡像得出第二哈希值,其中,所述第二頭部值對所述第二代碼鏡像進行數字籤名;以及基於所述密鑰確定所述第二哈希值與所述第二頭部值之間的匹配。
4. 如權利要求3所述的方法,其中,所述確定步驟包括將所述第二哈希值加密為與所述密鑰相關聯的籤名值;以及 將所述籤名值與所述第二頭部值相比較,其中所述籤名值基於與所述 設備相關聯的種子字符串。
5. 如權利要求1所述的方法,其中,所述密鑰被配置來唯一地識別所 述設備。
6. 如權利要求1所述的方法,其中,所述設備是可攜式設備。
7. 如權利要求1所述的方法,其中,所述第一代碼鏡像被配置來為所 述設備建立操作環境。
8. 如權利要求1所述的方法,其中,所述第一代碼鏡像表示作業系統 (OS)的核心的組件,其中所述方法還包括對於所述OS的核心的每個組件,重複對每個組件的代碼鏡像的驗證和執行,直到所述核心的所有組 件已被驗證和執行為止。
9. 一種具有指令的機器可讀介質,所述指令在被機器執行時使得機器 執行一種方法,該方法包括執行從設備的ROM (只讀存儲器)嵌入的代碼,以利用所述ROM中 存儲的密鑰來驗證第一代碼鏡像;以及響應於成功地驗證所述第一代碼鏡像,在所述設備的主存儲器中執行 經驗證的第一代碼鏡像,從而為所述設備建立操作環境。
10. 如權利要求9所述的機器可讀介質,其中所述方法還包括 從所述第一代碼鏡像得出哈希值;以及基於所述密鑰確定所述哈希值與來自所述第一代碼鏡像的第一頭部值 之間的匹配,其中,所述第一頭部值對所述第一代碼鏡像進行數字籤名。
11. 如權利要求io所述的機器可讀介質,其中,所述執行經驗證的第一代碼鏡像的步驟包括從具有第二頭部值的第二代碼鏡像得出第二哈希值,其中,所述第二 頭部值對所述第二代碼鏡像進行數字籤名;以及基於所述密鑰確定所述第二哈希值與所述第二頭部值之間的匹配。
12. 如權利要求11所述的機器可讀介質,其中,所述確定步驟包括將所述第二哈希值加密為與所述密鑰相關聯的籤名值;以及 將所述籤名值與所述第二頭部值相比較,其中所述籤名值基於與所述 設備相關聯的種子字符串。
13. 如權利要求9所述的機器可讀介質,其中,所述密鑰被配置來唯 一地識別所述設備。
14. 如權利要求9所述的機器可讀介質,其中,所述設備是可攜式設備。
15. 如權利要求9所述的機器可讀介質,其中,所述第一代碼鏡像被 配置來為所述設備建立操作環境。
16. 如權利要求9所述的機器可讀介質,其中,所述第一代碼鏡像表 示作業系統(OS)的核心的組件,其中所述方法還包括對於所述OS的 核心的每個組件,重複對每個組件的代碼鏡像的驗證和執行,直到所述核 心的所有組件已被驗證和執行為止。
17. —種裝置,包括用於執行從設備的ROM (只讀存儲器)嵌入的代碼以利用所述ROM 中存儲的密鑰來驗證第一代碼鏡像的裝置;以及用於響應於成功地驗證所述第一代碼鏡像而在所述設備的主存儲器中 執行經驗證的第一代碼鏡像從而為所述設備建立操作環境的裝置。
18. —種電子設備,包括ROM (只讀存儲器),用於存儲嵌入在其中的代碼和識別所述電子設 備的密鑰;海量存儲裝置,用於存儲第一代碼鏡像; 主存儲器;以及耦合到所述R0M、所述海量存儲裝置和所述主存儲器的處理器,其 中所述處理器被配置來執行從所述ROM嵌入的代碼,以驗證來自所述海 量存儲裝置的所述第一代碼鏡像,並且被配置為在成功地驗證所述第一代 碼鏡像之後在所述主存儲器中執行經驗證的第一鏡像代碼以建立所述電子 設備的操作環境。
19. 一種計算機實現的方法,包括執行從可攜式設備的安全ROM (只讀存儲器)嵌入的代碼以驗證第 一可執行鏡像,該第一可執行鏡像表示提供所述可攜式設備的操作環境的 作業系統(OS)的核心,該第一可執行鏡像被利用所述安全ROM中存儲 的密鑰來驗證並且所述密鑰唯一地識別所述可攜式設備,其中所述第一可 執行鏡像被存儲在所述可攜式設備的海量存儲裝置中;以及在成功地驗證所述第一代碼鏡像之後,在所述可攜式設備的主存儲器 中執行所述第一可執行鏡像以建立所述OS的核心,從而建立所述可攜式 設備的操作環境。
20. 如權利要求19所述的方法,還包括在成功地執行所述第一可執 行鏡像之後,所述核心配置並加載來自所述海量存儲裝置的第二可執行鏡 像以建立所述OS的其餘部分,所述第二可執行鏡像表示用戶應用、用戶 數據和庫中的至少一者。
21. 如權利要求20所述的方法,其中,所嵌入的代碼和所述密鑰在從製造商發行所述可攜式設備之前被嵌入在所述安全ROM中,並且所述第一可執行鏡像被利用表示所述密鑰的數據進行數字籤名。
22. —種存儲有指令的機器可讀介質,所述指令在被機器執行時使得機器執行一種方法,該方法包括執行從可攜式設備的安全ROM (只讀存儲器)嵌入的代碼以驗證第 一可執行鏡像,該第一可執行鏡像表示提供所述可攜式設備的操作環境的 作業系統(OS)的核心,該第一可執行鏡像被利用所述安全ROM中存儲 的密鑰來驗證並且所述密鑰唯一地識別所述可攜式設備,其中所述第一可 執行鏡像被存儲在所述可攜式設備的海量存儲裝置中;以及在成功地驗證所述第一代碼鏡像之後,在所述可攜式設備的主存儲器 中執行所述第一可執行鏡像以建立所述OS的核心,從而建立所述可攜式 設備的操作環境。
23. 如權利要求22所述的機器可讀介質,其中,所述方法還包括在 成功地執行所述第一可執行鏡像之後,所述核心配置並加載來自所述海量 存儲裝置的第二可執行鏡像以建立所述OS的其餘部分,所述第二可執行 鏡像表示用戶應用、用戶數據和庫中的至少一者。
24. 如權利要求23所述的機器可讀介質,其中,所嵌入的代碼和所述 密鑰在從製造商發行所述可攜式設備之前被嵌入在所述安全ROM中,並 且所述第一可執行鏡像被利用表示所述密鑰的數據進行數字籤名。
25. —種計算機實現的方法,包括執行從設備的安全ROM (只讀存儲器)嵌入的第一可執行鏡像,以 初始化與所述設備相關聯的海量存儲設備,從而使得所述海量存儲設備能 夠被訪問,所述安全ROM中存儲了唯一地標識所述設備的唯一標識符 CID);在成功地初始化所述海量存儲設備之後,利用嵌入在所述安全ROM 中的所述唯一標識符(ID)來定位並驗證所述所述海量存儲設備中存儲的 第二可執行鏡像;在成功地驗證所述第二可執行鏡像之後,執行所述第二可執行鏡像以 在所述設備上執行低級別硬體初始化;所述第二可執行鏡像在被成功執行時定位並執行第三可執行鏡像,所 述第三可執行鏡像用於驗證和加載用於所述設備的作業系統(OS)的核心 鏡像,其中所述核心鏡像在被成功加載時初始化並配置用於所述設備的 OS的其餘部分。
26. 如權利要求25所述的方法,其中,當對所述第一、第二和第三可執行鏡像中的任何一個的驗證失敗時,所述方法還包括立即執行恢復過程以恢復相應的可執行鏡像,而不繼續執行隨後的可執行鏡像。
27. 如權利要求25所述的方法,其中,所述設備是可攜式設備。
28. —種存儲有指令的機器可讀介質,所述指令在被機器執行時使得 機器執行一種方法,該方法包括執行從設備的安全ROM (只讀存儲器)嵌入的第一可執行鏡像,以 初始化與所述設備相關聯的海量存儲設備,從而使得所述海量存儲設備能 夠被訪問,所述安全ROM中存儲了唯一地標識所述設備的唯一標識符(ID);在成功地初始化所述海量存儲設備之後,利用嵌入在所述安全ROM 中的所述唯一標識符(ID)來定位並驗證所述所述海量存儲設備中存儲的 第二可執行鏡像;在成功地驗證所述第二可執行鏡像之後,執行所述第二可執行鏡像以 在所述設備上執行低級別硬體初始化;所述第二可執行鏡像在被成功執行時定位並執行第三可執行鏡像,所 述第三可執行鏡像用於驗證和加載用於所述設備的作業系統(OS)的核心 鏡像,其中所述核心鏡像在被成功加載時初始化並配置用於所述設備的 OS的其餘部分。
29. 如權利要求27所述的機器可讀介質,其中,當對所述第一、第二 和第三可執行鏡像中的任何一個的驗證失敗時,所述方法還包括立即執 行恢復過程以恢復相應的可執行鏡像,而不繼續執行隨後的可執行鏡像。
30. 如權利要求27所述的機器可讀介質,其中,所述設備是可攜式設備。
全文摘要
本申請涉及安全啟動計算設備,並描述了用於執行嵌入在設備內的代碼以驗證加載到設備的存儲器中的代碼鏡像的方法和裝置。代碼鏡像可在被驗證為受信代碼鏡像之後被執行。所嵌入的代碼可被存儲在設備的安全ROM(只讀存儲器)晶片中。在一個實施例中,對代碼鏡像的驗證基於存儲在安全ROM晶片內的密鑰。該密鑰對於每個設備而言可以是唯一的。對密鑰的訪問可受相關安全ROM晶片的控制。設備可以在執行經驗證的代碼鏡像之後完成對操作環境的建立。
文檔編號G06F21/00GK101578609SQ200780049425
公開日2009年11月11日 申請日期2007年12月20日 優先權日2007年1月7日
發明者喬舒阿·德瑟薩勒, 約翰·安德魯·賴特, 達拉斯·布萊克·德阿特利, 麥可·史密斯 申請人:蘋果公司

同类文章

一種新型多功能組合攝影箱的製作方法

一種新型多功能組合攝影箱的製作方法【專利摘要】本實用新型公開了一種新型多功能組合攝影箱,包括敞開式箱體和前攝影蓋,在箱體頂部設有移動式光源盒,在箱體底部設有LED脫影板,LED脫影板放置在底板上;移動式光源盒包括上蓋,上蓋內設有光源,上蓋部設有磨沙透光片,磨沙透光片將光源封閉在上蓋內;所述LED脫影

壓縮模式圖樣重疊檢測方法與裝置與流程

本發明涉及通信領域,特別涉及一種壓縮模式圖樣重疊檢測方法與裝置。背景技術:在寬帶碼分多址(WCDMA,WidebandCodeDivisionMultipleAccess)系統頻分復用(FDD,FrequencyDivisionDuplex)模式下,為了進行異頻硬切換、FDD到時分復用(TDD,Ti

個性化檯曆的製作方法

專利名稱::個性化檯曆的製作方法技術領域::本實用新型涉及一種檯曆,尤其涉及一種既顯示月曆、又能插入照片的個性化檯曆,屬於生活文化藝術用品領域。背景技術::公知的立式檯曆每頁皆由月曆和畫面兩部分構成,這兩部分都是事先印刷好,固定而不能更換的。畫面或為風景,或為模特、明星。功能單一局限性較大。特別是畫

一種實現縮放的視頻解碼方法

專利名稱:一種實現縮放的視頻解碼方法技術領域:本發明涉及視頻信號處理領域,特別是一種實現縮放的視頻解碼方法。背景技術: Mpeg標準是由運動圖像專家組(Moving Picture Expert Group,MPEG)開發的用於視頻和音頻壓縮的一系列演進的標準。按照Mpeg標準,視頻圖像壓縮編碼後包

基於加熱模壓的纖維增強PBT複合材料成型工藝的製作方法

本發明涉及一種基於加熱模壓的纖維增強pbt複合材料成型工藝。背景技術:熱塑性複合材料與傳統熱固性複合材料相比其具有較好的韌性和抗衝擊性能,此外其還具有可回收利用等優點。熱塑性塑料在液態時流動能力差,使得其與纖維結合浸潤困難。環狀對苯二甲酸丁二醇酯(cbt)是一種環狀預聚物,該材料力學性能差不適合做纖

一種pe滾塑儲槽的製作方法

專利名稱:一種pe滾塑儲槽的製作方法技術領域:一種PE滾塑儲槽一、 技術領域 本實用新型涉及一種PE滾塑儲槽,主要用於化工、染料、醫藥、農藥、冶金、稀土、機械、電子、電力、環保、紡織、釀造、釀造、食品、給水、排水等行業儲存液體使用。二、 背景技術 目前,化工液體耐腐蝕貯運設備,普遍使用傳統的玻璃鋼容

釘的製作方法

專利名稱:釘的製作方法技術領域:本實用新型涉及一種釘,尤其涉及一種可提供方便拔除的鐵(鋼)釘。背景技術:考慮到廢木材回收後再加工利用作業的方便性與安全性,根據環保規定,廢木材的回收是必須將釘於廢木材上的鐵(鋼)釘拔除。如圖1、圖2所示,目前用以釘入木材的鐵(鋼)釘10主要是在一釘體11的一端形成一尖

直流氧噴裝置的製作方法

專利名稱:直流氧噴裝置的製作方法技術領域:本實用新型涉及ー種醫療器械,具體地說是ー種直流氧噴裝置。背景技術:臨床上的放療過程極易造成患者的局部皮膚損傷和炎症,被稱為「放射性皮炎」。目前對於放射性皮炎的主要治療措施是塗抹藥膏,而放射性皮炎患者多伴有局部疼痛,對於止痛,多是通過ロ服或靜脈注射進行止痛治療

新型熱網閥門操作手輪的製作方法

專利名稱:新型熱網閥門操作手輪的製作方法技術領域:新型熱網閥門操作手輪技術領域:本實用新型涉及一種新型熱網閥門操作手輪,屬於機械領域。背景技術::閥門作為流體控制裝置應用廣泛,手輪傳動的閥門使用比例佔90%以上。國家標準中提及手輪所起作用為傳動功能,不作為閥門的運輸、起吊裝置,不承受軸向力。現有閥門

用來自動讀取管狀容器所載識別碼的裝置的製作方法

專利名稱:用來自動讀取管狀容器所載識別碼的裝置的製作方法背景技術:1-本發明所屬領域本發明涉及一種用來自動讀取管狀容器所載識別碼的裝置,其中的管狀容器被放在循環於配送鏈上的文檔匣或託架裝置中。本發明特別適用於,然而並非僅僅專用於,對引入自動分析系統的血液樣本試管之類的自動識別。本發明還涉及專為實現讀