安全启动计算设备.pdf

上传人:e2 文档编号:1025121 上传时间:2018-03-26 格式:PDF 页数:40 大小:1.86MB
返回 下载 相关 举报
摘要
申请专利号:

CN200780049425.X

申请日:

2007.12.20

公开号:

CN101578609A

公开日:

2009.11.11

当前法律状态:

授权

有效性:

有权

法律详情:

授权|||实质审查的生效|||公开

IPC分类号:

G06F21/00

主分类号:

G06F21/00

申请人:

苹果公司

发明人:

迈克尔·史密斯; 乔舒阿·德瑟萨勒; 达拉斯·布莱克·德阿特利; 约翰·安德鲁·赖特

地址:

美国加利福尼亚州

优先权:

2007.1.7 US 11/620,689

专利代理机构:

北京东方亿思知识产权代理有限责任公司

代理人:

宋 鹤;南 霆

PDF下载: PDF下载
内容摘要

本申请涉及安全启动计算设备,并描述了用于执行嵌入在设备内的代码以验证加载到设备的存储器中的代码镜像的方法和装置。代码镜像可在被验证为受信代码镜像之后被执行。所嵌入的代码可被存储在设备的安全ROM(只读存储器)芯片中。在一个实施例中,对代码镜像的验证基于存储在安全ROM芯片内的密钥。该密钥对于每个设备而言可以是唯一的。对密钥的访问可受相关安全ROM芯片的控制。设备可以在执行经验证的代码镜像之后完成对操作环境的建立。

权利要求书

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.
  如权利要求10所述的机器可读介质,其中,所述执行经验证的第一代码镜像的步骤包括:
从具有第二头部值的第二代码镜像得出第二哈希值,其中,所述第二头部值对所述第二代码镜像进行数字签名;以及
基于所述密钥确定所述第二哈希值与所述第二头部值之间的匹配。

12.
  如权利要求11所述的机器可读介质,其中,所述确定步骤包括:
将所述第二哈希值加密为与所述密钥相关联的签名值;以及
将所述签名值与所述第二头部值相比较,其中所述签名值基于与所述设备相关联的种子字符串。

13.
  如权利要求9所述的机器可读介质,其中,所述密钥被配置来唯一地识别所述设备。

14.
  如权利要求9所述的机器可读介质,其中,所述设备是便携式设备。

15.
  如权利要求9所述的机器可读介质,其中,所述第一代码镜像被配置来为所述设备建立操作环境。

16.
  如权利要求9所述的机器可读介质,其中,所述第一代码镜像表示操作系统(OS)的核心的组件,其中所述方法还包括:对于所述OS的核心的每个组件,重复对每个组件的代码镜像的验证和执行,直到所述核心的所有组件已被验证和执行为止。

17.
  一种装置,包括:
用于执行从设备的ROM(只读存储器)嵌入的代码以利用所述ROM中存储的密钥来验证第一代码镜像的装置;以及
用于响应于成功地验证所述第一代码镜像而在所述设备的主存储器中执行经验证的第一代码镜像从而为所述设备建立操作环境的装置。

18.
  一种电子设备,包括:
ROM(只读存储器),用于存储嵌入在其中的代码和识别所述电子设备的密钥;
海量存储装置,用于存储第一代码镜像;
主存储器;以及
耦合到所述ROM、所述海量存储装置和所述主存储器的处理器,其中所述处理器被配置来执行从所述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中存储了唯一地标识所述设备的唯一标识符(ID);
在成功地初始化所述海量存储设备之后,利用嵌入在所述安全ROM中的所述唯一标识符(ID)来定位并验证所述所述海量存储设备中存储的第二可执行镜像;
在成功地验证所述第二可执行镜像之后,执行所述第二可执行镜像以在所述设备上执行低级别硬件初始化;
所述第二可执行镜像在被成功执行时定位并执行第三可执行镜像,所述第三可执行镜像用于验证和加载用于所述设备的操作系统(OS)的核心镜像,其中所述核心镜像在被成功加载时初始化并配置用于所述设备的OS的其余部分。

