CN1645288A - 确保软件更新仅在特定设备或设备类上安装或运行 - Google Patents

确保软件更新仅在特定设备或设备类上安装或运行 Download PDF

Info

Publication number
CN1645288A
CN1645288A CNA2004101022875A CN200410102287A CN1645288A CN 1645288 A CN1645288 A CN 1645288A CN A2004101022875 A CNA2004101022875 A CN A2004101022875A CN 200410102287 A CN200410102287 A CN 200410102287A CN 1645288 A CN1645288 A CN 1645288A
Authority
CN
China
Prior art keywords
equipment
key
bag
map
hash
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.)
Granted
Application number
CNA2004101022875A
Other languages
English (en)
Other versions
CN1645288B (zh
Inventor
D·科蒂斯
D·福蒂尔
S·谢尔
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.)
Microsoft Technology Licensing LLC
Original Assignee
Microsoft Corp
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 Microsoft Corp filed Critical Microsoft Corp
Publication of CN1645288A publication Critical patent/CN1645288A/zh
Application granted granted Critical
Publication of CN1645288B publication Critical patent/CN1645288B/zh
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F17/00Digital computing or data processing equipment or methods, specially adapted for specific functions
    • 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/51Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems at application loading time, e.g. accepting, rejecting, starting or inhibiting executable software based on integrity or source reliability
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F15/00Digital computers in general; Data processing equipment in general
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/10Protecting distributed programs or content, e.g. vending or licensing of copyrighted material ; Digital rights management [DRM]
    • G06F21/12Protecting executable software
    • G06F21/121Restricting unauthorised execution of programs
    • 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
    • G06F2221/00Indexing scheme relating to security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F2221/21Indexing scheme relating to G06F21/00 and subgroups addressing additional information or applications relating to security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F2221/2129Authenticate client device independently of the user

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • Computer Security & Cryptography (AREA)
  • General Engineering & Computer Science (AREA)
  • Computer Hardware Design (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Multimedia (AREA)
  • Technology Law (AREA)
  • Data Mining & Analysis (AREA)
  • Databases & Information Systems (AREA)
  • Mathematical Physics (AREA)
  • Storage Device Security (AREA)
  • Stored Programmes (AREA)

Abstract

所描述的是一种系统和方法,其中,设备制造商或软件映象提供商控制哪些设备被允许安装或运行软件映象。一种映象加密钥机制使用包数据和与该设备或设备类相关联的UUID来对映象加密钥。由于UUID在密钥中使用,安装程序核实器和/或引导时核实器可确保该设备被授权来安装和/或运行该映象。任一包,包括现有设备包和向其要求安装的包,可要求实施加密钥。安装程序机制检查该设备是否被允许安装该映象。引导时实施机制通过在要求的密钥无效或丢失时暂停引导过程来防止操作不正确地安装的映象。

Description

确保软件更新仅在特定设备或设备类上安装或运行
相关申请的参照
本发明要求2003年12月16日提交的美国临时专利申请序列号60/530,126的优先权,该申请整体结合于此。
本发明涉及以下与本发明一起提交的美国专利申请,这些申请整体结合于此:
摘要号4271/307,649,“以故障保险方式向非易失存储应用自定义软件映象更新(Applying Custom Software Image Updates To Non-Volatile Storage in a FailsafeManner)”;
摘要号4281/307,650,“确定对安装有效的最大依赖软件更新组(Determing theMaximal Set of Dependent Software Updates Valid for Installation)”:
摘要号4301/307,652,“自描述软件映象更新组件(Self-Describing SoftwareImage Update Components)”;
摘要号4311/307,663,“以存储技术抽象方式在文件内创建文件系统(CreatingFile Systems Within a File In a Storage Technology-Abstracted Manner)”。
技术领域
本发明一般涉及计算设备,尤其涉及更新计算设备的非易失存储。
背景技术
诸如个人数字助理、当代移动电话和手持式及袖珍计算机等移动计算设备正在变为重要且流行的用户工具。一般而言,它们变得足够小,使得它们极度方便,而消耗较少的电池功率,且在一时变得能够运行更强大的应用程序。
在制造这类设备的过程中,嵌入式操作系统映象通常被内建到每一设备的单块映象文件中,并储存在非易失存储中(如,NAND或NOR闪存、硬盘等等)。作为结果,更新这一设备有时是必需或期望的。注意,更新设备的持久应用程序映象不同于通常在计算设备上安装应用程序的方式,应用程序储存在用户可访问文件系统中,并与用户数据混合。
然而,某些制造商希望能够控制对其设备软件更新的访问(以及对连同设备一起出厂的初始映象的访问)。其原因是一个制造商可能不希望在其设备上安装另一制造商的更新映象。有些制造商希望能够向愿意为映象的某些更新或新映象付费的顾客收费,而其它制造商不希望。有些制造商希望能够向愿意为映象的某些更新或新映象付费的顾客收费,因为这些新映象可包含新应用程序或特征(注意,“更新”可以是完整的应用程序或新特征)。
需要一种控制对初始映象和/或更新映象的访问的机制,但是以可以实现或不依赖于关于初始映象或更新的制造商的特定情况组的灵活方式。
发明内容
简言之,本发明针对一种制造商(或其它初始映象或更新映象提供商)控制允许哪些设备安装或运行映象的系统和方法。为此,本发明提供了一种映象加密钥机制,通过该机制,如果试图在不同于制造商(或其它更新提供商)指定的设备上安装初始组件或更新组件(加密钥的映象子组件,此处也成为包),则该安装会失败。此外,即使通过某些其它装置,如通过硬件JTAG探针,将加密钥的映象应用到该设备,该软件也不会在非法的设备上运行。为此,没有正确的密钥口令,设备无法引导。注意,映象加密钥可应用到初始制造映象以及可更新包。
在一个实现中,基于包以及与设备相关联的全局唯一标识符(UUID)对包加密钥。UUID允许包对单个设备或设备类加密钥,取决于该UUID是对应于设备还是设备类。采用UUID,加密钥过程能够安全地将设备的UUID与映象相关联,使得安装程序核实器和/或引导时核实器可基于该UUID确保加密钥对该设备是适当的。安装程序和/或引导时核实器然后允许或禁止映象更新/引导,取决于该设备是否被授权用于该映象。
为对包加密钥,将设备的UUID传递到拥有该映象的服务器,服务器然后对UUID和与包相关的数据应用散列算法,然后签署结果。签名储存在映象的已知位置中,并将加密钥的映象提供给设备。
对于在安装或引导时要核实的加密钥的映象,安装代码或预引导代码被设计成检测未加密钥的任何映象,并在适当时暂停安装或设备引导。这可通过向映象并向用于在(如,提供商或制造商的)服务器上对映象加密钥的UUID应用同一编码算法来实现。
在一个实现中,映象的加密钥是可任选的,使得软件销售商和/或制造商可确定是否要对映象加密钥。为具有被可任选地加密钥的系统,该系统具有一种用于表示对在特定映象(或映象的一部分)上加密钥的要求的机制。对加密钥的映象的要求可来自同一包内,或来自同一设备的不同包内。注意,包的提供商可对包加密钥,或者制造商可对包加密钥,即使制造商不是该包的提供商。
在一个实现中,在散列中使用的包数据对应于在包安装之后在设备上维护的包的描述。包所附带的向系统描述该包的内容的清单文件通过在包内包括包标识符、版本号和文件列表,提供了用于散列的与包相关的数据。
一旦包被加密钥并在设备上获取,则设备确定它是否具有在安装的包上加密钥的要求。该要求可从包内形成,或可以是来自另一先前安装的包的要求。如果存在加密钥要求,则用于计算散列的算法被重新应用到包内容和设备UUID,并且将结果与在服务器上确定并储存在包内的结果相比较。如果结果一致,则认为密钥上的签名是有效的,并允许安装。
也可采用引导时实施机制,以确保映象不会通过不同于正常映象更新机制的手段,如通过硬件JTAG探针,或通过经由总线对闪存中的数据的物理操纵。而被恶意地更新。如果引导时检查过程发现密钥无效或丢失,则它暂停引导过程。
当结合附图阅读以下详细描述时,可以清楚其它优点,附图中:
附图说明
图1是一般表示可结合本发明的计算机系统的框图;
图2所示是依照本发明的一个方面为在特定设备上安装和操作而加密钥的包的框图;
图3所示是依照本发明的一个方面,用于基于对设备的正确密钥确定是否在该设备上安装加密钥的包的逻辑的流程图;
图4所示是依照本发明的一个方面,用于基于设备是否具有一个或多个加密钥的包确定是否引导设备的逻辑的流程图;以及
图5所示是依照本发明的一个方面信任链的概念的框图。
具体实施方式
示例性操作环境
图1示出了一个这样的手持式计算设备120的功能组件,包括处理器122、存储器124、显示屏126和键盘128(可以是物理或虚拟键盘,或表示两者)。可存在麦克风129以接收音频输入。存储器124一般包括易失存储器(如,RAM)和非易失存储器(如,ROM、PCMCIA卡等等)。操作系统130驻留在存储器124中,并在处理器122上执行,如微软公司的Windows操作系统或另一操作系统。
一个或多个应用程序132被加载到存储器124中,并在操作系统130上运行。应用程序的示例包括电子邮件程序、调度程序、PIM(个人信息管理)程序、文字处理程序、电子表格程序、因特网浏览器程序等等。手持式个人计算机120也可包括加载到存储器124中的通知管理器134,它在处理器122上执行。通知管理器134处理如来自应用程序132的通知请求。同样,如下所述,手持式个人计算机120包括适用于将手持式个人计算机120连接到网络(包括作出电话呼叫)的网络软件136(如,硬件驱动程序等)和网络组件138(如,无线电和天线)。
手持式个人计算机120具有电源140,它被实现为一个或多个电池。电源140还可包括取代内置电池或对其重新充电的外部电源,如AC适配器或加电对接托架。
图1所示的示例性手持式个人计算机120被示出为具有三种类型的外部通知机制:一个或多个发光二极管(LED)142和音频生成器144。这些设备可直接耦合至电源140,使得当被激活时,即使手持式个人计算机处理器122或其它组件被关闭以保存电池能量时,它们也保留一段由通知机制指示的持续时间。LED 142较佳地不确定地保留,直到用户采取行动。注意,音频生成器144的当代版本使用当今手持式个人计算机电池的太多能量,因此它被配置成当系统的剩余部分工作时,或者在激活后的一段确定持续时间之后被关闭。
注意,尽管示出了基本手持式个人计算机,然而,为实现本发明的目的,实际上能够以可由程序使用的某一方式接收数据通信和处理数据的任何设备,如移动电话,都是等效的。
设备专用更新
本发明一般针对安装和/或更新储存在小型移动计算设备上的软件,这些设备如基于微软的WindowsCE的设备,包括在其中将初始软件或软件更新写入嵌入式设备的非易失存储,如闪存中的那些设备。尽管如此,本发明提供了在总体上计算的益处,并由此可应用到其它计算设备和其它类型的存储,包括各种类型的存储器和/或其它类型的存储媒质,如硬盘驱动器。为简化目的,术语“闪存”在后文对照设备的可更新存储,尽管可以理解,任一存储机制都是等效的。此外,术语“映象”一般包括初始软件安装映象以及对该映象的随后的软件更新的概念,即使仅更新该映象的一部分。
软件更新是可包含对某一软件组的完整更新,和/或仅对前一更新或映象的改变的自包含的、安全的实体。软件更新可包括可执行代码和数据。注意,为描述本发明的与加密钥相关的过程和机制的目的,初始制造映象和可更新映象组件(在产品售出之后实地安装)被同样地处理,并在后文被一般地称为“映象实体”,它可以是一个映象(用于整个映象)或映象子组件/包(用于映象的子组件)。
依照本发明的一个方面,提供了一种当通过常规装置试图安装时防止加密钥的软件映象被安装在未授权的设备上的映象加密钥方法和系统。此外,该方法和系统防止以某一其它方式(如,通过硬件窃用)安装的加密钥的软件运行在未授权的设备上。本发明可应用到初始制造映象以及可更新包。如可容易地理解的,加密钥允许设备制造商/OEM/软件销售商严格地控制被允许安装或运行初始制造映象和/或可更新包的设备的阵列。
如图2所一般表示的,映象中的包202(如,.CAB压缩文件)具有包括至少一个签名的签名数组204,它用于核实包202是对设备的有效映象(如,更新)。第二签名或口令(如果存在的话)是用于将该更新关联到特定设备的密钥206。该口令在本发明中一般被成为“密钥”。最初作出该包的提供商和具有关于该设备的密钥信息的实体(如,OEM)可对包加密钥。密钥206使用关于包和设备ID的信息来构造,如后文所描述的。
如上所述,加密钥过程依赖于唯一地标识对该影响要对其加密钥的设备的能力。为此,每一设备需要提供一全局唯一标识符(UUID)208。为正确地起作用,该UUID应当对所有可被在其上安装映象的设备组是由硬件生成的、永久的、确保为唯一的,并无法由其它机制设置。另外,设备需要在无论何时被要求时能够通过在设备上当请求时负责获取并提供UUID的系统软件返回同一UUID值。注意,设备通常已具有这一UUID,如设备ID,尽管应当注意,为安全原因,可能期望阻止设备ID能被未授权组件访问。
如所理解的,UUID 208允许包对应于小至每设备一个包的粒度来加密钥。然而,如期望,UUID可用于一类设备。例如,制造商可构建许多这样的设备用于单个顾客,并且UUID可应用到销售给该顾客的设备类,而非一个设备。例如,这可通过令该设备类共享UUID中的最高位,令最低位用于标识该类中的设备来实现。然后,仅每一UUID的最高位用作用于加密钥目的的(类)UUID。注意,当确定更新是否被允许时,检查机制可使用设备UUID和类UUID来确定是否允许更新。结果,与需要每一设备单独地请求加密钥的更新不同,制造商可允许单个加密钥的更新被安装到同一类的多个设备上。此处,为简化目的,UUID主要相对单个设备来描述,然而,如所理解的,对于令UUID在多个设备的类之间共享的情况,这一概念是等价的。
采用这一UUID,加密钥过程能够安全地将设备的UUID与映象相关联使得安装程序核实器和/或引导时核实器可确保加密钥对该设备的UUID是适当的。安装程序和/或引导时核实器然后允许或禁止(倘若预引导确认代码是硬件安全的,如后文参考信任链所描述的)映象更新/引导,取决于该设备是否被授权用于该映象。
对于在安装或引导时核实的加密钥的映象,安装代码210或预引导代码212被设计成检测未加密钥的任一映象,并在适当时暂停安装或设备引导。这可通过向映象和由映象的提供商使用的UUID应用同一编码算法,并通过核实该结果与如由提供商的服务器储存在映象中的密钥相匹配来实现。以这一方式,如果检测到未加密钥的映象或为另一设备加密钥的映象,则该映象将无法被初始安装,或者,如果绕过了安装过程,并且使用了诸如硬件JTAG探针等另一机制来闪存该映象,则该映象将无法运行。
在一个实现中,映象的加密钥是可任选的,使得软件销售商和/或制造商可确定是否要对映象加密钥。为具有可任选地加密钥的系统,该系统具有一种用于表示对在特定映象(或映象的一部分)上加密钥的要求的机制。对加密钥的映象的要求可来自同一映象内,或来自同一设备上的不同映象子组件内。注意,例如,这允许制造商即使在他不是映象的提供商时也能够对该映象加密钥。
加密钥签名可由映象的所有者或发出对加密钥的要求的实体签署。这一重复确保了生产在设备上的软件的另一实体能够要求对他们不控制的映象的密钥,但也确保了映象的所有者不丢失对其映象的更新控制。此外,如可容易理解的,在内部,销售商在构建系统内可同时担当创建者和OEM的角色。由此,例如,在映象离开构建实验室之前,构建实验室担当OEM并对构建加密钥。然后将包约束到它们对其加密钥的设备上,并且无法被闪存到另一设备上。除其它优点之外,这将防止日常构建的泄露。
为如按要求提供适当加密钥的映象,要加密钥的映象最初储存在服务器220上。通过安全机制,将设备的UUID传递到服务器,然后用于对映象加密钥。例如,设备所有者在请求更新时可安全地发送UUID,或者设备制造商可维护被授权来接收更新的UUID的内部数据库。由于采用了对敏感数据的其它受控访问,对服务器220的经验证的访问、UUID交换的安全性以及服务器的处理是确保加密钥过程安全并确保交换无法被欺骗的需求。
一旦服务器220获取了设备UUID,并能够访问映象20,在一个实现中,服务器向这两个实体应用一散列算法,以获取(如,通过串联)单个实体,它进而可被签署。这本质上可被表示为以下公式:
签署密钥(散列(散列(包数据)|散列(设备ID)))。一旦从散列结果生成签名,将签名储存在映象内的已知位置中,然后,令加密钥的映象准备好被下载到设备。
散列中使用的包数据可基于包内容的实际散列,尽管如后文所描述的,包在安装之后不由设备保存,由此这会导致困难,并使加密钥机制易受欺骗的攻击。作为使用内容作为包数据的替代,在安装之后维护的包的描述是散列的更合乎需要的实体,在一个实现中,使用包描述来替代包内容。更具体地,如在上述名为“自描述软件映象更新组件”的相关专利申请中所描述的,映象可安排在包内用包所附带的并向系统描述包内容的清单文件230中。清单文件230包括包标识符、版本号和包内文件的列表。此外,清单文件230在包安装之后保留在设备上(如图2中由安装的清单文件230i所表示的),这意味着即使包本身在安装之后被丢弃,也可在引导时获取其散列。结果,清单文件230担当用于在上述公式中散列(作为包数据)来表示包的很好的实体,它然后如上所述地与具有签署结果的设备UUID的散列相组合。
一旦添加了密钥,包被下载到设备。设备将确定它是否具有对在要安装的包上加密钥的要求,它可以是包内的要求,或者是来自先前安装的另一包的要求。也可以是来自在同一时刻安装的任一其它包的要求。如果存在加密钥要求,则将用于计算散列的同一算法重新应用到映象和设备UUID,并将结果与在服务器上确定的并储存在包内的结果相比较。如果结果一致,则认为密钥上的签名有效。假定其它映象确认检查成功,(如,满足映象依赖性需求、映象是完整且正确的等等,如在上述名为“确定对安装有效的最大依赖软件更新组”的相关专利申请中所描述的),则映象将被安装到设备上。
在安装时核实包被正确地添加了密码的一个益处是安装或更新可被取消。在安装之前取消更新为用户留下了一个可引导的设备。当然,设备不具备用户试图安装的更新,但是至少能够引导到其先前的状态。如可容易地理解的,如果仅通过仅在引导时检查正确的加密钥来实现保护,则诸如用户安装错误的更新等情形将导致向用户留下无法引导的设备,除非且直到它被刷新。
也可采用第二种实施机制。更具体地,检查映象的加密钥的过程也可在引导过程中应用,以确保映象不会被通过不同于正常映象更新机制来恶意地更新,如通过使用硬件JTAG探针或通过经由总线对闪存中的数据的物理操纵。注意,令核实在其它地方和某一其它时刻(如在对应于加密钥的包的每次程序引导之前)执行是可行的,然而,为简化目的,将参考引导时核实来解释该实施。
引导时检查过程需要预引导授权机构(如,在引导加载器内)被设计成确认一个或多个映象内的密钥(或多个密钥)(如由安装程序核实器所完成的),并且如果发现密钥无效或丢失,则暂停引导过程。为防止硬件级攻击,预引导核实授权机构212也需要硬件是受保护的(如,在只读ROM中或其类似物),使得它无法被替换/覆盖(由于ROM中的引导加载器可被黑客用对设备的硬件访问来替换)。这是后文所描述的信任链描述的一部分,并通过使用具有在CPU引导之前核实引导加载器上的签名的安全引导特征(如,类似于为移动电话所设计的)的CPU来实现。信任链确保通过在操作系统下运行的应用程序基于CPU的安全引导。
图2示出了一个示例存储器布局240,其中,包括代码232i、清单230i以及(可能)密钥信息文件234i(后文描述)的某些包版本V1的内容被安装到被称为ImageFS的系统分区236中。注意,在本示例实现中,包也可被安装到被称为NK区域或分区的另一内核分区中;分区一般在上述名为“以存储技术抽象方式在文件内创建文件系统”的相关专利申请中描述。
如图2所示,诸如包202等每一包可被加上密钥,即,具有关联的口令206,它如上所述地为设备ID的散列和包相关数据(如,包含包信息的清单文件)的散列。结果,不仅是约束到该设备的包,而且来自该包的密钥无法用于另一包,即使它们在同一设备上。
为实施加密钥保护,在安装或引导时,如服务器220一样,设备同样地散列包清单文件230i,并将该散列串接到UUID 208的散列。该结果被散列(如,用公钥签署)并用作口令。
在一个实现中,口令是PKCS7签名。构建并确认签名的证书链所必须的证书可在PKCS#7数据结构内找到。密钥签名需要用来对照签名的证书可储存在包的清单文件(在加密钥者是包的所有者的情况下)或密钥信息文件中(在加密钥者是要求加密钥的实体的情况下)。
为核实这是正确的文件类型,密钥信息文件234是包含仅可用于这一文件类型的魔法数字的二进制文件格式。密钥信息文件也包含结构的大小、要求计数、到公钥数组的索引以及证书的数量。在一个实现中,扫描数组中所有的密钥以找出加密钥的签名,它可以通过一未被验证属性来标识。
密钥信息文件是包含对设备上的任一包加密钥的要求的列表的系统文件。当将包安装到设备上时,枚举映象中的密钥信息文件。这包括在新包中的密钥信息文件234i,加上对应于先前安装的一个或多个其它包的当前映象中的任何密钥信息文件,如密钥信息文件238i加上来自要安装的包的组内的其它包的任何密钥要求。如果当前映象中的任一密钥信息文件或新的更新包上的密钥信息文件要求对该包加密钥,则需要对该包加密钥。结果,制造商可以要求对包加密钥,即使提供包的软件销售商不需要对该包加密钥。注意,不可能有冲突的加密钥需求,因为一个密钥信息文件只能要求对一个包加密钥,而不能要求不对包加密钥。例如,销售商无法包括要求从不对特定包加密钥的密钥信息文件。由此,包可由最初制造该包的实体加密钥,或由具有设备上的密钥信息的实体加密钥。
如图2所示,在一个名为wincertArray的实例中,签名保留在证书数组204的经签署的文件中。用于用密钥将包连接到设备的口令206包含具有受保护的属性的签名。该受保护的属性是已验证的属性(它是新的)。为确定包是否包含有效签名,枚举证书数组204,并检查数组中的每一元素的已验证属性206。如果找到该属性,则它是加密钥签名。
为确认每一签名,将证书数组中的口令206与来自表示必须对包202加密钥的密钥信息文件(如,234或238i)的证书相比较。公钥文件位于包清单内,包清单位于包内,或可附加到包本身。如果签名的任一个被确认并起作用,则将包202应用到该设备。如果没有签名被确认,则通过合适的用户界面对话框或其类似物向用户通知错误。
图3示出了当在设备上安装包时可被执行来核实加密钥信息的各种示例性步骤,它在步骤300开始,枚举密钥信息文件。步骤302评估是否存在要求对该包加密钥的任一密钥信息文件。如果不存在,则不需要额外的加密钥工作,过程结束,如由步骤304所表示的。否则,要求加密钥,并通过步骤306和308确认签名组(在证书阵列中)。如果在步骤310该组不包含任何有效的签名,则在步骤312,由于没有有效的密钥,包确认失败。
注意,在包(而非清单文件)用于散列计算一个替换实现中,签名以及包的散列需要在安装之后被保存,因为包(如,压缩的CAB文件)在安装之后不被保留。由此,如由可任选步骤314所示的,在该替换实现中,从新包提取有效签名,并通过将其写入系统的文件中来储存该签名。在该替换实现中,在核实特定包的加密钥信息并执行包更新之后,更新应用程序可将包的散列以纯文本写入与安装时的其它散列相同的文件中。当包散列不再可访问时,需要这一包加密钥信息文件(如,名为[GUID].pki)用于引导时核实。
密钥信息文件在更新过程中担当常规文件。更新中的密钥信息文件(或缺乏该文件)将替换原始在包内的所有内容。如果包最初未加密钥,并且包创建者或OEM决定对包加密钥,则可用包括要求对包加密钥的密钥信息文件的包来更新该包。也可用不包括密钥信息文件的包来更新包(具有声明要对包加密钥的密钥信息文件)。这意味着包不再要求它是加密钥的。然而,注意,这并不确保设备(对应于某一其它包)上没有要求对特定包加密钥的另一密钥信息文件。
依照本发明的一个方面,如上所述,在引导时也对照所有的密钥信息文件来核实要求加密钥的每一包的加密钥信息,如一般在图4的流程图中所表示的。在一个实现中,对任一密钥信息文件(步骤400)指示需要加密钥(步骤402和408)的每一包执行(步骤404)同一评估,即,获取清单文件和UUID的散列、签署该散列并将其与密钥相比较。如果比较对任一包都无效,则设备不引导(步骤406),否则设备引导(步骤410)。
在设备清单文件不用于散列计算的一个替换实现中,回想在安装时,从新包提取签名并将作为文件其放入文件系统中。在这一情况下,除签名之外,还储存包的散列。需要储存签名用于引导时核实,即使包数据是清单文件的散列。在引导时,扫描密钥信息文件以确定需要对哪一包加密钥,然后扫描、打开包含提取的签名的对应文件,并核实签名内容。
注意,密钥信息文件也包含签名。仅当所有的事情都有效时设备才引导。此外,注意,为处理RAM阴影问题,在引导时打开密钥信息文件和签名,并检查文件属性。如果该文件不在ROM中或不是系统文件(在ImageFS中),则引导核实机制将试图删除该文件。如果这一文件既不是系统文件也不在ROM中,而且无法被删除,则设备不引导。
信任链
如上所述,为真实的安全性,预引导确认程序需要是硬件安全的,否则,例如,硬件黑客可覆写确认程序。这一真实安全性依赖于具有安全引导特征的CPU,因为如果CPU安全地引导,可引导可信的程序代码。之后,信任链的概念可基于转移性的前提为其它组件提供这一核实机制。即,如果用户信任组件A,组件A信任组件B,组件B信任组件C,则用户可信任组件C。由此,采用本发明的组件,如果用户知道初始的程序加载器是可信的,且初始程序加载器可核实主引导记录和NK区域是可信的,并且NK区域(如,其中的安全加载器)核实其它组件是可信的,则用户可信任那些组件。
由此,在本发明中,信任链依赖于保护初始程序加载器,如图5中块502所表示的。为此,CPU可具有可确认初始程序加载器的签名的安全引导特征。如果签名无效,则设备不引导。这取决于CPU的安全引导特征。
CPU用于核实初始程序加载器上的签名的确切机制是CPU相关的,并可在各个制造商之间不同,但是作为规则,如果复位矢量处的代码不包含正确的签名,则CPU不引导。
如图5所示,初始程序加载器502包含被授权来签署映象更新中的已签署的组件的剩余部分,即主引导记录506、更新加载器代码508和NK代码510的根证书列表504。该列表中的根证书是可信的,因为它们包括在初始程序加载器映象502内,该映象由CPU本身核实。
根证书列表504应当包括用于核实NK分区中的销售商提供的包内的文件上的签名的操作系统销售商证书,以及用于核实主引导记录、更新加载器代码和保留区域上的签名的至少一个OEM提供的证书。为保护主引导记录506,初始程序加载器502使用以公钥签署的整个主引导记录506的散列来确认主引导记录506上的签名。
主引导记录506也可包含安全目录,其中,安全目录是在图5中结合进主引导记录506中的新结构(另外,安全目录也可在别处找到)。安全目录包含用于确认未被内部地签名的现有分区的签名数组。安全目录中的签名用于签署保留区域。
为保护更新加载器508,初始程序加载器502使用以公钥签署的整个UL的散列来确认更新加载器508上的签名(本质上以确认MBR的相同方式)。确认更新加载器508的另一选项是通过内部签名(如下文对NK分区所描述的),例如,更新加载器508可包含一个分类表文件,它可包括UL更新加载器508中的每一文件。对于每一文件,计算散列并对照分类表文件中的散列来核实。分类表文件中的签名由根位于初始程序加载器502内的证书链来核实。
为保护NK分区,在控制从初始程序加载器502转移到NK分区中的内核之前,由初始程序加载器502确认NK分区。
如上所述,NK分区由包组成,每一包的清单文件包含指向包含经签署的文件名和散列的列表的单个分类表文件的指针。为保护NK分区,枚举每一清单文件和分类表。对于分类表中命名的每一文件,计算散列,并将其用于核实分类表中的散列。分类表文件中的签名由证书链核实;签名应当是支持证书链接的PKCS#7签名块。根证书需要必须在初始程序加载器根证书列表504中。然后,枚举NK分区中的文件,并且保护过程确认文件由分类表覆盖。如果签名的任一个不匹配,或存在未在分类表之一中列出的任何文件,则对分区的签名检查失败,设备不引导。
一旦控制从初始程序加载器502转移到内核,系统在内核的控制下运行。从这一点开始,为保护IMGFS分区512,基于信任链的过程依赖于作为安全加载器的一部分发生的签名确认,以及与安全加载器相关联且执行签名核实的证据生成器,签名核实包括核实对应于组成系统中的大部分模块的多流(multi-stream)rel merge模块的签名格式。
设备上定义的任何其它分区需要遵从这些安全检查,包括无线电和其它保留分区。更具体地,具有OEM专用分区(如,测试代码或无线电栈)的OEM需要令这些分区由签名来确认。保留分段的签名可在安全目录中找到,并且应当是PKCS#7签名块,并向上链接到初始程序加载器的根证书列表504中的根。
总结
如从以上详细描述可以见到的,提供了一种使用加密钥来控制对初始映象和/或更新映象的访问的机制。该机制是灵活的,并且通过应用到安装和引导时实施,无法被容易地击败。
尽管本发明易受各种修改和替换构造的影响,然而在附图中示出了某些说明的实施例并在上文详细描述了它们。然而应当理解,这并非将本发明限于所揭示的具体形式,而是相反,本发明覆盖落入本发明的精神和范围之内的所有修改、替换构造和等效技术方案。

Claims (36)

1.在计算环境中,一种方法,其特征在于,它包括:
标识一包含设备或设备类的设备组,为所述设备组,一包括映象或映象的子组件的映象实体将要被加上密钥;以及
安全地将一对应于所述设备组的标识符与所述映象实体相关联,使得与所述组的一个设备相关联的一实施机制可确定所述映象实体是否被允许在该关联的设备上运行。
2.如权利要求1所述的方法,其特征在于,标识为其要对所述映象实体加密钥的所述设备组包括:向对所述映象实体加密钥的服务器提供与所述设备组相关联的UUID。
3.如权利要求2所述的方法,其特征在于,所述服务器通过获取对应于所述映象实体的数据的第一散列、获取所述UUID的第二散列、将所述第一和第二散列相组合、签署经组合的第一和第二散列以产生密钥、并将所述密钥与所述映象实体相关联,来对所述映象实体加密钥。
4.如权利要求3所述的方法,其特征在于,所述映象实体包括一包,并且其中,获取对应于所述映象实体的数据的第一散列包括获取对应于所述包的散列。
5.如权利要求3所述的方法,其特征在于,获取对应于所述包的散列包括获取一描述所述包的设备清单文件的散列。
6.如权利要求3所述的方法,其特征在于,所述实施机制通过获取对应于所述映象实体的数据的第一散列、获取所述UUID的第二散列、将所述第一和第二散列相组合、以及签署经组合的第一和第二散列产生用于与同所述映象实体相关联的所述密钥相比较的第二签名,来核查所述密钥。
7.如权利要求3所述的方法,其特征在于,所述实施机制实现在一安装程序中,并且其中,所述实施机制通过如果所述密钥不对所述设备组和所述映象实体有效即阻止安装,来确定所述映象实体是否被允许在所述设备组上运行。
8.如权利要求7所述的方法,其特征在于,它还包括,在一安全引导过程中核实一引导所述设备的引导加载器代码的有效性、以及在所述引导加载器代码中核实包含所述实施机制的所述安装程序的有效性。
9.如权利要求3所述的方法,其特征在于,所述实施机制在一设备引导过程中实现,并且其中,所述实施机制通过如果不是至少对于所述映象实体的部分子组件有一个对所关联的设备有效的密钥即阻止所关联的设备的引导,来确定所述映象实体是否被允许在所关联的设备上运行。
10.如权利要求9所述的方法,其特征在于,它还包括,在一安全引导过程中核实包含所述实施机制的代码的有效性。
11.如权利要求1所述的方法,其特征在于,所述实施机制通过核查与基于一对应于所述组的所述关联的设备的标识符的所述映象的一子组件相关联的密钥,来确定所述映象实体是否被允许在所关联的设备上运行。
12.如权利要求11所述的方法,其特征在于,所述实施机制响应于一加密钥要求而操作。
13.如权利要求11所述的方法,其特征在于,所述加密钥要求与所述映象实体一起获取。
14.如权利要求11所述的方法,其特征在于,所述加密钥要求从一文件中获取,该文件对应于另一个使一相应映象已经安装在所述关联的设备上的包。
15.如权利要求11所述的方法,其特征在于,所述加密钥要求从一文件中获取,该文件对应于另一个要被处理以将数据安装到所述关联的设备上的包。
16.如权利要求11所述的方法,其特征在于,所述密钥从一经签署的散列中获取,所述经签署的散列包括对应于所述映象的数据的第一散列和对应于所述关联的设备的所述标识符的第二散列。
17.如权利要求16所述的方法,其特征在于,对应于所述设备的所述标识符是用于一类设备的标识符。
18.如权利要求16所述的方法,其特征在于,对应于所述映象的数据包括对包含所述映象的包的描述。
19.一个或多个具有计算机可执行指令的计算机可读媒质,当所述指令被执行时,实现权利要求1所述的方法。
20.在计算环境中,一种系统,其特征在于,它包括:
一加密钥机制,它用密钥签署包,所述密钥基于对应于所述包的数据和对应于所述第一设备标识符的数据;以及
一实施机制,它与一具有可与由所述加密钥机制使用的所述第一设备标识符相同或相异的第二设备标识符的设备相关联,所述实施机制基于所述密钥和所述第二设备标识符确定对应于所述包的内容的映象是否被允许在具有所述第二设备标识符的所述设备上运行。
21.如权利要求20所述的系统,其特征在于,所述第一和第二标识符的每一个是与一设备或设备类相关联的UUID的形式。
22.如权利要求20所述的系统,其特征在于,对应于所述包的所述数据是包内描述所述包的的文件的散列。
23.如权利要求20所述的系统,其特征在于,对应于所述第一设备标识符的所述数据是所述第一设备标识符的UUID的散列。
24.如权利要求20所述的系统,其特征在于,对应于所述包的所述数据是所述包中描述所述包的文件的散列,对应于所述第一设备标识符的所述数据是所述第一设备标识符的UUID的散列,并且其中,所述加密钥机制签署所述散列的串接。
25.如权利要求20所述的系统,其特征在于,所述实施机制包括一安装时核实器,它通过基于将所述密钥与用所述第二标识符值计算的值的比较,防止安装或允许安装,来防止所述映象运行或允许所述映象运行。
26.如权利要求20所述的系统,其特征在于,所述实施机制包括一引导时核实器,它基于将所述密钥与用所述第二标识符值计算的值的比较,防止所述设备引导或允许所述设备引导。
27.如权利要求20所述的系统,其特征在于,所述实施机制通过获取对应于所述包的数据的第一散列、获取所述UUID的第二散列、将所述第一和第二散列相组合、以及签署所组合的第一和第二散列以产生用于与同所述相关联的所述密钥相比较的签名,来检查所述密钥。
28.如权利要求20所述的系统,其特征在于,所述实施机制响应于一加密钥要求而操作。
29.如权利要求28所述的系统,其特征在于,所述加密钥要求与所述包一起获取。
30.如权利要求28所述的系统,其特征在于,所述加密钥要求从一文件中获取,该文件对应于另一个已使相应映象安装在所述关联的设备上的包。
31.如权利要求28所述的系统,其特征在于,所述加密钥要求从一文件中获取,该文件对应于另一个要被处理以将数据安装到所述关联的设备上的包。
32.如权利要求20所述的系统,其特征在于,对应于所述设备的所述第一标识符是用于一类设备的标识符。
33.如权利要求20所述的系统,其特征在于,所述第一和第二标识符是相同的。
34.如权利要求20所述的系统,其特征在于,它还包括用于在运行所述实施机制之前核实所述实施机制的有效性的装置。
35.如权利要求20所述的系统,其特征在于,所述实施机制包括一引导时核实器,并且其中,用于核实所述实施机制的有效性的装置包括一设备硬件中的安全引导机制。
36.如权利要求20所述的系统,其特征在于,所述实施机制包括一安装时核实器,并且其中,用于核实所述实施机制的有效性的装置包括加载包含所述安装时核实器的代码的引导加载器中的代码。
CN2004101022875A 2003-12-16 2004-12-16 确保软件更新仅在特定设备或设备类上安装或运行 Expired - Fee Related CN1645288B (zh)

Applications Claiming Priority (4)

Application Number Priority Date Filing Date Title
US53012603P 2003-12-16 2003-12-16
US60/530,126 2003-12-16
US10/837,151 2004-05-01
US10/837,151 US20050132357A1 (en) 2003-12-16 2004-05-01 Ensuring that a software update may be installed or run only on a specific device or class of devices

Publications (2)

Publication Number Publication Date
CN1645288A true CN1645288A (zh) 2005-07-27
CN1645288B CN1645288B (zh) 2011-05-25

Family

ID=34657345

Family Applications (1)

Application Number Title Priority Date Filing Date
CN2004101022875A Expired - Fee Related CN1645288B (zh) 2003-12-16 2004-12-16 确保软件更新仅在特定设备或设备类上安装或运行

Country Status (6)

Country Link
US (1) US20050132357A1 (zh)
EP (1) EP1560098B1 (zh)
JP (1) JP4647300B2 (zh)
KR (1) KR101120825B1 (zh)
CN (1) CN1645288B (zh)
AT (1) ATE534963T1 (zh)

Cited By (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN100454250C (zh) * 2005-10-25 2009-01-21 北京飞天诚信科技有限公司 信息安全设备固件程序的远程升级方法
CN102117394A (zh) * 2010-01-04 2011-07-06 汤姆森许可贸易公司 检测是否已经复制了计算机文件的方法和装置以及能够进行这种检测的方法和装置
CN101631022B (zh) * 2009-08-04 2012-06-27 飞天诚信科技股份有限公司 一种签名方法和系统
CN104038336A (zh) * 2014-06-20 2014-09-10 上海动联信息技术股份有限公司 一种基于3des的数据加密方法
CN104219049A (zh) * 2013-05-29 2014-12-17 通用汽车环球科技运作有限责任公司 用以改进安全闪存编程的方法
CN106874795A (zh) * 2017-01-16 2017-06-20 北京奇虎科技有限公司 一种移动终端的防拆机方法、装置及移动终端
CN107077568A (zh) * 2014-11-17 2017-08-18 英特尔公司 对称密钥和信任链
CN114239080A (zh) * 2022-02-22 2022-03-25 麒麟软件有限公司 一种基于数字证书的软件多层签名方法及系统

Families Citing this family (94)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9134989B2 (en) 2002-01-31 2015-09-15 Qualcomm Incorporated System and method for updating dataset versions resident on a wireless device
US9813514B2 (en) 2002-06-12 2017-11-07 Good Technology Holdings Limited Information repository system including a wireless device and related method
US9092286B2 (en) * 2002-12-20 2015-07-28 Qualcomm Incorporated System to automatically process components on a device
US8626146B2 (en) 2003-10-29 2014-01-07 Qualcomm Incorporated Method, software and apparatus for performing actions on a wireless device using action lists and versioning
US20050138563A1 (en) * 2003-12-18 2005-06-23 International Business Machines Corporation Method and system for providing computer system software images
JP2005316890A (ja) * 2004-04-30 2005-11-10 Sony Corp プログラム、コンピュータ、データ処理方法、通信システムおよびその方法
CN1977244A (zh) * 2004-06-29 2007-06-06 皇家飞利浦电子股份有限公司 安全闪存
US8312431B1 (en) * 2004-09-17 2012-11-13 Oracle America, Inc. System and computer readable medium for verifying access to signed ELF objects
US7519973B2 (en) * 2004-09-29 2009-04-14 Hewlett-Packard Development Company, L.P. Providing unique event notification to enable firmware to request that an operating system perform a unique action
US20060080659A1 (en) * 2004-10-13 2006-04-13 Jp Mobile Operating, L.P. System and method of provisioning software to mobile devices
US7987459B2 (en) 2005-03-16 2011-07-26 Microsoft Corporation Application programming interface for identifying, downloading and installing applicable software updates
US8666900B1 (en) * 2005-03-30 2014-03-04 Intuit Inc. Secure product enablement over channels with narrow bandwidth
US8554686B2 (en) * 2005-06-30 2013-10-08 Advanced Micro Devices, Inc. Anti-hack protection to restrict installation of operating systems and other software
US9425958B2 (en) * 2005-08-05 2016-08-23 Hewlett Packard Enterprise Development Lp System, method and apparatus for cryptography key management for mobile devices
GB0516443D0 (en) * 2005-08-10 2005-09-14 Symbian Software Ltd Improving the security of operation of a computing device through the use of vendor ids
US7953225B2 (en) * 2005-10-21 2011-05-31 Harris Corporation Mobile wireless communications device with software installation and verification features and related methods
US8261258B1 (en) * 2005-10-28 2012-09-04 Google Inc. Common installer client
US9274774B2 (en) 2005-10-28 2016-03-01 Google Inc. Common installer server
US20070112773A1 (en) * 2005-11-14 2007-05-17 John Joyce Method for assuring flash programming integrity
US8051298B1 (en) * 2005-11-29 2011-11-01 Sprint Communications Company L.P. Integrated fingerprinting in configuration audit and management
JP4556857B2 (ja) * 2005-12-07 2010-10-06 セイコーエプソン株式会社 情報配信装置、情報配信装置の制御方法および制御プログラム
US7620392B1 (en) 2006-02-27 2009-11-17 Good Technology, Inc. Method and system for distributing and updating software in wireless devices
US20070220511A1 (en) * 2006-03-15 2007-09-20 Clarke James C Ensuring a stable application debugging environment via a unique hashcode identifier
KR100809295B1 (ko) 2006-04-06 2008-03-04 삼성전자주식회사 소프트웨어 설치를 위한 장치 및 방법
US9098706B1 (en) * 2006-07-31 2015-08-04 Symantec Corporation Installer trust chain validation
US7984516B2 (en) * 2006-08-31 2011-07-19 Silicon Laboratories Inc. Method and apparatus for protection of voice over internet protocol software
US8079027B2 (en) * 2006-09-08 2011-12-13 Via Technologies, Inc. Programming language translation systems and methods
US8254568B2 (en) 2007-01-07 2012-08-28 Apple Inc. Secure booting a computing device
US8239688B2 (en) * 2007-01-07 2012-08-07 Apple Inc. Securely recovering a computing device
US20080195868A1 (en) * 2007-02-12 2008-08-14 Nokia Corporation Rollback-Resistant Code-Signing
WO2008157735A2 (en) 2007-06-19 2008-12-24 Qualcomm Incorporated Methods and apparatus for dataset synchronization in a wireless environment
US8281298B2 (en) * 2007-08-27 2012-10-02 International Business Machines Corporation Evaluating computer driver update compliance
EP2223256A1 (en) 2007-11-17 2010-09-01 Uniloc Usa, Inc. System and method for adjustable licensing of digital products
US8291402B2 (en) * 2007-11-29 2012-10-16 Red Hat, Inc. Using system fingerprints to accelerate package dependency resolution
KR20090064698A (ko) * 2007-12-17 2009-06-22 한국전자통신연구원 신뢰 플랫폼 모듈을 이용한 drm 방법 및 시스템
US8954541B2 (en) * 2007-12-29 2015-02-10 Amx Llc Method, computer-readable medium, and system for discovery and registration of controlled devices associated with self-describing modules
US7937456B2 (en) * 2008-01-18 2011-05-03 Red Hat, Inc. Configuration profiling for remote clients
US20090259855A1 (en) * 2008-04-15 2009-10-15 Apple Inc. Code Image Personalization For A Computing Device
US8150039B2 (en) 2008-04-15 2012-04-03 Apple Inc. Single security model in booting a computing device
US20100058317A1 (en) * 2008-09-02 2010-03-04 Vasco Data Security, Inc. Method for provisioning trusted software to an electronic device
US8225138B2 (en) * 2009-03-31 2012-07-17 Lenovo (Singapore) Pte. Ltd. High-speed recovery for computing systems
US8423473B2 (en) 2009-06-19 2013-04-16 Uniloc Luxembourg S. A. Systems and methods for game activation
US9633183B2 (en) 2009-06-19 2017-04-25 Uniloc Luxembourg S.A. Modular software protection
US9129097B2 (en) * 2009-06-24 2015-09-08 Uniloc Luxembourg S.A. Systems and methods for auditing software usage using a covert key
US8671402B2 (en) * 2009-11-09 2014-03-11 Bank Of America Corporation Network-enhanced control of software updates received via removable computer-readable medium
US9176898B2 (en) * 2009-11-09 2015-11-03 Bank Of America Corporation Software stack building using logically protected region of computer-readable medium
US8972974B2 (en) * 2009-11-09 2015-03-03 Bank Of America Corporation Multiple invocation points in software build task sequence
US20110113424A1 (en) * 2009-11-09 2011-05-12 Bank Of America Corporation Distribution Of Software Updates
US9128799B2 (en) * 2009-11-09 2015-09-08 Bank Of America Corporation Programmatic creation of task sequences from manifests
US8397230B2 (en) * 2009-11-09 2013-03-12 Bank Of America Corporation Software updates using delta patching
US20110238572A1 (en) * 2010-03-25 2011-09-29 Bank Of America Corporation Remote Control Of Self-Service Terminal
US9772834B2 (en) 2010-04-27 2017-09-26 Red Hat, Inc. Exportable encoded identifications of networked machines
US8762931B2 (en) * 2010-05-26 2014-06-24 Red Hat, Inc. Generating an encoded package profile
US9721101B2 (en) * 2013-06-24 2017-08-01 Red Hat, Inc. System wide root of trust chaining via signed applications
US8566613B2 (en) * 2010-06-11 2013-10-22 Intel Corporation Multi-owner deployment of firmware images
WO2012003591A1 (en) 2010-07-09 2012-01-12 Research In Motion Limited Microcode-based challenge/response process
CA2745975C (en) 2010-07-09 2016-02-23 Research In Motion Limited Utilization of a microcode interpreter built in to a processor
EP2405377B1 (en) * 2010-07-09 2017-12-27 BlackBerry Limited Securing a component prior to manufacture of a device
US9003400B2 (en) * 2010-11-29 2015-04-07 Red Hat, Inc. Tracking computing systems utilizing software repositories
US8612963B2 (en) * 2010-12-02 2013-12-17 International Business Machines Corporation Guided problem resolution in deploying an application
JP5932837B2 (ja) 2011-01-19 2016-06-08 インターナショナル・ビジネス・マシーンズ・コーポレーションInternational Business Machines Corporation コードを更新および認証するための方法およびシステム、プログラムの完全性を試験する方法およびシステム
US9967089B2 (en) 2011-03-15 2018-05-08 Irdeto B.V. Change-tolerant method for generating identifier for collection of assets in computing environment using error-correction code scheme
US9110678B1 (en) 2011-05-17 2015-08-18 Phoenix Technologies Ltd. Automated BIOS enhancements and upgrades
US8874892B1 (en) 2011-05-26 2014-10-28 Phoenix Technologies Ltd. Assessing BIOS information prior to reversion
US10262309B1 (en) * 2011-05-26 2019-04-16 Phoenix Technologies Ltd. Augmenting a BIOS with new programs
US9110679B1 (en) 2011-06-03 2015-08-18 Phoenix Technologies Ltd. Pre-boot management of drivers and programs
US20130055369A1 (en) * 2011-08-24 2013-02-28 Mcafee, Inc. System and method for day-zero authentication of activex controls
KR101920263B1 (ko) * 2012-01-27 2019-02-08 삼성전자주식회사 디스플레이장치 및 그 제어방법, 업그레이드장치, 디스플레이 시스템
US9317268B2 (en) 2012-02-02 2016-04-19 Sungard Availability Services Lp Recovery automation in heterogeneous environments
US9612814B2 (en) * 2012-02-02 2017-04-04 Sungard Availability Services, Lp Network topology-aware recovery automation
RU2495487C1 (ru) 2012-08-10 2013-10-10 Закрытое акционерное общество "Лаборатория Касперского" Система и способ для определения доверия при обновлении разрешенного программного обеспечения
US9690559B2 (en) * 2012-09-22 2017-06-27 Avaya Inc. Downloadable pluggable services
US10237370B2 (en) 2012-09-22 2019-03-19 Avaya Inc. Co-resident plug-ins of third party software
US9262150B2 (en) 2012-09-22 2016-02-16 Avaya Inc. Services versioning
US9116772B2 (en) 2012-09-22 2015-08-25 Avaya Inc. Dynamic customization of pluggable service by users
RU2526754C2 (ru) 2012-09-28 2014-08-27 Закрытое акционерное общество "Лаборатория Касперского" Система и способ подбора функций управления мобильными устройствами
US9348997B2 (en) * 2014-03-13 2016-05-24 Intel Corporation Symmetric keying and chain of trust
US9509502B2 (en) * 2014-03-13 2016-11-29 Intel Corporation Symmetric keying and chain of trust
US9521125B2 (en) 2014-03-13 2016-12-13 Intel Corporation Pseudonymous remote attestation utilizing a chain-of-trust
US9147075B1 (en) * 2014-03-20 2015-09-29 Juniper Networks, Inc. Apparatus and method for securely logging boot-tampering actions
US10447812B2 (en) 2015-06-05 2019-10-15 Apple Inc. On demand resources
US9740473B2 (en) 2015-08-26 2017-08-22 Bank Of America Corporation Software and associated hardware regression and compatibility testing system
US20180081666A1 (en) * 2016-03-11 2018-03-22 Oleksii Surdu Reliable and Secure Firmware Update for Internet of Things (IoT) Devices
US11050605B2 (en) * 2016-08-01 2021-06-29 Data I/O Corporation Device programming with system generation
US9923755B2 (en) * 2016-08-01 2018-03-20 Data I/O Corporation Device programming with system generation
CN106452783B (zh) * 2016-09-26 2021-02-09 上海兆芯集成电路有限公司 计算机系统及安全执行的方法
DE102016221108A1 (de) * 2016-10-26 2018-04-26 Volkswagen Aktiengesellschaft Verfahren zum Aktualisieren einer Software eines Steuergeräts eines Fahrzeugs
US10956615B2 (en) 2017-02-17 2021-03-23 Microsoft Technology Licensing, Llc Securely defining operating system composition without multiple authoring
EP3418887A1 (en) * 2017-06-19 2018-12-26 Clarion Co., Ltd. Electronic device and program updating method
JP7179482B2 (ja) * 2018-04-19 2022-11-29 キヤノン株式会社 情報処理装置、制御方法、およびそのプログラム
US11068598B2 (en) * 2018-11-01 2021-07-20 Dell Products L.P. Chassis internal device security
CN110619194B (zh) * 2019-09-26 2021-10-01 绿盟科技集团股份有限公司 一种升级包加密、解密方法及装置
EP3798886A1 (en) * 2019-09-26 2021-03-31 General Electric Company Devices, systems, and methods for securely initializing an embedded system
US11809850B2 (en) * 2021-08-25 2023-11-07 Microsoft Technology Licensing, Llc Generating and distributing customized embedded operating systems

Family Cites Families (77)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4974149A (en) * 1985-08-02 1990-11-27 Wang Laboratories, Inc. Data distribution apparatus and method having a data description including information for specifying a time that a data distribution is to occur
US5303384A (en) * 1990-01-02 1994-04-12 The United States Of America As Represented By The Administrator Of The National Aeronautics And Space Administration High level language-based robotic control system
US5214695A (en) * 1990-07-23 1993-05-25 International Business Machines Corporation Apparatus and method for loading a system reference diskette image from a system partition in a personal computer system
US5421006A (en) * 1992-05-07 1995-05-30 Compaq Computer Corp. Method and apparatus for assessing integrity of computer system software
US5325532A (en) * 1992-09-25 1994-06-28 Compaq Computer Corporation Automatic development of operating system boot image
US6157721A (en) * 1996-08-12 2000-12-05 Intertrust Technologies Corp. Systems and methods using cryptography to protect secure computing environments
US5625693A (en) * 1995-07-07 1997-04-29 Thomson Consumer Electronics, Inc. Apparatus and method for authenticating transmitting applications in an interactive TV system
US5757914A (en) * 1995-10-26 1998-05-26 Sun Microsystems, Inc. System and method for protecting use of dynamically linked executable modules
US5826011A (en) * 1995-12-26 1998-10-20 Rainbow Technologies, Inc. Method of metering and protecting computer software
US5835777A (en) * 1996-03-20 1998-11-10 Hewlett-Packard Company Method of automatically generating a software installation package
US6253300B1 (en) * 1997-08-20 2001-06-26 Powerquest Corporation Computer partition manipulation during imaging
US6108697A (en) * 1997-10-06 2000-08-22 Powerquest Corporation One-to-many disk imaging transfer over a network
US6351850B1 (en) * 1997-11-14 2002-02-26 Frank Van Gilluwe Computer operating system installation
WO1999026123A1 (en) * 1997-11-18 1999-05-27 Christopher Benjamin Wakely Improvements relating to software protection systems
US6298443B1 (en) * 1998-04-24 2001-10-02 Dell Usa, L.P. Method and system for supplying a custom software image to a computer system
US6243468B1 (en) * 1998-04-29 2001-06-05 Microsoft Corporation Software anti-piracy system that adapts to hardware upgrades
US7503072B2 (en) * 1998-04-29 2009-03-10 Microsoft Corporation Hardware ID to prevent software piracy
US20040225894A1 (en) * 1998-06-04 2004-11-11 Z4 Technologies, Inc. Hardware based method for digital rights management including self activating/self authentication software
US6381742B2 (en) * 1998-06-19 2002-04-30 Microsoft Corporation Software package management
US6158005A (en) * 1998-09-10 2000-12-05 Audible, Inc. Cloning protection scheme for a digital information playback device
US6327652B1 (en) * 1998-10-26 2001-12-04 Microsoft Corporation Loading and identifying a digital rights management operating system
US6330670B1 (en) * 1998-10-26 2001-12-11 Microsoft Corporation Digital rights management operating system
US6802006B1 (en) * 1999-01-15 2004-10-05 Macrovision Corporation System and method of verifying the authenticity of dynamically connectable executable images
JP4261724B2 (ja) * 1999-03-10 2009-04-30 キヤノン株式会社 署名データ生成装置及び画像検証装置
US6697948B1 (en) * 1999-05-05 2004-02-24 Michael O. Rabin Methods and apparatus for protecting information
JP3852538B2 (ja) * 1999-05-14 2006-11-29 富士通株式会社 コンピュータシステム、コンピュータネットワークシステム、コンピュータ及び記録媒体
US6675382B1 (en) * 1999-06-14 2004-01-06 Sun Microsystems, Inc. Software packaging and distribution system
US6324692B1 (en) * 1999-07-28 2001-11-27 Data General Corporation Upgrade of a program
US6725205B1 (en) * 1999-12-02 2004-04-20 Ulysses Esd, Inc. System and method for secure software installation
AU1405000A (en) * 1999-12-15 2001-06-25 Sun Microsystems, Inc. Preparation of a software configuration using an xml type programming language
US6581159B1 (en) * 1999-12-23 2003-06-17 Intel Corporation Secure method of updating bios by using a simply authenticated external module to further validate new firmware code
US6591376B1 (en) * 2000-03-02 2003-07-08 Hewlett-Packard Development Company, L.P. Method and system for failsafe recovery and upgrade of an embedded operating system
US6871344B2 (en) * 2000-04-24 2005-03-22 Microsoft Corporation Configurations for binding software assemblies to application programs
JP2001331327A (ja) * 2000-05-24 2001-11-30 Matsushita Electric Ind Co Ltd 電子機器
US7140013B2 (en) * 2000-06-01 2006-11-21 Aduva, Inc. Component upgrading with dependency conflict resolution, knowledge based and rules
DE10028500A1 (de) * 2000-06-08 2002-01-03 Deutsche Telekom Ag Verfahren zur Installation von Software in einer Hardware
US7000230B1 (en) * 2000-06-21 2006-02-14 Microsoft Corporation Network-based software extensions
US7117371B1 (en) * 2000-06-28 2006-10-03 Microsoft Corporation Shared names
DE10037397A1 (de) * 2000-08-01 2002-02-14 Daimler Chrysler Ag Verfahren zum Laden von Software
JP3712925B2 (ja) * 2000-08-21 2005-11-02 日本電信電話株式会社 コンテンツ利用制御方法,コンテンツ利用制御装置およびコンテンツ利用制御プログラム記憶媒体
US20040003266A1 (en) * 2000-09-22 2004-01-01 Patchlink Corporation Non-invasive automatic offsite patch fingerprinting and updating system and method
US6832373B2 (en) * 2000-11-17 2004-12-14 Bitfone Corporation System and method for updating and distributing information
US7216090B2 (en) * 2000-11-28 2007-05-08 Navic Systems, Inc. Promotion packaging for transmission groups
JP4010111B2 (ja) * 2000-12-22 2007-11-21 日本電気株式会社 配信システム
JP2003005859A (ja) * 2001-04-16 2003-01-08 Yuichi Sumiya プログラムやデータの管理方法とコンピュータ
US20020157010A1 (en) * 2001-04-24 2002-10-24 International Business Machines Corporation Secure system and method for updating a protected partition of a hard drive
US6912591B2 (en) * 2001-05-02 2005-06-28 Science Application International Corporation System and method for patch enabled data transmissions
JP2002333927A (ja) * 2001-05-08 2002-11-22 Sony Corp データ配付方法、データ配付方法のプログラム、データ処理方法及び記録媒体
US20040015958A1 (en) * 2001-05-15 2004-01-22 Veil Leonard Scott Method and system for conditional installation and execution of services in a secure computing environment
US7155710B2 (en) * 2001-06-08 2006-12-26 Igt Method and apparatus for gaming device software configuration
FI114416B (fi) * 2001-06-15 2004-10-15 Nokia Corp Menetelmä elektroniikkalaitteen varmistamiseksi, varmistusjärjestelmä ja elektroniikkalaite
US8200988B2 (en) * 2001-08-03 2012-06-12 Intel Corporation Firmware security key upgrade algorithm
US20030063896A1 (en) * 2001-09-28 2003-04-03 Gonzalez Tovar Victor Manuel System utility interface for software upgrades and system diagnostics in automotive or portable DVD players
US7237122B2 (en) * 2001-10-19 2007-06-26 Mcafee, Inc. Method and apparatus to facilitate software installation using embedded user credentials
US7272832B2 (en) * 2001-10-25 2007-09-18 Hewlett-Packard Development Company, L.P. Method of protecting user process data in a secure platform inaccessible to the operating system and other tasks on top of the secure platform
US20030182563A1 (en) * 2002-03-22 2003-09-25 Liu James C. Method and apparatus for software license verification
US7194738B2 (en) * 2002-04-09 2007-03-20 Synnex Technology International Corporation Method of creating image files and installing software bundles on target computers
US20030217358A1 (en) * 2002-05-17 2003-11-20 Sun Microsystems, Inc. Method, system, and article of manufacture for firmware downloads
US8447963B2 (en) * 2002-06-12 2013-05-21 Bladelogic Inc. Method and system for simplifying distributed server management
US20040060035A1 (en) * 2002-09-24 2004-03-25 Eric Ustaris Automated method and system for building, deploying and installing software resources across multiple computer systems
US7007049B2 (en) * 2002-11-18 2006-02-28 Innopath Software, Inc. Device memory management during electronic file updating
US7085957B2 (en) * 2002-11-21 2006-08-01 Texas Instruments Incorporated Upgrading of firmware with tolerance to failures
US7228541B2 (en) * 2003-01-17 2007-06-05 National Instruments Corporation Creation of application system installer
US7478385B2 (en) * 2003-01-17 2009-01-13 National Instruments Corporation Installing software using programmatic component dependency analysis
US7356709B2 (en) * 2003-01-31 2008-04-08 Microsoft Corporation Systems and methods for deterring software piracy in a volume license environment
EP1597923A4 (en) * 2003-02-11 2008-05-28 Unisys Corp METHOD AND DEVICE FOR UPDATING A CONTROL FILE
US7072807B2 (en) * 2003-03-06 2006-07-04 Microsoft Corporation Architecture for distributed computing system and automated design, deployment, and management of distributed applications
US7577849B2 (en) * 2003-04-02 2009-08-18 Microsoft Corporation Keyed-build system for controlling the distribution of software
US7117304B2 (en) * 2003-06-03 2006-10-03 Sun Microsystems, Inc. System and method for determining a file system layout
US7644404B2 (en) * 2003-06-04 2010-01-05 Hewlett-Packard Development Company, L.P. Network having customizable generators and electronic device having customizable updating software
US7478381B2 (en) * 2003-12-15 2009-01-13 Microsoft Corporation Managing software updates and a software distribution service
US7549148B2 (en) * 2003-12-16 2009-06-16 Microsoft Corporation Self-describing software image update components
US7614051B2 (en) * 2003-12-16 2009-11-03 Microsoft Corporation Creating file systems within a file in a storage technology-abstracted manner
US7549042B2 (en) * 2003-12-16 2009-06-16 Microsoft Corporation Applying custom software image updates to non-volatile storage in a failsafe manner
US7568195B2 (en) * 2003-12-16 2009-07-28 Microsoft Corporation Determining a maximal set of dependent software updates valid for installation
US7765592B2 (en) * 2004-01-10 2010-07-27 Microsoft Corporation Changed file identification, software conflict resolution and unwanted file removal
US7853609B2 (en) * 2004-03-12 2010-12-14 Microsoft Corporation Update distribution system architecture and method for distributing software

Cited By (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN100454250C (zh) * 2005-10-25 2009-01-21 北京飞天诚信科技有限公司 信息安全设备固件程序的远程升级方法
CN101631022B (zh) * 2009-08-04 2012-06-27 飞天诚信科技股份有限公司 一种签名方法和系统
CN102117394A (zh) * 2010-01-04 2011-07-06 汤姆森许可贸易公司 检测是否已经复制了计算机文件的方法和装置以及能够进行这种检测的方法和装置
CN104219049A (zh) * 2013-05-29 2014-12-17 通用汽车环球科技运作有限责任公司 用以改进安全闪存编程的方法
CN104219049B (zh) * 2013-05-29 2018-05-08 通用汽车环球科技运作有限责任公司 用以改进安全闪存编程的方法
CN104038336A (zh) * 2014-06-20 2014-09-10 上海动联信息技术股份有限公司 一种基于3des的数据加密方法
CN107077568A (zh) * 2014-11-17 2017-08-18 英特尔公司 对称密钥和信任链
CN107077568B (zh) * 2014-11-17 2020-08-25 英特尔公司 对称密钥和信任链
CN106874795A (zh) * 2017-01-16 2017-06-20 北京奇虎科技有限公司 一种移动终端的防拆机方法、装置及移动终端
CN114239080A (zh) * 2022-02-22 2022-03-25 麒麟软件有限公司 一种基于数字证书的软件多层签名方法及系统

Also Published As

Publication number Publication date
KR101120825B1 (ko) 2012-03-16
EP1560098B1 (en) 2011-11-23
JP4647300B2 (ja) 2011-03-09
KR20050061353A (ko) 2005-06-22
ATE534963T1 (de) 2011-12-15
EP1560098A3 (en) 2005-08-10
JP2005182789A (ja) 2005-07-07
EP1560098A2 (en) 2005-08-03
CN1645288B (zh) 2011-05-25
US20050132357A1 (en) 2005-06-16

Similar Documents

Publication Publication Date Title
CN1645288B (zh) 确保软件更新仅在特定设备或设备类上安装或运行
US8171295B2 (en) Information processing apparatus, a server apparatus, a method of an information processing apparatus, a method of a server apparatus, and an apparatus executable process
US10871955B2 (en) System and method for providing firmware data updates
CN1201248C (zh) 共享名
EP2550768B1 (en) System and method for remote maintenance of client systems in an electronic network using software testing by a virtual machine
CN100533451C (zh) 用于使文件系统免于恶意程序的增强安全层的系统和方法
CN103299311B (zh) 用于可信引导优化的方法和设备
US7711960B2 (en) Mechanisms to control access to cryptographic keys and to attest to the approved configurations of computer platforms
JP5821034B2 (ja) 情報処理装置、仮想マシン生成方法及びアプリ配信システム
CN1097772C (zh) 在安全存储区中保护应用程序数据的方法和装置
KR101190479B1 (ko) 티켓 인증 보안 설치 및 부트
EP1698992A2 (en) Program authentication based on environment
CN103793654A (zh) 服务器主动管理技术协助的安全引导
CN1808326A (zh) 使用部分映像散列确认可执行文件完整性的系统和方法
EP3583536B1 (en) Securely defining operating system composition without multiple authoring
CN111177703B (zh) 操作系统数据完整性的确定方法及装置
JP4526383B2 (ja) 実行可能なコードを格納するタンパーエビデントな取り外し可能な媒体
CN1808974A (zh) 通信装置、数字署名验证方法以及数字署名生成方法
CN111506915B (zh) 授权访问的控制方法、装置和系统
CN108595981B (zh) 加密安卓系统的方法
US8087014B1 (en) Method and apparatus for configuration management for a computing device
CN108121898A (zh) 一种程序保护方法和装置

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
ASS Succession or assignment of patent right

Owner name: MICROSOFT TECHNOLOGY LICENSING LLC

Free format text: FORMER OWNER: MICROSOFT CORP.

Effective date: 20150429

C41 Transfer of patent application or patent right or utility model
TR01 Transfer of patent right

Effective date of registration: 20150429

Address after: Washington State

Patentee after: Micro soft technique license Co., Ltd

Address before: Washington State

Patentee before: Microsoft Corp.

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: 20110525

Termination date: 20171216