CN102165457B - 票券授权的安全安装和引导 - Google Patents

票券授权的安全安装和引导 Download PDF

Info

Publication number
CN102165457B
CN102165457B CN200980137324.7A CN200980137324A CN102165457B CN 102165457 B CN102165457 B CN 102165457B CN 200980137324 A CN200980137324 A CN 200980137324A CN 102165457 B CN102165457 B CN 102165457B
Authority
CN
China
Prior art keywords
ticket
assembly
directing assembly
equipment
specific components
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Expired - Fee Related
Application number
CN200980137324.7A
Other languages
English (en)
Other versions
CN102165457A (zh
Inventor
J·豪克
M·L·H·布罗维尔
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Apple Inc
Original Assignee
Apple Computer Inc
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Apple Computer Inc filed Critical Apple Computer Inc
Publication of CN102165457A publication Critical patent/CN102165457A/zh
Application granted granted Critical
Publication of CN102165457B publication Critical patent/CN102165457B/zh
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/50Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
    • G06F21/57Certifying or maintaining trusted computer platforms, e.g. secure boots or power-downs, version controls, system software checks, secure updates or assessing vulnerabilities
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/50Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
    • G06F21/57Certifying or maintaining trusted computer platforms, e.g. secure boots or power-downs, version controls, system software checks, secure updates or assessing vulnerabilities
    • G06F21/572Secure firmware programming, e.g. of basic input output system [BIOS]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/50Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
    • G06F21/57Certifying or maintaining trusted computer platforms, e.g. secure boots or power-downs, version controls, system software checks, secure updates or assessing vulnerabilities
    • G06F21/575Secure boot
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/60Protecting data
    • G06F21/62Protecting access to data via a platform, e.g. using keys or access control rules

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Computer Hardware Design (AREA)
  • General Engineering & Computer Science (AREA)
  • Computer Security & Cryptography (AREA)
  • Software Systems (AREA)
  • General Physics & Mathematics (AREA)
  • Physics & Mathematics (AREA)
  • Health & Medical Sciences (AREA)
  • Bioethics (AREA)
  • General Health & Medical Sciences (AREA)
  • Stored Programmes (AREA)
  • Storage Device Security (AREA)
  • Devices For Checking Fares Or Tickets At Control Points (AREA)

Abstract

本发明涉及票券授权的安全安装和引导。本文描述一种用于安全的软件安装以便引导被票券授权的设备的方法和装置。为了票券发送包括设备的设备标识符的票券请求,该票券包括用于一个或多个组件将设备引导到操作状态中的属性。票券被加密地确认以便使一个或多个组件与票券内包括的相应属性匹配。如果成功匹配,则执行一个或多个组件以引导设备。

Description

票券授权的安全安装和引导
相关申请的交叉引用
本申请涉及JerryHauck等人于2008年7月28日提交的标题为“AuthorizedInstallationandCross-ComponentSecuredBoot(授权的安装和跨组件安全引导)”的美国临时专利申请No.61/084,170,并要求该申请的权益,由此其全部内容通过引用并入本文。
技术领域
本发明一般涉及设备的安装和引导软件。更具体地,本发明涉及安全地安装引导组件并且将设备引导到根据接收到的票券(ticket)授权的操作状态中。
背景技术
随着越来越多的计算设备在人们的日常生活中被使用,对于用户和内容提供者而言安全性已经成为一个广泛关注的问题。病毒、蠕虫、特洛伊木马、身份盗用、软件和媒体内容盗版以及使用数据破坏的威胁来勒索是猖獗的。通常,这些攻击涉及安装和执行恶意软件代码来暴露对设备资源的访问,否则该设备资源对于系统、内容提供者、用户或应用软件是私有的。
操作系统可以提供一些安全特征来防止这种攻击。然而,操作系统的安全特征经常不能跟上基于每天发生的新攻击。此外,当引导计算设备时,安全特征可能尚未被初始化并且易受旁路和/或篡改的攻击。
为了减少系统漏洞(exploit)的可能性,可以采用安全引导系统要求每个产品软件图像的签名校验(verify)。然而,这种代码核查手段可能不是完全防弹(bulletproof),因为所包含的代码数量通常非常大并且持续增长。
因此,目前的安全手段不能给予一种稳健的解决方案,其保护计算设备内部的应用和内容,同时为设备提供更新软件和/或固件的灵活性。
发明内容
本文描述了一种用于安全软件安装以便引导被票券授权的设备的方法和装置。为了票券而发送包括设备的设备标识符的票券请求,该票券包括用于一个或多个组件的属性以将设备引导到操作状态中。对票券进行加密地确认以使一个或多个组件与票券内包括的相应属性匹配。如果成功匹配,则执行一个或多个组件以引导设备。
根据附图和随后的详细描述,本发明的其他特征将很明显。
附图说明
本发明通过实例进行例示,而不受限于附图的图形,其中相同的附图标记表示相似的元件,并且其中:
图1是例示用于授权安装用于根据授权的票券安全引导设备的引导组件的网络化系统的一个实施例的框图;
图2是例示用于接收授权的票券以便安装用于引导设备的引导组件的系统组件的一个实施例的框图。
图3是例示用于安装被票券授权的引导组件的过程的一个实施例的流程图;
图4是例示基于票券引导设备的过程的一个实施例的流程图;
图5是例示用于安装被票券授权的引导组件以便引导设备的过程的一个实施例的流程图;
图6是例示用于确认为设备个性化的引导组件的过程的一个实施例的流程图;
图7是例示用于请求授权用于引导设备的引导组件的票券的过程的一个实施例的流程图;
图8是例示用于安装为根据票券引导设备而个性化的引导组件的过程的一个实施例的流程图;
图9是例示用于安装被票券授权用于引导设备的引导组件的过程的一个实施例的序列图(sequencediagram);
图10是例示用于授权引导设备的引导组件的票券的一个实例的样本格式;
图11是例示可以与本文描述的实施例结合使用的典型计算机系统的一个实例;
图12示出可以用于本发明的一个实施例的数据处理系统的实例。
具体实施方式
本文描述了一种用于安全软件安装以便引导被票券授权的设备的方法和装置。在下面的描述中,阐述许多特定细节来提供对本发明实施例的透彻解释。然而,对于本领域技术人员而言,显然可以不用这些特定细节来实施本发明的实施例。在另一些情形中,为了不搞混对本文的理解,不详细显示熟知的组件、结构和技术。
在说明书中对“一个实施例”或“实施例”的提及意味着与实施例有关描述的特定的特征、结构或特性可被包括在本发明的至少一个实施例中。在说明书中不同地方出现的短语“在一个实施例中”不必都指同一个实施例。
通过包含硬件(例如电路、专用逻辑块等)、软件(诸如在通用计算机系统或专用机器上运行的)或两者的组合的处理逻辑块来执行随附的附图中描述的过程。虽然下面按照一些顺序操作来描述这些过程,但是应该意识到可以按不同顺序来执行所描述的操作中的一些操作。此外,可以并行而非顺序地执行一些操作。
术语“主机”和术语“设备”旨在一般指数据处理系统而非专门指用于主机的特定形式因数相对用于设备的形式因数。
在一个实施例中,本文描述了一个方案,该方案允许开发者可以通过请求要由远程服务器在安装期间产生的每个设备的数字签名来保守秘密(putthecatbackinthebag)。因此如果在软件的特定版本中发现漏洞,则服务器可以拒绝允许任何单元安装该版本。此外,服务器产生的个性化签名可以将安装的引导组件的集合作为一个整体进行保护,由此减少了由各个署名组件的混合和匹配导致的潜在的暴露。引导组件可以是用于引导设备的软件组件。
根据本发明的某些实施例,提供了可能存在的三种主要的安全保护:
·防止新制造的单元安装有漏洞的发布(exploitablerelease)
·防止现有的现场单元重新安装有漏洞的发布
·防止署名组件的任意混合和匹配
通过在逐设备的基础上个性化代码签名可以完成对于实现前两种保护所必需的后-发布撤消。例如,使用APPLEROM(只读存储器)的Image3基础(foundation),可以防止各个设备执行尚未为设备个性化的任何低级引导组件。通过远程服务器在安装时有效产生(对于每个设备是唯一的)每个设备签名,由此避免设备方署名和个性化内在的安全风险。用于停留或安全地保持给定发布所必要的个性化的服务器方决定等同于对该发布的安装者的撤消,至少从新制造单元的观点来看。目前使设备生成的随机当前量(nonce)与服务器交换相结合可以消除在现场单元上的之前安装的重放。
服务器生成的个性化包括产生“票券”。票券可以在安全引导和恢复过程中为每个组件提供预期的散列(hash)和版本标识符的集合。经由设备唯一的标识符为给定单元个性化该集合。可以用单一的签名来保护包括个性化的完整集合。一旦被给予(传递给)单元(例如电子设备)并被确认,则票券可以在为设备定义特定发布的预期和允许的组件版本上用做中央机构(authority)。通过针对中央票券中的相应值确认每个阶段的后续引导时间测量结果,设备可以放弃服务器的混合和匹配组件的权利。
在服务器方个性化和授权功能中维持的灵活策略可以发布许多安全和逻辑(logistical)问题,例如关于P2版本的系统。例如,不需要专门的软件来运行未经校验的代码或第三方代码。此外,服务器上丰富的白名单可以使生产单元转变成开发单元且反之亦然,或者可以迅速地限制能够运行给定载体或调试构件(build)的设备的种群。
图1是例示用于授权安装用于根据授权的票券安全引导设备的引导组件的网络化系统100的一个实施例的框图。网络化系统100可以包括经由信任和/或不信任的网络耦接到设备的一个或多个服务器,以提供通过票券授权的用于引导设备的引导组件。在一个实施例中,网络化系统100包括可以为设备115生成操作环境的不同构件的组件构件(componentbuild)服务器101。每个构件可以包括不同版本的多个引导组件。当从组件构件服务器101发布构件时,组件构件服务器101可以生成票券署名授权以配置票券授权服务器113。票券署名授权可以包括指令,该指令例如基于设备标识符和/或设备分类标识符等来指定哪个版本的引导组件和/或引导组件的组合被允许用于特定设备。
在一个实施例中,操作策略确定发行的票券署名授权的种类。操作策略可以包括产品策略、内部策略、工厂策略和其他可选的策略。关于产品策略,仅诸如组件构件服务器101的组件构件服务器将为产品发行票券署名授权。产品票券署名授权可以既不包括设备白名单也不包括通配符摘要(digest),因此需要设备类以及票券请求中的所有摘要以在票券署名授权中匹配这些。对于内部策略,内部票券署名授权可以包括通配符摘要和/或用于内部使用的设备的白名单以允许设备安装和运行任何软件。通常,只可以在内部网络上或经由安全的通信信道访问具有内部票券署名授权的票券授权服务器。通配符摘要可以匹配票券请求,而与票券请求中包括的实际摘要/散列值无关。仅当设备的唯一标识符出现在白名单中时,署名授权中设备的白名单才可以为设备发行票券。
对于工厂策略,工厂票券署名授权可以包括用于选定引导组件(例如内核缓存(kernelcache)组件和或非(NOR)诊断组件)的通配符摘要,以允许设备安装发布的软件,而与设备中当前运行的是哪个版本的选定引导组件无关。在工厂之外不可以访问具有工厂票券署名授权的工厂授权服务器。通过用有限的有效性数据或白名单的单元(例如载体跌落(carrierdrop)只能运行在预置列表的设备上)来产生票券署名授权可以即时(onthefly)产生新策略。
当配置票券授权服务器113时,可以根据接收到的票券署名授权来更新配置数据。在一个实施例中,组件构件服务器101和票券授权服务器113经由信任的网络连接111通信地耦接。网络可以物理地位于信任的安全位置中。或者,可以根据基于加密协议,例如SSL(安全套接字层)、PVN(私人虚拟网络)的安全连接或其他安全连接来信任一个网络。
在一个实施例中,主机服务器107可以经由网络111下载从组件构件服务器101发布的构件,网络111可以是不信任的网络,例如因特网或以太网。主机服务器中的构件存储器109可以存储下载的构件。每个构件可以包括一组原始引导组件(rawbootcomponent)。在一个实施例中,组件构件服务器101发送要存储在主机服务器107中的票券模板。票券模板可以包括用于单个构件和/或跨过多个构件(混合-和-匹配)的原始引导组件的一个或多个标识符。在一个实施例中,引导组件的标识符可以包括从引导组件和/或版本号的内容生成的加密摘要。票券模板可以包括主机服务器107中存储的引导组件的标识符,例如基于从组件构件服务器101发布的特定构件。原始引导组件可以是并非为特定设备个性化的引导组件。在一个实施例中,设备115可以通过诸如因特网的开放式网络111从主机服务器107下载引导设备115所需的引导组件。例如,设备115可以向主机服务器107周期性地发送关于新构件的可用性的查询(例如基于与设备115相关的版本号)以在可用时下载相关联的原始引导组件和/或票券模板。
通常,设备115可以根据存储在设备115内部(例如在闪速存储器中)的一组的一个或多个个性化组件117而引导到操作状态中。在一个实施例中,用于设备的个性化组件可以基于针对设备唯一加密的,即,个性化的原始引导组件。这组个性化组件117可以基于从主机服务器下载的原始引导组件的组合,该原始引导组件选自专用于设备115(例如根据署名票券119)的一个构件和/或跨过不同的构件。在一个实施例中,设备115将例如包括从主机服务器107下载的原始票券的票券请求通过开放式网络111发送给票券授权服务器113,用于使设备115个性化以便引导。票券授权服务器113可以确定用于设备115的这组个性化组件117,以生成正如根据从组件构件服务器101接收到的授权进行配置的票券。署名的票券119可以包括由票券授权服务器113加密署名的签名。
图2是例示用于接收授权票券以便安装用于引导设备的引导组件的系统200组件的一个实施例的框图。系统200可以寄存在诸如图1的设备115的设备中。在一个实施例中,系统200包括在例如随机存取存储器(RAM)和/或只读存储器(ROM)的存储器中存储的设备系统207,设备系统207与例如闪速存储器的大容量存储器221耦接。设备系统207可以通过网络219经由外部接口201与诸如图1的主机服务器107或票券授权服务器113的远程服务器耦接。在一个实施例中,设备系统207可以例如经由外部接口201使用USB(通用串行总线)连接与主机设备本地耦接。
设备系统207可以包括根据公共密钥加密术例如在工厂中的设备制造期间为众所周知的安全机构预安装的根公共密钥205。此外,设备系统207可以包括诸如芯片标识符、芯片序列号、设备分类标识符或其他UID(唯一标识符)的一个或多个设备标识符209。设备标识符可以存储在设备中的非易失性存储器中。在设备的ROM中可以受限地访问设备的UID。可以通过对来自设备标识符209(例如芯片标识符和芯片序列号)的多于一个标识符进行组合来获得设备系统207的附加的唯一标识符。在一个实施例中,大容量存储器221可以存储本地票券(或本地引导票券)223和一个或多个引导组件,例如用于引导设备系统207的组件_i225和组件_j227。本地票券223可以与设备系统207的当前操作环境相关联。组件_i225和组件_j227可以是从诸如图1的主机服务器107的主机服务器下载的原始引导组件(尚未被确认和/或个性化)。
在一个实施例中,设备系统207包括票券取回(retrieve)模块217、加密模块213和引导模块215。加密模块213可以包括基于如下的加密操作的实施方式:例如SHA(安全哈希算法)哈希函数,诸如SHA-1、SHA-224、SHA-256、SHA-384和SHA-512,数据加密算法,诸如AES(先进加密标准)加密术,和/或公共密钥加密术,诸如RSA(拉尔夫哈沙米阿德尔曼)公共密钥加密术。票券取回模块217可以将票券请求发送给授权服务器,诸如图1的票券授权服务器113,以便对用于引导设备系统207的票券进行授权。在一个实施例中,票券取回模块217响应于经由外部接口201接收到的外部命令来发送票券请求。票券取回模块217可以为票券请求即时生成诸如当前量211的一个或多个随机数(例如用于设备内部的基带系统的单独的当前量)。在一个实施例中,票券请求可以包括当设备(或单元)执行安装以引导设备时会在署名票券中访问的一个或多个域。例如,票券请求中的域可以包括诸如设备标识符209的用于设备的标识符,诸如当前量211的生成的随机数,和/或通用组件名称(或通用ID)和相应的唯一组件标识符(例如由指定组件生成的加密摘要)的映射。票券请求中的设备标识符可以得自存储在设备中的一个或多个标识符,诸如来自设备标识符209的序列号和芯片标识符的组合。在一些实施例中,票券请求还包括元数据以提供诸如图1的票券授权服务器113的授权服务器(或票券署名服务器),以确定应用哪个策略(例如关于允许哪个组件的一组约束)来生成署名票券。响应于例如从票券授权服务器113接收到的署名票券119,票券取回模块217可以调用加密模块213以便基于根公共密钥205和/或为相应的票券请求生成的当前量211来校验署名票券119是否可信。票券取回模块217可以将成功确认的票券存储在大容量存贮器221中。
根据一个实施例,引导模块215执行一个或多个引导操作,包括从大容量存贮器221加载诸如组件_j227的引导组件。可选地,引导模块215可以从外部接口201外部接收引导组件。引导模块215可以调用加密模块213以根据署名票券119、设备标识符209和/或根公共密钥205来确认诸如组件_j227的引导组件。在一个实施例中,引导操作与引导标记(flag)203中设置的值相关联。引导模块215可以在执行引导操作时更新引导标记203。在一些实施例中,引导模块215调用加密模块213以根据设备标识符209来个性化(例如加密)被确认的引导组件,而将确认的引导组件存储到大容量存贮器221中。在引导模块215中实施的引导操作可以包括激活诸如组件_j227中的被确认的引导模块。
图3是例示用于安装被票券授权的引导组件的过程300的一个实施例的流程图。可以通过处理逻辑块来执行示例性过程300,处理逻辑块可以包含硬件(电路、专用逻辑块等)、软件(诸如在专用机器上运行的),或两者的组合。例如,可以通过图2的设备系统207执行过程300。在一个实施例中,在框301处,过程300的处理逻辑块向诸如图1的授权(或票券署名)服务器113的预定远程服务器发送票券请求,以便一组(软件)组件将设备引导到操作状态中。过程300的处理逻辑块可以生成票券请求,该票券请求用于根据诸如图2的引导标记203的设置在设备中的引导模式来引导设备。票券请求可以包括诸如名称(或属性)值对的一个或多个域。票券请求中的域可以相应于用于设备的标识符,诸如图2的设备标识符209。在一个实施例中,名称值对指定期望的引导组件来引导设备,以映射由该组件生成的组件标识符(名称)和摘要(值)。摘要可以是唯一的加密值,诸如引导组件中二进制代码的散列。在一个实施例中,过程300的处理逻辑块基于从诸如图2的大容量存贮器221的存储器设备取回的票券模板生成用于票券请求的一个或多个域。过程300的处理逻辑块可以生成随机数作为票券请求中包括的随机询问器(challenger)。可以将生成的随机数暂存在设备中,诸如图2的当前量211。每个票券请求可以与不同随机数唯一相关联。
随后在框303处,过程300的处理逻辑块可以响应于票券请求来接收来自票券授权服务器的署名票券。署名票券可以包括根据票券请求为设备个性化的域的集合。例如,票券授权服务器可以确定根据票券请求的域指定的引导组件是否被允许用于在票券请求(例如根据配置策略基于用于设备的类和/或一个或多个唯一标识符)中识别的设备。在一些实施例中,票券授权服务器可以插入域以便指定在相应的票券请求中没参照的引导组件。可选地,票券授权服务器可以在署名票券中指定引导组件,该引导组件在相应的票券请求中被识别但是与不同于票券请求中包括的属性值的属性值(例如具有不同摘要值的不同版本)相关联。因此,个性化票券可以为不同设备指定引导组件的不同集合。
在框305处,在一个实施例中,过程300的处理逻辑块对接收的署名票券进行确认。值得注意的,署名票券可以包括由票券授权服务器加密署名的签名。在一个实施例中,票券授权服务器可以使用设备的唯一标识符(例如包括在票券请求中的)对署名的签名进行加密,以使署名的签名个性化。过程300的处理逻辑块可以根据例如图2的加密模块213对署名票券执行加密操作。在一个实施例中,署名票券包括一个证书或一系列证书。过程300的处理逻辑块可以根据已存储在设备中的、诸如图2的根公共密钥205的信任的密钥来确认署名票券中包括的证书,以便相对所包括的签名来校验由署名票券生成的摘要。在一个实施例中,为设备个性化的署名票券包括通过用于设备的单独的标识符(例如分别根据用于设备的序列号和芯片标识符)来加密的签名和证书。此外,署名票券可以包括随机询问数(一个数字)。过程300的处理逻辑块可以对署名票券中包括的随机询问数与设备中存储的诸如图2的当前量211的当前量进行比较,以确定署名票券的有效性,例如当前量是否与随机询问数匹配。
在框309处,如果在框307处署名票券被确定有效,则过程300的处理逻辑块可以根据署名票券加载用于安装的一个或多个引导组件。例如,过程300的处理逻辑块可以将署名票券中识别的引导组件加载到存储器中。在一个实施例中,过程300的处理逻辑块从诸如图2的大容量存贮器221的本地存储器中加载引导组件。可选地,过程300的处理逻辑块可以加载如从外部源接收到的引导组件,外部源例如是使用USB本地耦接的主机设备。过程300的处理逻辑块可以选择在署名票券中指定的引导组件之一来按照预定顺序进行加载。在框307处,如果确定署名票券无效,则过程300的处理逻辑块可以进行以在框313处执行无效票券处理例行程序,例如对诸如图2的引导标记203的标记进行更新以指示引导失败。
在框311处,过程300的处理逻辑块可以确定一个或多个加载的引导组件是否有效。在一个实施例中,过程300的处理逻辑块对引导组件的加密摘要与署名票券中指定的相应摘要进行比较。过程300的处理逻辑块可以例如根据由图2的加密模块213执行的散列(hash)函数来生成加密摘要。在一些实施例中,可以根据设备的唯一标识符来个性化(例如加密)在署名票券中包括引导组件的摘要的域。过程300的处理逻辑块可以对用于加载的引导组件的署名票券中指定的版本号与加载的引导组件中包括的版本号(例如在报头中)进行比较。可以如在署名票券中所指定地比较加载的引导组件的其他属性。如果与引导组件相关联的任何属性与署名票券中指定的相应属性不匹配,则过程300的处理逻辑块可以使加载的引导组件无效。
在一个实施例中,在框315处,如果加载的引导组件有效,则在框319处,过程300的处理逻辑块将加载的引导组件安装到系统中。安装引导组件可以包括使要存储在例如图2的大容量存贮器221的大容量存贮器设备中的引导组件个性化。过程300的处理逻辑块可以加密引导组件,以便例如根据诸如从图2的设备标识符209获得的设备的唯一标识符使引导组件个性化。在一个实施例中,安装引导组件包括执行用于引导设备的引导组件。执行用于引导设备的引导组件可以包括作为用于引导组件的依据(argument)使署名票券通过。在框315处,如果确定加载的引导组件无效,则在框317处,过程300的处理逻辑块可以进行以执行无效票券处理例行程序,例如对诸如图2的引导标记203的标记进行更新以指示引导失败。
图4是例示基于票券引导设备的过程400的一个实施例的流程图。可以通过处理逻辑块执行示例性过程400,处理逻辑块可以包含硬件(电路、专用逻辑块等)、软件(诸如在专用机器上运行的),或两者的组合。例如,可以通过图2的系统200的一些组件来执行过程400。在一个实施例中,在框401处,过程400的处理逻辑块例如根据图2的引导标记203的设置来为设备确定引导模式。在一个实施例中,如果设备处于DFU(设备固件升级)模式,则处理逻辑块进行以执行DFU操作435。否则,过程400的处理逻辑块可以在框403处加密地校验本地存储的LLB(低级引导(lowlevelboot))组件是否可信。LLB组件可以是用于引导设备的引导组件。当本地存储在例如图2的大容量存贮器221的设备中时,可以使用例如图2的设备标识符209中的UID来加密LLB组件。可以在设备的ROM内严格地访问用于设备的UID。在一个实施例中,诸如LLB组件的可执行引导组件包括版本标识符、证书和/或例如基于(署名的或未署名的)摘要通过信任的机构加密署名的签名。过程400的处理逻辑块可以(例如基于硬件设置)对设备中存储的周期数(epochnumber)与LLB组件包括的版本标识符进行比较,以确定LLB组件是否可信。例如,可能不允许在设备中执行版本标识符小于设备中存储的周期数的LLB组件。
在一个实施例中,在框405处,如果LLB被确定为可信,则在框411处,过程400的处理逻辑块从诸如图2的大容量存贮器221的存储器设备中将本地票券(本地存储的引导票券)拷贝到安全的RAM中。过程400的处理逻辑块可以例如根据与由图3的框305处的过程300的处理逻辑块执行的类似的操作而在框413处确认本地票券。在框415处,如果确定本地票券无效,则过程400的处理逻辑块可以在框417处更新诸如图2的引导标记203的设备设置,以便迫使设备进入DFU模式。否则,在框419处,过程400的处理逻辑块可以对LLB组件的版本标识符与根据相应于LLB组件的域在本地票券中指定的版本进行比较。在框421处,如果LLB组件不包括与本地票券匹配的版本,则在框417处,过程400的处理逻辑块可以将设备配置成DFU模式。否则,在一个实施例中,在框423处,过程400的处理逻辑块可以从位于诸如图2的大容量存贮器221的本地存储器设备中的iBoot组件生成加密摘要,以生成摘要而与本地票券中指定的相应摘要进行比较。iBoot组件可以是用于第二阶段引导加载器(loader)的引导组件。
在框425处,如果为iBoot组件生成的摘要与本地票券中指定的摘要匹配,则过程的处理逻辑块可以进行到执行IBoot操作433(例如执行iBoot组件)以引导设备。否则,在框417处,过程400的处理逻辑块可以使设备进入DFU模式。在一个实施例中,如果LLB组件被确定为无效,例如如在框405中不能被校验,或者被确定为不正确,例如如在框421中版本匹配失败,则过程400的处理逻辑块可以使LLB组件中包括的签名无效,或者从本地存储器设备中除去LLB组件。在一些实施例中,可以在掩膜ROM427或者LLB组件429内部实施过程400的处理逻辑块的多个部分。
图5是例示用于安装被票券授权的引导组件以便引导设备的过程500的一个实施例的流程图。可以通过处理逻辑块执行示例性过程500,处理逻辑块可以包含硬件(电路、专用逻辑块等)、软件(诸如在专用机器上运行的),或两者的组合。例如,可以通过图2的系统200的一些组件来执行过程500。在一个实施例中,在框501处,过程500的处理逻辑块对由例如包括公司商标(标志,logo)的图像的第一商标组件生成的摘要与在诸如图4的过程400中框419处校验的本地票券的本地票券中指定的相应摘要进行比较。如果在框503处两个摘要匹配,则过程500的处理逻辑块可以在框505处显示第一商标组件。否则,过程500的处理逻辑块可以例如根据图2的引导标记203的设备设置来确定设备是否处于FR(强制恢复)模式。如果设备不处于FR模式,则过程500的处理逻辑块可以在框509处例如基于设备设置来确定设备是否处于AB(自动引导)模式。
在一个实施例中,在框511处,如果确定设备处于AB模式,则过程500的处理逻辑块可以分别由例如在图2的大容量存贮器设备221中本地存储的设备树组件和内核缓存(kernelcache)组件生成设备树摘要和内核缓存摘要。设备树组件和内核缓存组件可以是用于引导设备的引导组件。在一个实施例中,过程500的处理逻辑块可以对设备树摘要和内核缓存摘要与本地票券中指定的相应摘要进行比较。如果两个摘要与本地票券中的相应摘要匹配,则在框515处,过程500的处理逻辑块可以执行内核缓存组件,包括例如使本地票券作为一个参数通过。如果在框513处匹配失败,或者在框507处设备处于FR模式,或者在框509处设备既不处于FR模式也不处于AB模式,则过程500的处理逻辑块可以在框517处对由例如包括引导状态商标的图像的第二商标组件生成的摘要与本地票券中指定的相应摘要进行比较。如果在框519处两个摘要匹配,则在框521处过程500的处理逻辑块可以显示第二商标组件。否则,过程500的处理逻辑块可以进行以在框523处执行恢复操作以引导设备。在一个实施例中,可以在iBoot组件中实施过程500的处理逻辑块的多个部分。
图6是例示用于确认为设备个性化的引导组件的过程600的一个实施例的流程图。可以通过处理逻辑块执行示例性过程600,处理逻辑块可以包含硬件(电路、专用逻辑块等)、软件(诸如在专用机器上运行的),或两者的组合。例如,可以通过图2的系统200的一些组件来执行过程600。在一个实施例中,过程600的处理逻辑块执行用于引导处于DFU模式的设备的操作,该设备经由USB连接与诸如MAC(Machintosh)计算机的主机设备耦接。在框601处,过程600的处理逻辑块例如基于图2的设备标识符209将用于设备的唯一标识符发送给包括指示设备处于DFU模式的指示器的主机设备。
随后在框603处,过程600的处理逻辑块可以从主机接收DFU组件存入存储器(例如设备的RAM)中。可以根据唯一标识符使DFU组件个性化(例如加密)。在一个实施例中,DFU组件是用于引导设备的引导组件,诸如iBoot组件或者iBSS组件(包括没有大容量存储器支持的LLB组件和iBoot组件)。在框605处,过程600的处理逻辑块可以确定接收的DFU组件是否有效,例如执行类似于在图4的框403处的过程400的操作。如果在框607处DFU组件被确定为无效,则过程600的处理逻辑块可以回到框601处将唯一标识符再次发送给耦接的主机。否则,如果DFU组件有效,则过程600的处理逻辑块可以继续执行用于引导设备的恢复操作523。在一个实施例中,可以在设备的掩膜ROM内部加载的引导组件中实施过程600的处理逻辑块。
图7是例示用于请求授权用于引导设备的引导组件的票券的过程700的一个实施例的流程图。可以通过处理逻辑块执行示例性过程700,处理逻辑块可以包含硬件(电路、专用逻辑块等)、软件(诸如在专用机器上运行的),或两者的组合。例如,可以通过图2的系统200的一些组件来执行过程700。在一个实施例中,过程700的处理逻辑块执行用于引导设备的恢复操作523。在框701处,过程700的处理逻辑块可以从例如经由USB连接与设备本地耦接的恢复主机外部接收命令和/或文件。过程700的处理逻辑块可以在框703处检测接收的命令是否是询问请求。如果在框705处接收的命令是询问请求,则过程700的处理逻辑块可以生成当前量(或随机数)。在一个实施例中,过程700的处理逻辑块将诸如图2的当前量211的所生成的当前量本地存储在设备中。过程700的处理逻辑块可以在生成当前量时设置诸如当前量_生成标记的标记值。在框707处,过程700的处理逻辑块可以将安装询问发送给恢复主机。安装询问可以包括用于设备的唯一标识符(例如设备ID),由设备生成的当前量,设备中的当前引导票券,和/或一个或多个引导组件(例如设备中当前加载的LLB、iBoot或者iBSS组件)的版本号。当前引导票券可以是例如基于从诸如图2的大容量存储器221的存储器设备中取回的本地票券,在设备的存储器中当前加载的引导票券。在一个实施例中,恢复主机经由网络连接与诸如图1的票券授权服务器113的票券授权服务器远程通信耦接。恢复主机可以向票券授权服务器发送根据由本地耦接的设备接收的安装询问生成的票券请求。
如果在框703处接收的命令不是询问请求,则过程700的处理逻辑块可以在框709处确定接收的命令是否是指示从恢复主机接收的文件是DFU文件的DFU文件通知。如果已经接收到DFU文件,则过程700的处理逻辑块可以在框711处将DFU文件拆包(unpack)到安全的RAM中。DFU文件可以包括引导组件,诸如公司商标、设备树、内存盘、内核缓存组件和/或具有还原扩展(extension)的引导票券。引导票券可以包括作为还原扩展的域,其用于为设备指定例如内存盘的引导组件,以执行用于引导的还原操作。
在框709处,如果接收的外部文件不是DFU文件,则过程700的处理逻辑块可以确定(例如从恢复主机)接收的外部命令是否是预定组命令之一(例如bootx命令或者setpicture命令)。在框713处,如果接收的外部命令不是预定组命令之一,则过程700的处理逻辑块可以在框701处继续接收外部命令和/或文件。否则,在框715处,过程700的处理逻辑块可以例如基于诸如图2的引导标记203中的当前量_生成值的标记值来检查是否已经将当前量发送给恢复主机。在框715处,如果尚未将当前量发送给恢复主机,则在框701处,过程700的处理逻辑块可以继续接收外部命令和/或文件。否则,在框717处,过程700的处理逻辑块可以确认引导票券(包括扩展),例如从恢复主机接收的引导票券。在一个实施例中,过程700的处理逻辑块执行类似于图3的框305处的过程300的加密操作,以确定引导票券是否有效。
在框721处,如果引导票券未被确认,则在框701处,过程700的处理逻辑块可以继续接收外部命令和/或文件。否则,在框719处,过程700的处理逻辑块可以对本地存储在设备中的一个或多个引导组件的版本与引导票券(例如从恢复主机接收的引导票券)中指定的相应版本进行比较。在一个实施例中,如果引导票券被确认,则过程700的处理逻辑块使诸如当前量_生成标记的标记复位。在框723处识别出任何不匹配的情况下,过程700的处理逻辑块可以在框701处继续接收外部命令和/或文件。否则,过程700的处理逻辑块可以在框725处确定(例如从恢复主机)接收的外部命令是否是setpicture命令。在一个实施例中,如果在框723处识别出无不匹配,则过程700的处理逻辑块用接收的引导票券代替存储器中的当前引导票券。
在框725处,如果接收的外部命令是setpicture命令,则在框727处,过程700的处理逻辑块可以根据例如在DFU文件中从恢复主机接收的公司商标组件来显示公司商标。否则,在框731处,过程700的处理逻辑块可以例如根据图2的加密模块213来为从DFU文件中接收的引导组件计算(或生成)加密摘要。在一个实施例中,在框729处,过程700的处理逻辑块确定计算的摘要与(例如从恢复主机接收的)引导票券中指定的相应摘要是否匹配。在框729处,在摘要的任何不匹配的情况下,在框701处,过程700的处理逻辑块可以继续接收外部命令和/或文件。否则,过程700的处理逻辑块可以进行以执行用于引导设备的还原操作733。在一个实施例中,诸如iBoot组件或iBSS组件的引导组件包括用于过程700的处理逻辑块的实施方式。
图8是例示用于安装为根据票券引导设备而个性化的引导组件的过程800的一个实施例的流程图。可以通过处理逻辑块执行示例性过程800,处理逻辑块可以包含硬件(电路、专用逻辑块等)、软件(诸如在专用机器上运行的),或两者的组合。例如,可以通过图2的系统200的一些组件来执行过程800。在一个实施例中,过程800的处理逻辑块执行用于引导设备的还原操作733。在框801处,过程800的处理逻辑块可以在例如存储在诸如图2的大容量存贮器221的存储器设备中的本地引导票券中设置FR标记。在引导时,FR标记可以指示用于设备的FR模式。在一个实施例中,在框803处,过程800的处理逻辑块可以例如基于ASR(苹果软件还原)操作生成磁盘图像,以便引导设备。磁盘图像可以是包括数据和代码的引导组件。在框805处,过程800的处理逻辑块可以对由磁盘图像加密生成的摘要与引导票券中(例如在从恢复主机接收的引导票券的扩展域中)指定的相应摘要进行比较。在框807处,如果摘要不匹配,则过程800的处理逻辑块可以直接进行以执行重新引导操作431。
否则,如果在生成的磁盘图像与引导票券之间存在匹配,则过程800的处理逻辑块可以在框809处接收包括闪存(flash)组件(例如all_flashplist)的列表的文件。闪存组件可以是用于引导设备的引导组件。在框811处,过程800的处理逻辑块可以为每个列表的闪存组件计算(生成)加密摘要。在一个实施例中,在框813处,过程800的处理逻辑块对用于每个闪存组件的摘要与引导票券中指定的相应摘要进行比较。在框815处,如果检测到任何不匹配,则过程800的处理逻辑块可以进行以执行重新引导操作431。否则,在框817处,过程800的处理逻辑块可以根据例如在图2的设备标识符209中的UID的唯一标识符来使存储器中当前加载的一个或多个引导组件(例如LLB组件)个性化(例如加密)。在一个实施例中,在框819处,过程800的处理逻辑块可以将诸如LLB组件(个性化的)、商标组件、设备树组件、iBoot组件等的引导组件存储到例如图2的大容量存贮器221的设备的闪速存储器中。随后,在框821处,过程800的处理逻辑块可以将来自存储器的引导票券(例如从恢复主机接收的当前引导票券)存储到闪速存储器中以代替本地存储的引导票券。在框823处,过程800的处理逻辑块可以更新用于引导设备的引导标记,诸如图2的引导标记203。例如,过程800的处理逻辑块可以设置(启用)引导OS标记并且清除用于重新引导操作431的FR标记。
图9是例示用于安装被票券授权的用于引导设备的引导组件的过程900的一个实施例的序列图。在一个实施例中,IPhone901是引导到操作状态的设备,例如图1的设备115。PR/ITune903可以是经由USB连接与IPhone901本地耦接的主机。AuthServer905可以是通过网络与PR/ITune903通信耦接的服务器,诸如图1的票券授权服务器113,该服务器用于给票券署名。IPhone901可以根据序列DFU925、恢复927和还原929顺序地执行引导操作。在一个实施例中,IPhone901可以在用于引导操作的序列907、913和919期间用PR/ITune903来交换包括命令和/或文件的消息。同样,PR/ITune903在序列909、915和921期间与IPhone901和AuthServer905通信,包括在IPhone901与AuthServer905之间中继消息,该消息包括票券请求和相应的署名票券,AuthServer905在序列917期间为使IPhone901个性化而署名票券。在一个实施例中,为IPhone901个性化例如IBSS组件或者LLB组件的引导组件可以包括根据IPhone901的设备ID和引导组件的散列由AuthServer905为该引导组件署名的签名,例如在序列911和923期间由AuthServer905执行。
图10是例示用于授权用于引导设备的引导组件的票券,诸如图1的署名票券119的一个实例的样本格式。根据一个实施例,由信任的证书(或密钥)给票券署名。票券的签名可以将用于引导设备的每个系统组件或引导组件的SHA1摘要或版本标识符捆绑到在设备(或单元)中用于不同处理器的一组唯一的设备ID。在一个实施例中,签名还将安装期间使用的摘要捆绑到通过设备上的iBoot组件或iBSS组件生成的当前量,使得票券不能用于多于一次地重新安装相同软件。票券可以包括指定一个或多个名称值对的属性域1001的列表。名称值对可以包括显式或者隐含的名称标签。参考图10,可以根据属性域1001的顺序隐含指定标签1003。
图11示出可以用于本发明一个实施例的数据处理系统1100的实例。例如,可以将系统1100实施成包括如图2所示的系统。注意到虽然图11例示计算机系统的多个组件,但其意图并非表现使这些组件相互连接的任何特定的结构或方式,因为这种细节并非与本发明密切相关。还将意识到,具有更少组件或也许更多组件的网络计算机和其他数据处理系统也可以用于本发明。
如图11所示,形式为数据处理系统的计算机系统1100包括与微处理器(多个微处理器)1105和ROM(只读存储器)1107和易失性RAM1109和非易失性存储器1111耦接的总线1103。微处理器1105可以从存储器1107、1109、1111取回指令并且执行指令来执行上述操作。总线1103将这些多个组件相互连接在一起并且还使这些组件1105、1107、1109和1111与显示控制器和显示设备1113相互连接以及与外设相互连接,外设诸如可以是鼠标、键盘、调制解调器、网络接口、打印机和本领域熟知的其他设备的输入/输出(I/O)设备。通常,输入/输出设备1115通过输入/输出控制器1117与系统耦接。易失性RAM(随机存取存储器)1109通常被实施为需要连续供电以便刷新或维持存储器中的数据的动态RAM(DRAM)。
大容量存储器1111通常是磁性硬盘驱动器或者磁性光学驱动器或者光学驱动器或者DVDRAM或者闪速存储器或者即使在从系统除去电力之后也能维持数据(例如大量数据)的其他类型的存储器系统。通常,大容量存储器1111还可以是随机存取存储器,虽然这并不需要。虽然图11显示大容量存储器1111是与数据处理系统中的剩余组件直接耦接的本地设备,但是将意识到,本发明可以采用远离系统的非易失性存储器,例如通过诸如调制解调器的网络接口、以太网接口或者无线网络与数据处理系统耦接的网络存储器设备。总线1103可以包括通过多种桥、控制器和/或适配器相互连接的一条或多条总线,如本领域所熟知的。
图12示出可以用于本发明一个实施例的另一个数据处理系统1200的实例。例如,可以将系统1200实施为如图2所示的系统的一部分。图12所示的数据处理系统1200包括处理系统1211,该处理系统1211可以是一个或多个微处理器,或者可以是芯片集成电路上的系统,并且该系统还包括用于存储数据和由处理系统执行的程序的存储器1201。系统1200还包括音频输入/输出子系统1205,该子系统1205可以包括麦克风和扬声器,用于例如通过扬声器和麦克风播放音乐或者提供电话功能。
显示控制器和显示设备1207为用户提供可视的用户界面;这个数字接口可以包括当运行OSX操作系统软件时类似于在Macintosh计算机上显示的图形用户接口。系统1200还包括一个或多个无线收发器1203以便与诸如图11的系统1100的另一个数据处理系统通信。无线收发器可以是无线保真(WiFi)收发器、红外收发器、蓝牙收发器、和/或无线蜂窝电话收发器。将意识到,在某些实施例中未显示的附加组件也可以是系统1200的一部分,并且在某些实施例中在数据处理系统中还可以使用比图12所示更少的组件。
数据处理系统1200还包括提供成允许用户给系统提供输入的一个或多个输入设备1213。这些输入设备可以是小键盘或者键盘或者一个触摸板或者多个触摸板。数据处理系统1200还包括可以是用于对接的连接器的光学输入/输出设备1215。将意识到,未显示的一条或多条总线可以用于使本领域熟知的多个组件相互连接。图12所示的数据处理系统可以是手持式计算机或者个人数字助理(PDA),或者具有类似于PDA功能的蜂窝电话,或者包括便携式游戏设备的手持式计算机,或者蜂窝电话,或者诸如iPod的媒体播放器,或者将这些设备的多个方面或多个功能进行组合的设备,诸如将媒体播放器与PDA和蜂窝电话组合到一个设备中。在其他实施例中,数据处理系统1200可以是网络计算机或者嵌入到另一个设备中的处理设备,或者具有比图12所示更少组件或也许更多组件的其他类型的数据处理系统。
本发明的至少某些实施例可以是诸如便携式音乐和/或视频媒体播放器的数字媒体播放器的一部分,该数字媒体播放器可以包括用于呈现媒体的媒体处理系统、用于存储媒体的存储器设备,并可以进一步包括与天线系统和媒体处理系统耦接的射频(RF)收发器(例如用于蜂窝电话的RF收发器)。在某些实施例中,存储在远程存储器设备上的媒体可以通过RF收发器传输给媒体播放器。媒体可以是例如一个或多个音乐或其他音频,还有图片或者运动图片。
便携式媒体播放器可以包括媒体选择设备,诸如来自加利福尼亚的库比蒂诺的AppleComputer公司的或者iPod媒体播放器上的点拨轮输入设备、触摸屏输入设备、按钮设备、可移动的指点输入设备或者其他输入设备。媒体选择设备可以用于选择存储器设备和/或远程存储器设备上存储的媒体。至少在某些实施例中,便携式媒体播放器可以包括与媒体处理系统耦接的显示设备,以显示通过输入设备选择并且或者通过扬声器或者一个耳机(多个耳机)、或者在显示设备上、或者在显示设备和扬声器或者一个耳机(多个耳机)两者上呈现的媒体的标题或者其他指示器。在出版的美国专利申请号2003/0095096和2004/0224638中描述了便携式媒体播放器的实例,这两个专利通过引用并入本文。
可以用诸如专用逻辑电路的逻辑电路或者用微控制器或者执行程序代码指令的其他形式的处理核来实施上面描述的多个部分。因此可以用程序代码执行通过上面讨论所教导的过程,程序代码诸如是使执行这些指令的机器实现某些功能的机器可执行指令。在上下文中,“机器”可以是将中间形式(intermediateform)(或者“抽象的”)指令转换成处理器专用指令(例如,诸如“虚拟仪器”(例如Java虚拟机器)的抽象执行环境、解释器、公共语言运行期、高级语言虚拟仪器等)的机器、和/或布置在被设计成执行指令的诸如通用处理器和/或专用处理器的半导体芯片(例如用晶体管实施的“逻辑电路”)上的电子电路。还可以通过设计成执行多个过程(或者其一部分)而不执行程序代码的电子电路(另一可选为机器或者与机器组合)来执行通过上述讨论所教导的多个过程。
本发明还涉及用于执行本文所描述的操作的装置。这个装置可以是专门构造用于所需目的,或者它可以包含通过计算机中存储的计算机程序有选择地激活或者重新配置的通用计算机。这种计算机程序可以存储在计算机可读存储介质中,诸如但不限于包括软盘、光盘、CD-ROM和磁性光盘的任何类型的磁盘,只读存储器(ROM),RAM,EPROM,EEPROM,磁卡或者光学卡(opticalcard),或者适于存储电子指令的任何类型的媒体,并且每个都与计算机系统总线耦接。
机器可读介质包括用于以机器(例如计算机)可读形式存储或传输信息的任何机构。例如,机器可读介质包括只读存储器(“ROM”);随机存取存储器(“RAM”);磁盘存储介质;光学存储介质;闪速存储器设备;电的、光的、声的或其他形式的传播信号(例如载波、红外信号、数字信号等);等。
制造的商品可以用于存储程序代码。可以将存储程序代码的制造的商品具体实现为,但不限于,一个或多个存储器(例如一个或多个闪速存储器、随机存取存储器(静态的,动态的或其他的))、光盘、CD-ROM、DVDROM、EPROM、EEPROM、磁卡或者光学卡或者适于存储电子指令的其他类型的机器可读介质。还可以通过嵌入在传播媒介中的数据信号(例如,经由通信链路(例如网络连接))从远程计算机(例如服务器)将程序代码下载到请求的计算机(例如客户端)。前面的详细描述以在计算机存储器内对数据位操作的算法和符号表示(symbolicrepresentation)来表现。这些算法描述和表示是数据处理领域的技术人员使用的工具,以便将它们工作的实质最有效地传达给该领域技术人员。在这里算法通常被构思为导致期望的结果的前后一致的操作序列。这些操作是需要对物理量进行物理操作的那些操作。通常,虽然并非必要,这些量采用能够被存储、传递、组合、比较和其他操作的电或磁信号的形式。主要出于共同使用的原因,有时将这些信号称为比特、值、元件、符号、特性、项(term)、数等被证明是方便的。
然而,应该铭记于心,所有这些和类似的术语都与适当的物理量相关联并且仅仅是应用于这些量的方便的标记。除非有与上述讨论明显不同的特别陈述,否则要意识到贯穿于该描述,采用诸如“处理”或者“计算”或者“估算”或者“确定”或者“显示”等的术语的讨论指的是计算机系统、或者类似的电子计算设备的动作和过程,其对在计算机系统的寄存器和存储器中表示为物理(电子)量的数据进行操作并将其转换成类似表示为在计算机系统存储器或者寄存器或者其他这种信息存储、传输或者显示设备中的物理量的其他数据。
本文中提出的过程和显示并非固有地与任何特定计算机或者其他装置有关。多种通用系统可以依据本文的教导而用于程序,或者它可以证明对于构建更加专用的装置以执行所描述的操作是方便的。用于许多这些系统的所需结构通过下面的描述将是明显的。另外,本发明没有参考任何特定的编程语言进行描述。将意识到,许多编程语言都可以用于实施如本文所描述的本发明的教导。
上述的讨论仅仅描述了本发明的一些示例性实施例。本领域技术人员将易于从这种讨论认识到可以不背离本发明的精神和范围而对附图和权利要求进行多种更改。

Claims (19)

1.一种数据处理系统,包含:
用于发送票券请求以便将设备引导到操作状态中的装置,其中,在先授权引导设备的一组引导组件在所述票券请求中被识别,并且,所述票券请求包括与设备相关联的唯一标识符;
用于响应于接收用于基于一个或多个引导组件将设备引导到操作状态中的票券而加密地确认所述票券的装置,其中所述票券被远程授权服务器授权并且根据与所述设备相关联的唯一标识符为所述设备个性化,其中:
所述票券包括用于认证用于引导设备的引导组件的集合的属性,
所述引导组件的集合包括至少一个特定组件,该特定组件在所述票券请求中被识别但是与不同于所述票券请求中包括的属性值的属性值相关联,并且
所述一组引导组件和所述引导组件的集合至少因所述引导组件的集合中的所述至少一个特定组件而不同;
用于当所述票券有效时使所述引导组件的集合中的特定组件与相应于所述特定组件的至少一个属性匹配的装置;以及
用于当所述特定组件与所述票券中的所述至少一个属性匹配时执行所述特定组件以引导设备的装置。
2.如权利要求1所述的系统,其中所述设备存储包括所述唯一标识符的一个或多个设备标识符,并且所述系统进一步包含:
用于为所述票券发送票券请求的装置,所述票券请求包括所述特定组件的版本和所述一个或多个设备标识符。
3.如权利要求2所述的系统,进一步包含:
用于使用所述唯一标识符加密所述特定组件以产生加密的特定组件的装置;以及
用于将所述加密的特定组件存储到所述设备的存储器中的装置。
4.如权利要求3所述的系统,其中所述票券请求包括具有所述特定组件的版本的原始票券,并且所述系统进一步包含:
用于从主机服务器取回所述原始票券和所述特定组件的装置。
5.如权利要求2所述的系统,其中所述票券包括签名和一系列证书,并且用于加密地确认所述票券的装置包含:
用于根据所述唯一标识符解密所述签名以产生解密的签名的装置;
用于由所述票券加密地生成票券摘要的装置;以及
用于根据使用所述一系列证书校验的加密密钥解密所述解密的签名的装置。
6.如权利要求2所述的系统,其中所述票券包括询问数和随机数,并且所述系统进一步包含:
用于即时生成所述随机数的装置;以及
用于对所述询问数与所述随机数进行比较的装置。
7.如权利要求2所述的系统,其中所述至少一个属性包括摘要属性,并且所述系统进一步包含:
用于由所述特定组件加密地生成组件摘要的装置;以及
用于对所述摘要属性与所述组件摘要进行比较的装置。
8.如权利要求2所述的系统,其中所述至少一个属性包括版本属性,并且所述系统进一步包含:
用于对所述版本属性与所述特定组件的版本进行比较的装置。
9.如权利要求1所述的系统,其中所述系统进一步包含:
用于由所述一个或多个引导组件确定后续组件的装置;
用于使所述后续组件与所述票券匹配的装置;以及
用于当所述后续组件与所述票券匹配时执行所述后续组件以便引导所述设备的装置。
10.如权利要求9所述的系统,其中确定所述后续组件是基于接收到的外部通知。
11.如权利要求9所述的系统,其中确定所述后续组件是基于所述特定组件内部存储的指示器。
12.如权利要求1所述的系统,进一步包含:
用于从多个组件中选择所述一个或多个引导组件的装置,其中每个选定组件都与所述票券匹配。
13.一种数据处理系统,包含:
用于从主机服务器取回用于将设备引导到操作状态中的引导包的装置,所述引导包包括具有识别多个组件的多个属性的原始票券;
用于通过网络将包括所述原始票券和用于所述设备的唯一设备标识符的票券请求发送给远程授权机构的装置,其中,在先授权引导设备的一组引导组件在所述票券请求中被识别,并且,所述票券请求包括与设备相关联的唯一标识符;
用于响应于从所述远程授权机构接收用于所述票券请求的票券,从所述多个组件中选择一个或多个引导组件以便引导所述设备的装置,其中所述票券包括签名并且所述设备存储根公共密钥;
用于根据唯一设备标识符和根公共密钥加密地确认票券的签名的装置,其中:
所述票券包括用于认证用于引导设备的引导组件的集合的属性,
所述引导组件的集合包括至少一个特定组件,该特定组件在所述票券请求中被识别但是与不同于所述票券请求中包括的属性值的属性值相关联,并且
所述组引导组件和所述引导组件的集合至少因所述引导组件的集合中的所述至少一个特定组件而不同;
用于当所述票券有效时使所述引导组件的集合中的特定组件与相应于所述特定组件的至少一个属性匹配的装置;以及
用于当所述特定组件与所述票券中的所述至少一个属性匹配时执行所述特定组件以引导设备的装置。
14.如权利要求13所述的系统,其中所述票券包括用于每个选定组件的摘要,所述引导包包括所述多个组件,并且用于选择所述一个或多个引导组件的所述装置包含:
用于为所述选定组件加密地生成摘要的装置;以及
用于对所述摘要与用于所述票券中的所述选定组件的摘要进行比较的装置。
15.一种机器实施的方法,包含:
发送票券请求以便将设备引导到操作状态中,其中,在先授权引导设备的一组引导组件在所述票券请求中被识别,并且,所述票券请求包括与设备相关联的唯一标识符;
响应于接收用于基于一个或多个引导组件将设备引导到操作状态中的票券,加密地确认所述票券,所述票券被远程授权服务器授权并被与所述设备相关联的唯一标识符个性化,其中:
所述票券包括用于认证用于引导设备的引导组件的集合的属性,
所述引导组件的集合包括至少一个特定组件,该特定组件在所述票券请求中被识别但是与不同于所述票券请求中包括的属性值的属性值相关联,并且
所述一组引导组件和所述引导组件的集合至少因所述引导组件的集合中的所述至少一个特定组件而不同;
当所述票券有效时,使所述引导组件的集合中的特定组件与相应于所述特定组件的至少一个属性匹配;以及
当所述特定组件与所述票券中的所述至少一个属性匹配时执行所述特定组件以引导设备。
16.一种数据处理系统,包含:
用于响应于接收识别一组引导组件和远程设备的票券请求,根据所述票券请求使所述远程设备的引导组件的集合个性化以便将所述远程设备引导到操作状态中的装置,其中:
所述引导组件的集合包括至少一个特定组件,该特定组件在所述票券请求中被识别但是与不同于所述票券请求中包括的属性值的属性值相关联,并且
所述一组引导组件和所述引导组件的集合至少因所述引导组件的集合中的所述至少一个特定组件而不同;
用于生成包括一个或多个属性的票券以便认证所述设备的所述个性化的引导组件的集合的装置,所述一个或多个属性包括用于确认所述票券的至少一个加密签名;以及
用于将所述票券发送给所述远程设备的装置。
17.如权利要求16所述的系统,其中所述票券请求包括用于所述远程设备的一个或多个组件标识符,并且用于使所述引导组件的集合个性化的装置包含:
用于根据所述一个或多个组件标识符使所述引导组件的集合中的特定引导组件与票券署名配置匹配的装置,所述票券署名配置对根据一个或多个组件标识符授权的一个或多个引导组件进行配置;
用于当所述特定引导组件与所述票券署名配置匹配时由所述特定引导组件生成加密散列的装置;以及
用于基于所述票券请求加密所述加密散列的装置,其中所述一个或多个属性包括用于所述特定引导组件的加密的加密散列。
18.如权利要求17所述的系统,其中当所述票券署名配置包括为所述特定引导组件指定的通配符时,所述特定引导组件与所述票券署名配置成功匹配,而与所述一个或多个组件标识符无关。
19.如权利要求16所述的系统,其中所述票券请求包括当前量,并且用于生成所述票券的装置包含:
用于将所述当前量拷贝到所述票券中的所述一个或多个属性的其中之一的装置。
CN200980137324.7A 2008-07-28 2009-07-24 票券授权的安全安装和引导 Expired - Fee Related CN102165457B (zh)

Applications Claiming Priority (5)

Application Number Priority Date Filing Date Title
US8417008P 2008-07-28 2008-07-28
US61/084,170 2008-07-28
US12/329,377 US8095799B2 (en) 2008-07-28 2008-12-05 Ticket authorized secure installation and boot
US12/329,377 2008-12-05
PCT/US2009/051766 WO2010014514A1 (en) 2008-07-28 2009-07-24 Ticket authorized secure installation and boot

Publications (2)

Publication Number Publication Date
CN102165457A CN102165457A (zh) 2011-08-24
CN102165457B true CN102165457B (zh) 2016-03-16

Family

ID=41137535

Family Applications (1)

Application Number Title Priority Date Filing Date
CN200980137324.7A Expired - Fee Related CN102165457B (zh) 2008-07-28 2009-07-24 票券授权的安全安装和引导

Country Status (6)

Country Link
US (2) US8095799B2 (zh)
EP (1) EP2151782A1 (zh)
KR (1) KR101190479B1 (zh)
CN (1) CN102165457B (zh)
GB (1) GB2474200B (zh)
WO (1) WO2010014514A1 (zh)

Families Citing this family (25)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7922321B2 (en) 2003-10-09 2011-04-12 Ipventure, Inc. Eyewear supporting after-market electrical components
JP4526574B2 (ja) * 2008-03-31 2010-08-18 富士通株式会社 暗号データ管理システム、および暗号データ管理方法
US8589667B2 (en) * 2010-04-19 2013-11-19 Apple Inc. Booting and configuring a subsystem securely from non-local storage
EP2393007B1 (en) * 2010-06-03 2013-03-27 Telefonaktiebolaget LM Ericsson (publ) Processing device
US20120084545A1 (en) * 2010-10-04 2012-04-05 Ralph Rabat Farina Methods and systems for implementing a secure boot device using cryptographically secure communications across unsecured networks
DE102010038179B4 (de) * 2010-10-14 2013-10-24 Kobil Systems Gmbh Individuelle Aktualisierung von Computerprogrammen
US9256745B2 (en) * 2011-03-01 2016-02-09 Microsoft Technology Licensing, Llc Protecting operating system configuration values using a policy identifying operating system configuration settings
US8607343B2 (en) * 2011-06-05 2013-12-10 Apple Inc. Ticket-based personalization
CN102999852B (zh) * 2011-09-14 2017-03-01 阿里巴巴集团控股有限公司 电子券数据的生成方法及装置
JP6007075B2 (ja) * 2012-11-16 2016-10-12 任天堂株式会社 サービス提供システム、サービス提供方法、サーバシステムおよびサービス提供プログラム
KR20150008546A (ko) 2013-07-15 2015-01-23 삼성전자주식회사 보안 다운로드 및 기능 실행방법 및 장치
US9542558B2 (en) 2014-03-12 2017-01-10 Apple Inc. Secure factory data generation and restoration
US20160065374A1 (en) 2014-09-02 2016-03-03 Apple Inc. Method of using one device to unlock another device
US9735968B2 (en) * 2014-10-20 2017-08-15 Microsoft Technology Licensing, Llc Trust service for a client device
US9843451B2 (en) 2014-10-30 2017-12-12 Motorola Solutions, Inc. Apparatus and method for multi-state code signing
WO2016073411A2 (en) * 2014-11-03 2016-05-12 Rubicon Labs, Inc. System and method for a renewable secure boot
EP3098744A1 (en) * 2015-05-29 2016-11-30 Orange A remotely protected electronic device
US10078748B2 (en) * 2015-11-13 2018-09-18 Microsoft Technology Licensing, Llc Unlock and recovery for encrypted devices
GB201608749D0 (en) 2016-05-18 2016-06-29 Tixserve Ltd An electronic ticketing system
JP6883196B2 (ja) * 2017-01-24 2021-06-09 富士フイルムビジネスイノベーション株式会社 処理装置、情報処理装置、処理システム、処理プログラム及び情報処理プログラム
US11455394B2 (en) * 2017-09-06 2022-09-27 Absolute Software Corporation Secure firmware interface
US10482253B2 (en) * 2018-03-30 2019-11-19 Dell Products L. P. Configuring basic input output system (BIOS) features based on a policy
WO2019212547A1 (en) * 2018-05-02 2019-11-07 Hewlett-Packard Development Company, L.P. Executing sotware
US20220083666A1 (en) * 2019-06-03 2022-03-17 Hewlett-Packard Development Company, L.P. Key authentication
CN111444793A (zh) * 2020-03-13 2020-07-24 安诚迈科(北京)信息技术有限公司 基于ocr的票据识别方法、设备、存储介质及装置

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101084482A (zh) * 2004-09-17 2007-12-05 英华达股份有限公司 电子软件分配方法及使用以硬件识别为基础的数字权利管理方法的系统

Family Cites Families (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7020638B1 (en) * 1996-11-18 2006-03-28 Microsoft Corporation System and method for flexible micropayment of low value electronic assets
US6711688B1 (en) * 1999-11-30 2004-03-23 International Business Machines Corporation Pre-execution logon (PEL)
US6757824B1 (en) 1999-12-10 2004-06-29 Microsoft Corporation Client-side boot domains and boot rules
US7345671B2 (en) 2001-10-22 2008-03-18 Apple Inc. Method and apparatus for use of rotational user inputs
US7627343B2 (en) 2003-04-25 2009-12-01 Apple Inc. Media player system
US8332653B2 (en) * 2004-10-22 2012-12-11 Broadcom Corporation Secure processing environment
SE531992C2 (sv) * 2006-02-24 2009-09-22 Oniteo Ab Metod och system för säker programvaruprovisionering
US20080082680A1 (en) * 2006-09-29 2008-04-03 Karanvir Grewal Method for provisioning of credentials and software images in secure network environments
US20100161879A1 (en) * 2008-12-18 2010-06-24 Lsi Corporation Efficient and Secure Main Memory Sharing Across Multiple Processors

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101084482A (zh) * 2004-09-17 2007-12-05 英华达股份有限公司 电子软件分配方法及使用以硬件识别为基础的数字权利管理方法的系统

Also Published As

Publication number Publication date
KR101190479B1 (ko) 2012-10-12
EP2151782A1 (en) 2010-02-10
US8095799B2 (en) 2012-01-10
GB2474200B (en) 2013-04-03
US20100023778A1 (en) 2010-01-28
KR20110050488A (ko) 2011-05-13
WO2010014514A1 (en) 2010-02-04
US8443204B2 (en) 2013-05-14
GB2474200A (en) 2011-04-06
GB201102069D0 (en) 2011-03-23
US20120131317A1 (en) 2012-05-24
CN102165457A (zh) 2011-08-24

Similar Documents

Publication Publication Date Title
CN102165457B (zh) 票券授权的安全安装和引导
CN109937419B (zh) 安全功能强化的设备的初始化方法及设备的固件更新方法
JP5576983B2 (ja) 非ローカル記憶装置からのサブシステムのセキュアなブート及び構成
US8789037B2 (en) Compatible trust in a computing device
US8150039B2 (en) Single security model in booting a computing device
JP5690412B2 (ja) ハードウェアデバイスの鍵プロビジョン方法および装置
US8291480B2 (en) Trusting an unverified code image in a computing device
US8677144B2 (en) Secure software and hardware association technique
AU2011332180B2 (en) Secure software licensing and provisioning using hardware based security engine
US8495383B2 (en) Method for the secure storing of program state data in an electronic device
US20090259855A1 (en) Code Image Personalization For A Computing Device
CN101630353A (zh) 在移动因特网设备上安全引导uefi固件和uefi感知操作系统的系统和方法
WO2008004525A1 (fr) Dispositif de traitement d'informations, dispositif d'enregistrement d'informations, système de traitement d'informations, procédé de mise à jour de programme, programme, et circuit intégré
CN101578609A (zh) 安全启动计算设备
KR20090109589A (ko) 프로세서 내에서의 보호된 리소스들로의 억세스에 대한 안전한 보호 방법
WO2006108788A1 (en) Updating of data instructions
WO2019051839A1 (zh) 一种数据处理的方法及装置
US20180260568A1 (en) Modifying service operating system of baseboard management controller
KR20170140630A (ko) 애플리케이션 무결성 인증 방법 및 인증 서버
JP5620805B2 (ja) データベース暗号化装置、データベース暗号化システム、データベース暗号化方法及びプログラム
JP6741236B2 (ja) 情報処理装置
Ju et al. The Issue of Data Transfer for the Embedded SE on Mobile Devices

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
C14 Grant of patent or utility model
GR01 Patent grant
CF01 Termination of patent right due to non-payment of annual fee
CF01 Termination of patent right due to non-payment of annual fee

Granted publication date: 20160316

Termination date: 20200724