26.
  如权利要求25所述的方法,其中,当对所述第一、第二和第三可执行镜像中的任何一个的验证失败时,所述方法还包括:立即执行恢复过程以恢复相应的可执行镜像,而不继续执行随后的可执行镜像。

27.
  如权利要求25所述的方法,其中,所述设备是便携式设备。

28.
  一种存储有指令的机器可读介质,所述指令在被机器执行时使得机器执行一种方法,该方法包括:
执行从设备的安全ROM(只读存储器)嵌入的第一可执行镜像,以初始化与所述设备相关联的海量存储设备,从而使得所述海量存储设备能够被访问,所述安全ROM中存储了唯一地标识所述设备的唯一标识符(ID);
在成功地初始化所述海量存储设备之后,利用嵌入在所述安全ROM中的所述唯一标识符(ID)来定位并验证所述所述海量存储设备中存储的第二可执行镜像;
在成功地验证所述第二可执行镜像之后,执行所述第二可执行镜像以在所述设备上执行低级别硬件初始化;
所述第二可执行镜像在被成功执行时定位并执行第三可执行镜像,所述第三可执行镜像用于验证和加载用于所述设备的操作系统(OS)的核心镜像,其中所述核心镜像在被成功加载时初始化并配置用于所述设备的OS的其余部分。

29.
  如权利要求27所述的机器可读介质,其中,当对所述第一、第二和第三可执行镜像中的任何一个的验证失败时,所述方法还包括:立即执行恢复过程以恢复相应的可执行镜像,而不继续执行随后的可执行镜像。

30.
  如权利要求27所述的机器可读介质,其中,所述设备是便携式设备。

说明书

安全启动计算设备
技术领域
本发明一般涉及电子安全性。更具体地,本发明涉及安全地启动(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的ROM 113。代码115可包括SHA(安全哈希算法)哈希函数的实现,这些SHA哈希函数例如是密码哈希函数SHA-1、SHA-224、SHA-256、SHA-384和SHA-512。另外,代码115可包括诸如AES(高级加密标准)加密之类的数据加密算法的实现。在一个实施例中,代码115可引起对设备的硬件初始化,以支持诸如USB(通用串行总线)之类的连接或通信接口。代码115可包括用于改变设备的时钟速率的指令。注意到在整个该申请中,仅出于说明目的而利用SHA和AES作为示例;将会认识到,也可以利用其他哈希和/或加密技术。
在一个实施例中,代码115可使得将代码镜像加载到诸如存储器组件103或RAM 111之类的设备存储器中。可从与芯片105相耦合的存储装置组件109中加载代码镜像。存储装置组件109可以是诸如NAND闪存、NOR闪存之类的闪存,或者其他海量存储装置(例如,硬盘)组件。在另一实施例中,可通过连接接口101从设备外的源加载代码镜像。连接接口101可基于USB连接、以太网连接或者无线网络连接(例如,IEEE802.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而从RAM111存储的。
根据一个实施例,可根据LLB 225的执行,基于代码镜像iBoot 231从存储装置109将代码镜像iBoot 227加载到存储器组件111中。代码镜像iBoot 231可引起对操作系统的硬件初始化,该操作系统为容纳了系统100的设备提供操作环境。设备可在成功启动之后进入操作环境。操作环境可支持系统中运行的各种用户和/或系统应用。在一个实施例中,代码镜像iBoot 231可使能设备的海量存储装置组件、为用户接口初始化图形组件和/或为设备激活屏幕组件等。代码镜像iBoot 231可以是通过代码镜像LLB225的执行,基于代码镜像iBoot 227而从RAM 111存储的。
在一个实施例中,可基于代码镜像Kernelcache(核心缓存)233将代码镜像Kernelcache 223从存储装置109加载到存储器103。代码镜像Kernelcache 223可以是操作系统的用于支持设备的操作环境的核心的一部分。在一个实施例中,代码镜像Kernelcache 223使得核心和操作系统组件235从存储装置109加载到存储器103中。操作系统组件可包括用户应用、库、图形用户接口组件和/或用户数据235。用户数据可包括与设备用户相关联的音乐、图像、视频或者其他数字内容。例如,这种用户数据可以是具有受限用途的遵从DRM(数字权利管理)的数据。代码镜像Kernelcache 223可使得能够将核心和操作系统组件235加载到存储器103中。在一个实施例中,代码镜像Kernelcache 223可引起验证过程,以确保核心在存储器103中执行之前是受信的。在另一实施例中,代码镜像Kernelcache 223可引起验证过程,以确保操作系统组件235在存储器103中执行之前是受信的。可执行代码镜像Kernelcache 223以确定操作系统组件235是基于UID 119或指纹123而受信的。在一个实施例中,代码镜像Kernelcache 223可使得根据GID 121在存储器103中对操作系统组件235进行解密。在一个实施例中,可执行代码镜像Kernelcache 223以将来自存储器103的操作系统组件235存储到存储装置109中。代码镜像Kernelcache 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进入正常操作模式。在一个实施例中,Kernelcache 227可在设备进入正常操作之后开启运行在用户模式中的用户应用。运行在用户模式中的应用可以不访问与设备硬件有关的信息,例如图2的UID 119和GID121。如果在框313启动操作失败,则设备可进入DFU模式。
在框317,根据一个实施例,当过程300的处理逻辑在框313确定设备启动过程未完成时,启动过程可以继续。过程300的处理逻辑可基于执行当前代码镜像而在框313定位另一代码镜像。在一个实施例中,执行代码镜像LLB可定位图2所示的代码镜像iBoot。在另一实施例中,执行代码镜像iBoot可定位图2所示的代码镜像Kernelcache。在一些实施例中,执行代码镜像Kernelcache可定位包括图2所示的核心和操作系统组件在内的代码镜像。过程300的处理逻辑可返回到框319,以根据在框317定位下一代码镜像的结果来继续进行启动过程。
图4是图示基于UID和种子字符串从代码镜像生成签名的过程的一个实施例的流程图。例如,过程400可由图1所示的系统执行。在一个实施例中,过程400的处理逻辑对代码镜像411(例如图2所示的LLB 225、iBoot 227或Kernelcache 223)执行哈希操作409。哈希操作可基于SHA(安全哈希算法)哈希函数,例如密码哈希函数SHA-1、SHA-224、SHA-256、SHA-384和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可以是运行诸如来自苹果计算机公司的iTune应用之类的应用软件的基于Mac或Windows的计算机。主机503可通过网络505连接到中央服务器507,网络505例如是广域网(例如,因特网)或局域网(例如,内联网或对等网络)。在一个实施例中,中央服务器507可基于公众可访问的web服务器。或者,服务器507可以是内联网或者本地服务器。
图6是图示从主机向设备安全地恢复操作环境的过程的一个实施例的流程图。例如,过程600可由图1和/或图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 ShamirAdelman)公共密钥密码学之类的公共密钥密码学来对代码镜像进行加密。证书可以包括基于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可表示图1和/或图5所示的系统的某些操作状态。在一个实施例中,设备可进入初始状态Boot 701以开始启动过程。存储在设备的安全ROM中的指令可在状态Boot 701期间被执行。在一个实施例中,在状态Boot 701期间,诸如图2所示的LLB 229之类的低级别启动程序可位于设备内。该低级别启动程序可被定位并加载到设备的存储器组件中。在一个实施例中,根据例如图3的框305所描述的处理,可将所定位的低级别启动程序验证为受信的代码镜像。如果低级别启动程序被成功定位和验证,则状态700可根据转变Success(成功)711而从状态Boot 701进入LLB 703。否则,根据一个实施例,状态700可在设备进入DFU模式时通过转变DFU 713而进入状态Recovery1 717。
在状态Recovery1 717期间,设备可与主机计算机相耦合以执行恢复过程,例如图5所示。在一个实施例中,设备可公布基于状态Recovery1717的状况。主机计算机可以发送与从设备接收到的状况相对应的代码镜像。在一个实施例中,代码镜像可以是图2所示的LLB 229。设备可基于存储在设备的安全ROM内的UID和指纹(例如图1的UID 119和指纹123)执行一连串的确认,以验证接收到的代码镜像是受信的。这一连串的确认可基于与图6中过程600的框609类似的处理而被执行。如果代码镜像被成功加载和验证,则在一个实施例中,设备的状态可通过转变Load(加载)715而从状态Recovery1 717转变到状态LLB 703。
在一个实施例中,在状态LLB 701期间,设备可执行经验证的低级别启动程序(例如,如上所述的LLB或低级别库),以定位设备内的另一启动镜像,例如图2所示的iBoot 231。在状态LLB 701期间,该启动镜像可被定位并加载到设备的存储器组件中。在一个实施例中,可根据例如图3的框305所描述的处理来将启动镜像验证为受信的代码镜像。如果代码镜像被成功定位和验证,则状态700可从状态LLB 703进入状态iBoot 705。否则,根据一个实施例,状态700可在设备进入DFU模式时进入状态Recovery2 719。
在状态Recovery2 719期间,设备可与主机计算机相耦合以执行恢复过程,例如图5所示。在一个实施例中,设备可公布基于状态Recovery2719的状况。在状态Recovery2 719,主机计算机可以发送与从设备接收到的状况相对应的代码镜像。在一个实施例中,代码镜像可以是图2所示的iBoot 231。设备可基于存储在设备的安全ROM内的UID和指纹(例如图1的UID 119和指纹123)执行一连串的确认,以验证接收到的代码镜像是受信的。这一连串的确认可基于与图6中过程600的框609类似的处理而被执行。如果代码镜像被成功加载和验证,则在一个实施例中,设备的状态可从状态Recovery2 719转变到状态Kernelcache 707。
在状态iBoot 705期间,根据一个实施例,设备可执行经验证的启动程序以定位设备内的核心镜像,例如图2所示的Kernelcache 233。在状态iBoot 705期间,核心镜像可被定位并加载到设备的存储器组件中。在一个实施例中,可根据例如图3的框305所描述的处理来将启动镜像验证为受信的代码镜像。如果核心镜像被成功定位和验证,则状态700可从状态iBoot 705进入状态Kernelcache 707。否则,根据一个实施例,状态700可在设备进入DFU模式时进入状态Recovery3 721。
在状态Recovery3 721期间,设备可与主机计算机相耦合以执行恢复过程,例如图5所示。在一个实施例中,设备可公布基于状态Recovery3721的状况。在状态Recovery3 721,主机计算机可以发送与从设备接收到的状况相对应的代码镜像。在一个实施例中,代码镜像可以是诸如图2所示的Kernelcache 233之类的核心镜像。设备可基于存储在设备的安全ROM内的UID和指纹(例如图1的UID 119和指纹123)执行一连串的确认,以验证接收到的代码镜像是受信的。这一连串的确认可基于与图6中过程600的框609类似的处理而被执行。如果代码镜像被成功加载和验证,则在一个实施例中,设备的状态可从状态Recovery3 721转变到状态Kernelcache 707。
在一个实施例中,在状态Kernelcache 707期间,设备可执行经验证的核心镜像以定位操作系统组件,例如图2的235。所定位的操作系统组件可被加载到设备的存储器组件中,以根据在状态Kernelcache 707期间对经验证的核心镜像的执行而被验证为可信的。在一个实施例中,核心镜像可根据例如图3的框305所描述的处理来确定操作系统组件是否是受信的。可基于核心镜像而向受信的操作系统组件指派特许模式以访问设备的硬件级接口,例如图2的UID 119或GID 123。没有经签署的签名的操作系统组件可在状态Kernelcache 707期间被指派用户模式特许。在一个实施例中,可能不允许操作系统组件访问设备的硬件级接口。在操作系统被成功加载到设备的存储器中之后,状态700可从状态Kernelcache 707转变到与正常操作环境相对应的状态OS 709。在状态OS 709期间,用户应用可开始运行在所指派的用户模式中。在一个实施例中,处于状态Kernelcache707的设备可进入DFU模式以从所耦合的主机计算机接收根镜像,从而为设备恢复或更新操作系统组件。
图8是图示从主机向设备安全恢复软件组件的过程的一个实施例的流程图。例如,过程800可由图1和/或图5所示的系统执行。在一个实施例中,在框801,过程800的处理逻辑可将设备配置为启动设备。启动设备可以处于DFU模式。用户可在设备的正常启动期间按下设备的按钮,以将启动设备配置成DFU模式。过程800的处理逻辑可被设备用户故意激活,以修复受损的应用软件、更新旧的应用软件、安装固件组件或者管理设备中所存储的现有用户数据。在框803,根据一个实施例,过程800的处理逻辑可建立与主机计算机的网络连接。设备和主机计算机可通过例如图5所示的网络接口而连接。诸如来自苹果计算机公司的iTune之类的恢复软件可运行在主机计算机上以与设备通信。在框805,过程800的处理逻辑可通过网络连接向主机计算机公布状况,以标识设备处于恢复模式。处于恢复模式的设备也可以处于DFU模式。在一个实施例中,状况可包括诸如设备ID和/或产品ID之类的信息。状况可包括来自主机计算机的对所需代码镜像的指示。
在框807,根据一个实施例,过程800的处理逻辑可从所连接的主机计算机接收启动镜像。启动镜像可包括启动加载程序(boot loader),例如图2所示的LLB 229或iBoot 231。在一个实施例中,启动镜像可包括核心缓存,例如图2所示的Kernelcache 233。可基于在框805向主机计算机公布的状况来接收启动镜像。在一个实施例中,启动镜像可被加载到设备的存储器组件(例如图1的存储器103)中。在框809,过程800的处理逻辑可从所连接的主机计算机接收根镜像。根镜像可以是基于设备操作系统的剥离版本(stripped down version)的RAM盘。在一个实施例中,根镜像可以包括恢复应用。
在框811,根据一个实施例,过程800的处理逻辑可从所连接的主机计算机接收命令以执行所接收的启动镜像。启动镜像可以是启动加载程序。作为响应,在框813,过程800的处理逻辑可以验证启动镜像是受信的。在一个实施例中,过程800的处理逻辑可执行例如图6所示的过程,以基于诸如图1的芯片105之类的安全ROM芯片来确定启动镜像是否是受信的。在一个实施例中,在框815,过程800的处理逻辑可通过执行受信的启动镜像来验证从所连接的主机计算机接收到的Kernelcache是受信的。过程800的处理逻辑可执行例如图6所示的过程,以基于存储在设备中的根证书指纹(例如图1中的指纹123)来确定Kernelcache是否可以是受信的。在框817,过程800的处理逻辑可通过执行受信的Kernelcache来验证来自根镜像的恢复守护应用是受信的。在一个实施例中,过程800的处理逻辑可通过验证根镜像是受信的代码镜像来确定恢复守护应用可以是受信的。过程800的处理逻辑可执行例如图6所示的过程,以确定根镜像中所包括的恢复守护应用是否可以是受信的。
在框819,根据一个实施例,过程800的处理逻辑可通过恢复守护应用从主机计算机接收和执行命令调用,以执行软件恢复操作。在一个实施例中,软件恢复操作可包括海量存储装置的文件系统的分区和格式化、设备级恢复或将新的固件加载到设备中。处理逻辑可启动根镜像中所包括的OS,以发起设备中的恢复守护程序。在一个实施例中,OS中仅有缩减的部分或者最低限度部分被开启。该守护应用可基于XML(可扩展标记语言)协议与运行在所连接的主机计算机中的恢复软件进行通信。在一个实施例中,恢复守护程序可使得运行在主机计算机上的恢复软件能够发布将由设备执行的任意命令。这些命令可包括执行RAM盘中所包括的辅助工具和/或进行库调用。在一个实施例中,这些命令可使得对设备的海量存储装置和可编程ROM中存储的整个软件集合进行替换。在框821,过程800的处理逻辑可从所连接的主机计算机接收命令以重启设备。作为响应,过程800的处理逻辑可重置设备。随后,设备可从存储在设备的海量存储装置中的操作系统而重新启动。
图9是图示从主机向设备安全地更新应用的过程的一个实施例的流程图。例如,过程900可由图1和/或图5所示的系统执行。在框901,过程900的处理逻辑可建立与主机计算机的网络连接。设备和主机计算机可通过例如图5所示的网络接口而连接。诸如来自苹果计算机公司的iTune之类的更新软件可运行在主机计算机上以与设备通信。在框903,过程900的处理逻辑可通过网络连接向主机计算机公布状况,以标识设备处于更新模式。处于更新模式的设备也可以处于DFU模式。在一个实施例中,状况可包括诸如设备ID和/或产品ID之类的信息。状况可包括对当前位于设备内的应用的版本ID的指示。
在框905,根据一个实施例,过程900的处理逻辑可从所连接的主机计算机接收代码镜像。基于来自由主机计算机在框903接收到的所公布的状况的版本ID,代码镜像可包括与应用的更新版本相关的软件包。在一个实施例中,代码镜像可被加载到设备的存储器组件,例如图1所示的存储器103。在框907,根据一个实施例,过程900的处理逻辑可验证代码镜像是受信的。过程900的处理逻辑可执行例如图6所示的过程,以基于安全ROM芯片中的根证书的指纹(例如图1所示芯片105中的指纹123)来确定代码镜像是否可以是受信的。在一个实施例中,在框909,过程900的处理逻辑可以执行经验证的代码镜像,以对来自所包括的软件包的文件进行解包并将那些文件放置在设备的文件系统内。来自软件包的文件可以是新的文件或者设备现有文件的更新版本。过程900的处理逻辑可对来自软件包的文件执行完整性检查,以确保在将文件放置到设备的文件系统中之前,文件未被损害或破坏。在一个实施例中,可根据对文件内容的哈希,基于签名来检查文件的完整性。在框911,过程900的处理逻辑可重置设备,以从存储在设备内的操作系统来重新启动。
图10是图示执行未经验证的代码镜像的过程的一个实施例的流程图。例如,过程1000可由图1所示的系统执行。在框1001,过程1000的处理逻辑可禁止对设备中安全ROM的UID(例如图1中的UID 119)的访问。在一个实施例中,受信的代码镜像可被配置为在被执行时关闭对UID的访问。在另一实施例中,设备的硬件开关可包括关闭对UID的访问的设定。UID的访问配置可以是根据设备的诊断或测试要求而指定的。受信的代码镜像例如是通过设备的安全ROM内的代码(例如图1中的代码115)所验证的启动镜像。在一个实施例中,可按与图6所示的类似过程来执行验证。启动镜像可以是图2所示的LLB 225或iBoot 227。在框1003,过程1000的处理逻辑可将代码镜像加载到设备的存储器组件(例如图1的RAM111)中。在一个实施例中,过程1000的处理逻辑可基于当前被执行的受信代码镜像的配置来加载代码镜像。可从耦合到设备的外部网络连接或海量存储装置来加载代码镜像。在一个实施例中,代码镜像可包括用于设备的诊断软件。
在框1005,过程1000的处理逻辑可通过执行代码镜像来激活用于访问设备硬件的编程接口。可通过读取或设定设备硬件参数的值来访问设备硬件。处理逻辑可从所加载的代码镜像得出哈希值,以确定代码镜像是否未被损害(例如,未被破坏)。该确定可以基于所得出的哈希值与来自代码镜像的头部值之间的比较。在一个实施例中,在框1007,过程1000的处理逻辑可以确定UID是不活动的。用于访问设备硬件的编程接口可使得执行安全ROM内的代码(例如图1中的代码115),以确定UID是否是活动的。在框1009,过程1000的处理逻辑继续执行代码镜像,而不访问设备硬件。在一个实施例中,基于相关联的UID是否活动,对设备硬件的访问可以受设备的安全ROM内的代码控制。在另一实施例中,当UID不是活动的时,用户数据可能是不可访问的。如果UID不是活动的,则即使当未经验证的应用在设备中被加载和执行时,设备硬件或用户敏感数据也不会被损害。
图11示出可与本发明的一个实施例一起使用的数据处理系统的一个示例。例如,系统1100可被实现为包括图5所示的主机。注意到虽然图11图示出计算机系统的各种组件,但并不是为了代表使组件互连的任何特定体系结构或方式,因为这种细节与本发明不是密切相关的。还将认识到,具有更少组件或者可能更多组件的网络计算机或其他数据处理系统也可与本发明一起使用。
如图11所示,计算机系统1100是数据处理系统的形式,其包括总线1103,总线1103耦合到(一个或多个)微处理器1105和ROM(只读存储器)1107以及易失性RAM 1109和非易失性存储器1111。微处理器1105可从存储器1107、1109和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可被实现为图1所示的系统的一部分。图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、磁卡或光卡、或者适于存储电子指令的其他类型的机器可读介质。也可通过在传播介质中实现的数据信号(例如,通过通信链路(例如,网络连接))将程序代码从远程计算机(例如,服务器)下载到作出请求的计算机(例如,客户端)。
前述详细描述是按照对计算机存储器内的数据比特的操作的算法和符号表示来呈现的。这些算法描述和表示是数据处理领域的技术人员将其工作的实质最有效地传递给本领域其他技术人员所使用的工具。算法在这里一般被认为是产生所需结果的自洽操作序列。这些操作是需要对物理量进行物理操纵的操作。通常,尽管不是必要的,但是这些量采用能够被存储、传输、组合、比较或者以其他方式操作的电或磁信号的形式。有时已证明了主要出于通用的原因,将这些信号称为比特、值、元素、符号、字符、项、数字等是方便的。
然而应当记住,所有这些和类似术语都将要适当物理量相关联,并且仅仅是用于这些量的方便标记。除非从以上讨论可以清楚地明确看到,否则将会认识到,在整个描述中,利用诸如“处理”、“计算”、“运算”、“确定”或“显示”等的术语的讨论指的是计算机系统或类似电子计算设备的动作和处理,该动作或处理对在计算机系统的寄存器或存储器中表示为物理(电子)量的数据进行操纵并将其变换成在计算机系统存储器或寄存器或者其他这种信息存储、传输或显示设备中类似地表示为物理量的其他数据。
这里所呈现的过程和显示内容不是固有地与任何特定计算机或其他装置相关联。各种通用系统可用于根据这里的教导的程序,或者,可以证明构建更加专门化的装置来执行所描述的操作是方便的。各种这些系统所需要的结构将从以下描述中变得明显。另外,本发明不是参考任何特定编程语言来描述的。将会认识到,可以使用各种编程语言来实现这里描述的本发明的教导。
前述讨论仅仅描述了本发明的一些示例性实施例。本领域技术人员将容易地从这种讨论、附图和权利要求中认识到,可以作出各种修改而不脱离本发明的精神和范围。

安全启动计算设备.pdf_第1页
第1页 / 共40页
安全启动计算设备.pdf_第2页
第2页 / 共40页
安全启动计算设备.pdf_第3页
第3页 / 共40页
点击查看更多>>
资源描述

《安全启动计算设备.pdf》由会员分享,可在线阅读,更多相关《安全启动计算设备.pdf(40页珍藏版)》请在专利查询网上搜索。

本申请涉及安全启动计算设备,并描述了用于执行嵌入在设备内的代码以验证加载到设备的存储器中的代码镜像的方法和装置。代码镜像可在被验证为受信代码镜像之后被执行。所嵌入的代码可被存储在设备的安全ROM(只读存储器)芯片中。在一个实施例中,对代码镜像的验证基于存储在安全ROM芯片内的密钥。该密钥对于每个设备而言可以是唯一的。对密钥的访问可受相关安全ROM芯片的控制。设备可以在执行经验证的代码镜像之后完成对。

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 物理 > 计算;推算;计数


copyright@ 2017-2020 zhuanlichaxun.net网站版权所有
经营许可证编号:粤ICP备2021068784号-1