固件映像的多所有者部署.pdf

上传人:奻奴 文档编号:4751505 上传时间:2018-11-05 格式:PDF 页数:18 大小:2.55MB
返回 下载 相关 举报
摘要
申请专利号:

CN201180027397.8

申请日:

2011.06.10

公开号:

CN102934073A

公开日:

2013.02.13

当前法律状态:

撤回

有效性:

无权

法律详情:

发明专利申请公布后的视为撤回IPC(主分类):G06F 9/22申请公布日:20130213|||实质审查的生效IPC(主分类):G06F 9/22申请日:20110610|||公开

IPC分类号:

G06F9/22; G06F9/06

主分类号:

G06F9/22

申请人:

英特尔公司

发明人:

P·萨克斯库马; R·C·斯旺森; V·J·齐默; M·A·罗斯曼; M·布鲁苏

地址:

美国加利福尼亚州

优先权:

2010.06.11 US 12/814,246

专利代理机构:

上海专利商标事务所有限公司 31100

代理人:

张东梅

PDF下载: PDF下载
内容摘要

一种用于固件映像的多所有者部署的方法、设备、系统和计算机程序产品。该方法包括获取经签名的固件映像,该经签名的固件映像包括由第一代码所有者签名的第一代码模块和由第二代码所有者签名的第二代码模块。该方法还包括获取经更新的第一代码模块,其包括用于该第一代码模块的经更新的代码;验证经更新的第一代码模块是由第一代码所有者签名;以及响应于验证经更新的第一代码模块是由第一代码所有者签名而利用经更新的第一代码模块更新经签名的固件映像。经签名的固件映像还可包括访问控制列表,该访问控制列表授权由第一代码所有者对第一代码模块的更新以及由第二代码所有者对第二代码模块的更新。

权利要求书

权利要求书一种计算机实现的方法,包括:
获取经签名的固件映像,所述经签名的固件映像包括由第一代码所有者签名的第一代码模块和由第二代码所有者签名的第二代码模块;
获取经更新的第一代码模块,所述经更新的第一代码模块包括用于所述第一代码模块的经更新的代码;
验证所述经更新的第一代码模块是由第一代码所有者签名;以及
响应于验证所述经更新的第一代码模块是由第一代码所有者签名而利用经更新的第一代码模块更新经签名的固件映像。
如权利要求1所述的方法,其特征在于:
所述经签名的固件映像还包括访问控制列表;以及
所述访问控制列表授权由第一代码所有者对第一代码模块的更新以及由第二代码所有者对第二代码模块的更新。
如权利要求2所述的方法,其特征在于,还包括:
获取访问控制令牌,其中所述访问控制令牌包括用于第三代码所有者的公钥和对第三代码所有者更新所述经签名的固件映像的第三代码模块的授权;
验证所述访问控制令牌由来自所述访问控制列表的经授权代码所有者签名;
验证经授权的代码所有者被授权更新第三代码模块;以及
更新访问控制列表以包括第三代码所有者的公钥以及对第三代码所有者更新第三代码模块的授权。
如权利要求3所述的方法,其特征在于,还包括:
从第三代码所有者接收经更新的第三代码模块;
验证所述经更新的第三代码模块是由第三代码所有者签名;以及
响应于验证所述经更新的第三代码模块是由第三代码所有者签名而利用经更新的第三代码模块更新经签名的固件映像。
如权利要求1所述的方法,其特征在于,还包括:
在更新经签名的固件映像之前,验证第一代码所有者被授权更新第一代码模块。
一种系统,包括:
至少一个处理器;以及
耦合到所述至少一个处理器的存储器,所述存储器包括执行以下的指令:
获取经签名的固件映像,所述经签名的固件映像包括由第一代码所有者签名的第一代码模块和由第二代码所有者签名的第二代码模块;
获取经更新的第一代码模块,所述经更新的第一代码模块包括用于所述第一代码模块的经更新的代码;
验证所述经更新的第一代码模块是由第一代码所有者签名;以及
响应于验证所述经更新的第一代码模块是由第一代码所有者签名而利用经更新的第一代码模块更新经签名的固件映像。
如权利要求6所述的系统,其特征在于,
所述经签名的固件映像还包括访问控制列表;以及
所述访问控制列表授权由第一代码所有者对第一代码模块的更新以及由第二代码所有者对第二代码模块的更新。
如权利要求7所述的系统,其特征在于,所述指令还执行以下:
接收访问控制令牌,其中所述访问控制令牌包括用于第三代码所有者的公钥和对第三代码所有者更新所述经签名的固件映像的第三代码模块的授权;
验证所述访问控制令牌由来自所述访问控制列表的经授权代码所有者签名;
验证经授权的代码所有者被授权更新第三代码模块;以及
更新访问控制列表以包括第三代码所有者的公钥以及对第三代码所有者更新第三代码模块的授权。
如权利要求8所述的系统,其特征在于,所述指令还执行以下:
从第三代码所有者接收经更新的第三代码模块;
验证所述经更新的第三代码模块是由第三代码所有者签名;以及
响应于验证所述经更新的第三代码模块是由第三代码所有者签名而利用经更新的第三代码模块更新经签名的固件映像。
如权利要求6所述的系统,其特征在于,所述指令还执行以下:
在更新经签名的固件映像之前,验证第一代码所有者被授权更新第一代码模块。
一种计算机程序产品,包括:
计算机可读存储介质;以及
所述计算机可读存储介质中的指令,其中所述指令在处理系统中执行时导致处理系统执行以下操作:
获取经签名的固件映像,所述经签名的固件映像包括由第一代码所有者签名的第一代码模块和由第二代码所有者签名的第二代码模块;
获取经更新的第一代码模块,所述经更新的第一代码模块包括用于该第一代码模块的经更新的代码;
验证所述经更新的第一代码模块是由第一代码所有者签名;以及
响应于验证所述经更新的第一代码模块是由第一代码所有者签名而利用经更新的第一代码模块更新经签名的固件映像。
如权利要求11所述的计算机程序产品,其特征在于,
所述经签名的固件映像还包括访问控制列表;以及
所述访问控制列表授权由第一代码所有者对第一代码模块的更新以及由第二代码所有者对第二代码模块的更新。
如权利要求12所述的计算机程序产品,其特征在于,所述指令还导致处理系统执行以下操作:
接收访问控制令牌,其中所述访问控制令牌包括用于第三代码所有者的公钥和对第三代码所有者更新所述经签名的固件映像的第三代码模块的授权;
验证所述访问控制令牌由来自所述访问控制列表的经授权代码所有者签名;
验证经授权的代码所有者被授权更新第三代码模块;以及
更新访问控制列表以包括第三代码所有者的公钥以及对第三代码所有者更新第三代码模块的授权。
如权利要求13所述的计算机程序产品,其特征在于,所述指令还导致处理系统执行以下操作:
从第三代码所有者接收经更新的第三代码模块;
验证所述经更新的第三代码模块是由第三代码所有者签名;以及
响应于验证所述经更新的第三代码模块是由第三代码所有者签名而利用经更新的第三代码模块更新经签名的固件映像。
如权利要求11所述的计算机程序产品,其特征在于,所述指令还导致处理系统执行以下操作:
在更新经签名的固件映像之前,验证第一代码所有者被授权更新第一代码模块。
一种计算机实现的方法,包括:
创建由第一代码所有者签名的固件映像,经签名的固件映像包括第一代码模块和第二代码模块;
对第一代码模块签名;
创建访问控制令牌以向第二代码所有者授予更新第二代码模块的权力;
一旦接收包括用于第二代码模块的更新代码的经更新的第二代码模块,验证所述经更新的第二代码模块是由第二代码所有者签名;以及
响应于验证所述经更新的第二代码模块是由第二代码所有者签名而利用经更新的第二代码模块更新经签名的固件映像。

说明书

说明书固件映像的多所有者部署
版权声明
本文中包含受到版权保护的材料。版权所有者对于任何人对其专利公开内容(如专利和商标局专利文件或记录所呈现)的传真复制没有任何异议,但保留其他一切权利。
技术领域
本公开一般涉及计算机系统中BIOS及其它固件代码的部署。
背景技术
最初为IBM PC可兼容计算机开发的基本输入/输出系统(BIOS)(也称为系统BIOS)是限定固件接口的事实标准。BIOS是引导固件,被设计成通电时由PC运行的第一代码。BIOS的最初功能是标识、测试和初始化诸如视频显卡、硬盘和软盘及其它固件之类的系统设备。该初始化将机器预备到已知状态,使得诸如存储在兼容介质上的操作系统之类的软件可被加载、执行并给予PC控制。该进程被称为引导或自举,它是引导过程的简称。
BIOS程序提供小的基本输入/输出功能、文本显示功能等的库,这些基本输入/输出功能可被调用以操作并控制诸如键盘之类的外围设备。当系统通电时,BIOS检查系统配置设置并将充当硬件组件和操作系统之间的翻译器的程序加载到存储器。例如,当用户按下键盘上的键时,该信号被发送到键盘中断处理程序,该键盘中断处理程序告知处理器它是什么并将其传递到操作系统。
BIOS是当处理器运行在16位处理器模式且可寻址的存储器被限制在一兆字节且BIOS代码反映IBM PC AT硬件依赖性时为IBM PC开发的。为32位处理器开发的操作系统开始包括用于处理I/O的设备驱动器,而不是依赖调用由BIOS提供的16位运行时间接口。这些设备驱动器通常由平台固件提供,且在加载操作系统之前的BIOS初始化期间被加载到存储器。由于大量的可与操作系统接口的外围设备,这种平台固件通常由系统制造者之外的实体提供。当涉及很多方时,固件映像的分发变得复杂。
随着当今计算环境中恶意软件的激增,验证固件的重要性也在增加。数字签名或数字签名方案是用于证明数字消息或文档的真实性的数学方案。有效的数字签名给予接收者相信该消息是由已知发送者创建且在传输中未被改变的原因。数字签名通常用于软件分发,且期望将数字签名用于固件映像分发。
附图简述
图1是现有技术的经签名的固件映像的框图。
图2A是根据本发明的一个实施例由根固件代码所有者签名的固件映像的框图。
图2B是图2A的固件映像的框图,示出根据本发明的一个实施例的用于根固件代码所有者的访问控制列表。
图2C是根据本发明的一个实施例由根固件代码所有者和OEM固件代码所有者两者签名的固件映像的框图。
图2D是图2C的固件映像的框图,示出根据本发明的一个实施例的用于OEM固件代码所有者的访问控制列表。
图2E是根据本发明的一个实施例由根固件代码所有者、OEM固件代码所有者以及渠道分发器固件代码所有者签名的固件映像的框图。
图2F是图2E的固件映像的框图,示出根据本发明的一个实施例的用于渠道分发器固件代码所有者的访问控制列表。
图3是示出用于签名并授予更新图2A至2F的经签名的固件映像的权力的过程的流程图。
图4是根据本发明的一个实施例更新图2A至2F及图3的经签名的固件映像的访问控制列表的方法的流程图。
图5是根据本发明的一个实施例更新图2A至2F及图3的经签名的固件映像的方法的流程图。
图6是根据本发明的一个实施例的配置成使固件映像能够被多个占用者(tenant)签名的系统的框图。
详细描述
本发明的实施例可提供用于部署经签名的根固件映像的方法、设备、系统和计算机程序产品,该经签名的根固件映像包括由系统分发渠道中的不同实体签名的代码模块。
在一个实施例中,方法包括获取经签名的固件映像,该经签名的固件映像包括由第一代码所有者签名的第一代码模块和由第二代码所有者签名的第二代码模块。该方法还包括获取经更新的第一代码模块,其包括用于该第一代码模块的经更新的代码;验证经更新的第一代码模块是由第一代码所有者签名;以及响应于验证经更新的第一代码模块是由第一代码所有者签名而利用经更新的第一代码模块更新经签名的固件映像。经签名的固件映像还可包括访问控制列表,该访问控制列表授权由第一代码所有者对第一代码模块的更新以及由第二代码所有者对第二代码模块的更新。
该方法还可包括获取访问控制令牌,其中该访问控制令牌包括用于第三代码所有者的公钥以及第三代码所有者更新经签名的固件映像的第三代码模块的授权;验证访问控制令牌是由来自访问控制列表的经授权的代码所有者签名的;验证经授权的代码所有者被授权更新第三代码模块;以及更新访问控制列表以包括用于第三代码的公钥和第三代码所有者更新第三代码模块的授权。该方法还可包括接收来自第三代码所有者的第三代码模块;验证经更新的第三代码模块是由第三代码所有者签名,以及响应于验证经更新的第三代码模块是由第三代码所有者签名而利用经更新的第三代码模块更新经签名的固件模块。
本发明改进传统的BIOS/平台固件单片映像更新过程并允许不同的所有者签名各固件代码模块。本发明使得能够对特定的BIOS/平台固件代码模块/驱动器或应用执行更新。随着平台固件变得越来越复杂并且提供诸如安全特征之类的重要功能,BIOS和平台固件中的缺陷现在可被立即改正并且由企业管理服务器提供,而不需要最初的设备制造提供新的单片映像用于系统闪存的整个BIOS‑平台固件区。
在本说明书中对本发明的“一个实施例”或“实施例”的引用意味着结合该实施例描述的特定特征、结构或特性包括在本发明的至少一个实施例中。因此,在贯穿本说明书的各个地方,短语“在一个实施例中”或“根据一个实施例”等的出现不一定都指代同一实施例。
为了解释的目的,阐述了特定配置和细节,以便提供对本发明的全面理解。然而,对于本领域的普通技术人员显然易见的是没有本文介绍的特定细节也可实施本发明的实施例。此外,可省略或简化公知的特征以免使本发明晦涩。可贯穿说明书给出各示例。它们仅仅是本发明的特定实施例的描述。本发明的范围不限于给出的示例。
随着恶意软件篡改的发展,期望诸如固件映像之类的系统软件提供者确认固件映像的给定版本是真实的且未受到篡改。根据诸如李维斯特‑萨莫尔‑阿德曼(Rivest Shamir Adleman(RSA))加密算法之类的加密方案(其提供公钥和私钥来加密并签名数据),通常提供这种认证作为固件映像文件的数字签名。本领域的技术人员将理解本文所述的发明不限于RSA加密算法下的数字签名,而是任何提供用于确认真实性的数字签名的方法都在本发明的范围内。
数字签名方案通常包括三种算法:(1)密钥生成算法,其从一组可能的私钥中随机统一地选择私钥。该算法输出私钥和相应的公钥。(2)签名算法,给出消息和私钥,该签名算法产生签名。(3)签名验证算法,给出消息、公钥和签名,该签名验证算法接受或拒绝消息的真实性声明。需要两个主要的属性。第一,由固定消息和固定私钥生成的签名应通过利用相应的公钥验证该消息的真实性。第二,不具有私钥的一方不可能计算生成有效签名。
图1是现有技术的经签名的固件映像的框图。通过单个实体的私钥120签名根固件映像110。仅私钥120的所有者可更新根固件映像110。例如,假设系统制造者已经使用系统制造者的私钥120签名根固件映像110。如果在根固件映像110被签名之后部署链中的其它实体(诸如OEM和渠道客户)需要对根固件映像110内包含的模块的更新,则这些实体必须将他们的定制固件映像代码模块提供给私钥120的所有者,以便被包含在根固件映像110的后继版本中。这一实现需要用于根据外部实体的进度维持定制固件映像模块和部署已更新的根固件映像110的基础结构。
由私钥120的所有者之外的实体提供的定制固件映像代码模块允许的安全漏洞危及整个根固件映像110的安全。这种安全漏洞仅可由私钥120的所有者改正。为此,目前大多数实现仅通过分发渠道的较低端处的实体签名。由系统制造者和/或OEM提供的根固件映像代码模块通常未被签名以避免上述问题。然而,在没有由很多固件映像代码模块的提供者的数字签名的情况下,系统的终端用户可认为固件映像较不可靠。
图2A是根据本发明的一个实施例由根固件代码所有者签名的固件映像的框图。在此示例中,诸如系统制造者(在本文中称为“根”)之类的根固件映像的最初所有者已经利用根私钥220在五个固件卷(FV1211、FV2213、FV3215、FV4217和FV5219)中签名每个固件映像代码模块。签名代码模块可涉及将数字签名附加到代码模块。在本文所示的示例中,代码模块的签名被示为与包含代码模块的固件卷相关联的签名。类似地,更新给定代码模块的权力被描述为更新包含代码模块的固件卷的权力。本领域的技术人员将理解一个以上的代码模块可包含于给定的固件卷中,且固件卷中的不同代码模块可具有不同的签名和/或更新权力,但是为了简单起见,代码模块和固件卷在本文中被描述为一对一关系。
表230A提供了包括用于根代码所有者“根”的公钥231和用于代码所有者“根”的访问控制列表(ACL)232的安全信息。ACL 232指示由公钥231所拥有的固件映像代码模块(即,固件卷)。在图2B中提供关于访问控制列表232的进一步细节。
图2B是图2A的固件映像的框图,示出根据本发明的一个实施例的用于根固件代码所有者“根”的访问控制列表。在所示的示例中,ACL 232包含指向五个固件卷FV1211、FV2213、FV3215、FV4217和FV5219的每一个中的代码模块的指针232A至232E。参考以下的图3进一步详细地示出并解释这些指针。
图2C是根据本发明的一个实施例由根固件代码所有者和OEM固件代码所有者(在本文中称为“OEM”)两者签名的固件映像的框图。在该示例中,固件映像的代码模块的第二所有者(诸如图2A中持有公钥220的系统制造者的OEM客户)已经提供定制的根固件模块。例如,OEM固件代码所有者可提供计算机系统作为刀片服务器产品,且由代码所有者“OEM”提供的固件映像代码模块可将固件配置成工作在刀片服务器配置下。
在图2C,第二所有者“OEM”已经利用OEM私钥240签名固件映像(现在称为OEM固件映像210B)内所选的固件卷。在该示例中,已经通过OEM私钥240签名固件卷FV3 215和FV5 219。表230B提供包括用于“OEM”代码所有者的公钥241和指示由公钥241所拥有的固件映像代码模块(即,固件卷)的访问控制列表(ACL)242的新安全信息。在图2D中提供关于ACL 242的进一步细节。
图2D是图2C的固件映像的框图,示出根据本发明的一个实施例的用于“OEM”固件代码所有者的访问控制列表。在所示示例中,ACL 242包含指向两个固件卷FV3215和FV5219中的每一个的相应指针242C和242E。该新的安全信息是表230B的一部分,该表230B还包括参考图2A和2B所述的固件代码所有者“根”的公钥231和ACL232。然而,根固件代码所有者“根”授权固件代码所有者“OEM”更新FV3215和FV5219,且ACL232的指针232C和232E被ACL242的指针242C和242E覆盖(override)。以下参考图3至5进一步描述授予更新固件代码模块的权力的过程。
图2E是根据本发明的一个实施例由根固件代码所有者“根”、OEM固件代码所有者“OEM”以及渠道分发器固件代码所有者“Chnl”签名的固件映像的框图。在该示例中,固件映像的代码模块的第三所有者(诸如图2B中持有私钥240的OEM的渠道客户)已经提供定制的根固件模块。第三所有者“Chnl”已经利用渠道(Chnl)私钥250签名固件映像(现在称为渠道客户固件映像210C)内的一个固件卷。在该示例中,已经通过Chnl私钥250签名固件卷FV5219。表230C提供包括用于渠道客户所有者“Chnl”的公钥251和指示由公钥251所拥有的固件映像代码模块(即,固件卷)的访问控制列表(ACL)252的新安全信息。
图2F是图2E的固件映像的框图,示出根据本发明的一个实施例的用于渠道分发器固件代码所有者“Chnl”的访问控制列表。在所示示例中,ACL 252包含指向固件卷FV5 219的指针252E。该新的安全信息是表230C的一部分,该表230C还包括参考图2A和2B所述的根固件代码所有者“根”的公钥231和ACL232以及图2C和2D所述的固件代码所有者“OEM”的公钥241和ACL242。指针252E覆盖固件代码所有者“根”的ACL232的指针232E和固件代码所有者“OEM”的ACL 242的242E。
图3是示出用于签名并授予更新图2A至2F的经签名的固件映像的权力的过程的流程图。最初,如参考图2A的根固件映像210A所述,已经由根固件代码所有者“根”签名根固件映像310A。表330A指示具有公钥331的实体(其对应于具有私钥320的“根”所有者)具有包含指针332A至332E的访问控制列表332,这些指针允许公钥331的所有者更新包含在每个固件卷FV1 311、FV2313、FV3315、FV4317和FV5319中的代码模块。
在动作3.1,私钥320的所有者“根”创建经签名的令牌360,以便授权对根固件映像310A的后继更新。通过签名令牌360,私钥320的所有者,即“根”固件代码所有者将“根”公钥321与令牌360相关联。创建令牌360以包括被授予权力的信息,诸如被授权来更新根固件映像310A的实体的公钥362和指示可通过相应的公钥362来更新的根固件映像310A内的固件模块的访问控制列表364。在该示例中,固件代码所有者“OEM”的公钥362已经被包含在令牌360中,且访问控制列表364允许OEM公钥362的所有者更新固件卷FV3 315和FV5 319。
在动作3.2,在更新根固件映像310A之前,验证试图通过令牌360授予的权力。根固件映像310A查阅表330A以确保用于令牌360的公钥的所有者(即,令牌公钥321的所有者“根”)被授权更新令牌360内包含的固件卷。在该示例中,表330A被查阅以确保用于令牌360的公钥321的所有者(“根”)出现在表330A中,且用于令牌360的公钥321的所有者(“根”)具有更新固件卷FV3 315和FV5 319的权力。
在动作3.3,在证实用于令牌360的公钥321的所有者“根”具有更新固件卷FV3 315和FV5 319的权力之后,FV3 315和FV5 319中的代码被更新以形成OEM固件映像310B。OEM固件映像310B内的表330B也被更新以包括用于“OEM”固件代码所有者的公钥作为公钥333以及相应的访问控制列表(ACL)334。作为对表330B进行更新的结果,访问控制列表现在包括用于“根”固件代码所有者的三个指针,指向FV1 311的指针332A、指向FV2 313的指针332B和指向FV4 317的指针332D,以及用于“OEM”固件代码所有者的两个指针,指向FV3 315的指针334A和指向FV5 319的指针334E。
在动作3.4,“OEM”固件代码所有者(私钥340的所有者)创建经签名的令牌370以便授权对OEM固件映像310B的后继更新。通过签名令牌370,私钥340的所有者,即“OEM”固件代码所有者将“OEM”公钥341与令牌370相关联。创建令牌370以包括被授予权力的信息,诸如被授权来更新OEM固件映像310B的实体的公钥372和指示可通过相应的公钥372来更新的OEM固件映像310B内的固件模块的访问控制列表374。在该示例中,固件代码所有者“Chnl”的公钥372已经被包含在令牌370中,且访问控制列表374允许Chnl公钥372的所有者更新固件卷FV5 319。
在动作3.5,在更新OEM固件映像310B之前,验证试图通过令牌370授予的权力。OEM固件映像310B查阅表330B以确保用于令牌370的公钥341的所有者被授权更新令牌370中包含的固件卷。在该示例中,表330B被查阅以确保用于令牌370的公钥341的所有者(“OEM”)出现在表330B中,且用于令牌370的公钥341的所有者(“OEM”)具有更新固件卷FV5 319的权力。
在动作3.6,在证实用于令牌360的公钥的所有者“OEM”具有更新固件卷FV5 319的权力之后,FV5 319中的代码被更新以形成渠道客户固件映像310C。渠道客户固件映像310C内的表330C也被更新以包括用于“Chnl”固件代码所有者的公钥作为公钥335以及相应的访问控制列表(ACL)334。作为对表330C进行更新的结果,访问控制列表现在包括用于“根”固件代码所有者的三个指针,即指向FV1 311的指针332A、指向FV2 313的指针332B和指向FV4 317的指针332D;用于“OEM”固件代码所有者的一个指针,即指向FV3 315的指针334C;以及用于“Chnl”固件代码所有者的一个指针,即指向FV5 319的指针336E。
图4是根据本发明的一个实施例更新图2A至2F及图3的经签名的固件映像的访问控制列表的方法的流程图。通过诸如图3的经签名的根固件映像310A之类的现有固件映像的所有者执行图4描述的步骤,以向另一个实体授予更新经签名的固件映像的权力。授予更新固件映像的权力的实体在本文中被称为“授予实体”。在先前图2A至2F的示例中,图4中描述的步骤可通过“根”固件代码所有者执行以在动作3.2和3.3中向“OEM”固件代码所有者授予权力。类似地,图4的步骤可由“OEM”固件代码所有者执行以在动作3.5和3.6向“Chnl”固件代码所有者授予权力。图4的步骤将用于更新现有固件映像的访问控制列表,诸如根固件映像310A的访问控制列表330A或OEM固件映像310B的访问控制列表330B。
在“获取访问控制(AC)正向令牌”步骤410中,从授予实体获取诸如图3的令牌360或令牌370之类的访问控制令牌。如之前参考图2A至2F和图3所述,诸如图3的令牌360或令牌370之类的访问控制令牌可由分发渠道中的一个实体创建以授权分发渠道中的后续实体修改固件映像的给定版本。利用授予实体的私钥对访问控制令牌进行签名,且授予实体的公钥因此与访问控制令牌相关联。一旦从分发渠道中的授予实体获取访问控制令牌,控制前进到“标识授予实体并且使授予实体的公钥的签名与ACL匹配”的步骤420。
在“标识授予实体并且使授予实体的公钥的签名与ACL匹配”的步骤420,授予实体被标识为已经对访问控制令牌进行签名的实体。在图3的示例中,在执行动作3.2时,授予实体是“根”固件代码所有者。对照将针对其授予更新权力的固件映像的访问控制列表中出现的公钥来匹配与访问控制令牌相关联的公钥。如果与访问控制令牌相关联的公钥出现在固件映像的访问控制列表中,则控制前进到“验证AC正向令牌的签名”步骤430。
在“验证AC正向令牌的签名”步骤430处,授予实体的公钥用于验证访问控制令牌的签名。为了执行该签名验证,可从经签名的访问控制令牌计算散列值。公钥也可用于解密数字签名和经签名的数据,然后可从经解密的数据计算另一个散列值。如果两个计算出的散列值匹配,则数字签名可被视为有效。在已经验证访问控制令牌的签名之后,控制前进到“标识需要改变ACL的代码模块”步骤440。
在“标识需要改变ACL的代码模块”步骤440处,标识将针对其授予权力的固件卷。在动作3.2的示例中,在访问控制令牌360中标识的固件卷是固件卷FV3 315和FV5 319。一旦标识固件卷,控制前进到“验证授予实体被授权改变AC”步骤450。
在“验证授予实体被授权改变AC”步骤450处,作出授予实体是否被授权改变现有固件映像的访问控制列表的确定。如上所述,授予实体,即“根”固件代码所有者已经被指定为固件卷FV1 311至FV5 319的访问控制列表的所有者。因此,授予实体被授权改变这些固件卷的访问控制列表。控制然后前进到“更新ACL:输入新实体的公钥并更新代码模块的ACL”步骤460。
在“更新ACL:输入新实体的公钥并更新代码模块的ACL”步骤460处,被授予权力的实体(在本示例中为“OEM”固件代码所有者)的公钥被加至访问控制列表,并且固件卷FV3 315和FV5 319的访问控制列表被更新。更新固件卷FV3 315和FV5 319的权力已经被授予“OEM”固件代码所有者。
图5是根据本发明的一个实施例更新图2A至2F及图3的经签名的固件映像的方法的流程图。在“处理经签名的模块”步骤510,诸如根固件映像310A之类的现有固件映像接收对处理经签名的模块的请求。处理经签名的模块可涉及解开诸如经签名的模块中包含的若干固件卷之类的信息和/或解开用于签名该经签名的模块的密钥。可根据图5的步骤处理每个经签名的代码模块。控制前进到“使公钥的签名与ACl匹配以及标识更新实体”步骤520。
在“使公钥的签名与ACl匹配以及标识更新实体”步骤520处,将与用于签名该经签名的模块私钥相对应的公钥同现有固件映像的访问控制列表进行比较,并且标识更新实体。如果经签名的模块的公钥出现在现有固件映像的访问控制列表中,则控制前进到“验证模块的签名”步骤530。
在“验证模块的签名”步骤530,验证模块的签名。为了执行该签名验证,可从经签名的模块计算散列值。公钥也可用于解密数字签名和经签名的数据,然后可从经解密的数据计算另一个散列值。如果两个计算出的散列值匹配,则数字签名可被视为有效。在已经验证模块的签名之后,控制前进到“标识用于更新的代码模块”步骤540。
在“标识用于更新的代码模块”步骤540,标识现有固件映像中要更新的固件卷中的代码模块。一旦标识固件卷中的代码模块,则控制前进到“验证更新实体被授权更新所请求的代码模块”步骤550。
在“验证更新实体被授权更新所请求的代码模块”步骤550,确定更新实体是否被授权更新所请求的固件卷。如果更新实体被授权,则控制前进到“更新代码模块”步骤560。在“更新代码模块”步骤560,更新现有固件映像中的代码模块。
图6是根据本发明的一个实施例的配置成使固件映像能够被多个代码所有者签名的系统的框图。对应于主机计算机系统的平台600包括经由台式机管理接口(DMI)611连接到芯片组620的处理器。处理器610向平台600提供处理能力,且可以是单核或多核处理器,且一个以上的处理器可包含在平台600中。处理器610可经由一条或多条系统总线、通信路径或介质(未示出)连接到平台600的其它组件。
芯片组620包括可管理性引擎(ME)630,其可被实现为独立于主机处理器610操作的嵌入式微处理器以管理平台600的配置和操作。在一个实施例中,处理器610在主机操作系统(未示出)的指导下操作,而可管理性引擎(ME)630提供不能被主机操作系统访问的安全且隔离的环境。在一个实施例中,可管理性引擎(ME)630认证用户、控制对外围设备的访问、管理用于保护存储在平台600的存储设备上的数据的加密密钥,并经由网络控制器660提供至企业服务670的接口。利用企业服务670,可管理性引擎(ME)630保持与用于诸如平台600之类的平台的配置和管理的企业范围策略一致,包括根据本发明的一个实施例提供多所有者签名的固件更新管理器。多所有者签名的固件更新管理器可被实现为由可管理性引擎(ME)630执行的固件。
ME630和企业服务670之间的通信经由带外通信信道671发生。在一个实施例中,带外通信信道671是主机系统上的可管理性引擎(ME)630和管理主机系统的企业服务670之间的安全通信信道。实现平台600和企业服务670之间的安全通信的加密/解密密钥可在芯片组620和可管理性引擎(ME)630的制造期间被存储在图6的闪存存储器690上。
在图6所示的实施例中,可管理性引擎(ME)630经由可管理性引擎控制器接口(MECI)631耦合到微控制器640。在一个实施例中,微控制器640是执行存储命令解码和其它加速操作的通用控制器。在所示的实施例中,可管理性引擎(ME)630控制微控制器640的行为,其进而控制存储控制器650的行为。微控制器640包括存储控制器650的驱动器以及与任何盘加密功能有关的逻辑。存储控制器650是诸如存储设备652之类的存储设备的控制器,且使微控制器640和ME630能访问存储在存储设备652上的数据。
平台600还包括存储设备,诸如动态随机存取存储器(DRAM)612、芯片组620内的静态随机存取存储器(SRAM)622以及可经由存储控制器650访问的存储设备652。这些存储设备可包括随机存取存储器(RAM)以及只读存储器(ROM)。为了本公开的目的,术语“ROM”可一般地用于指代非易失性存储器设备,诸如可擦除可编程ROM(EPROM)、电可擦除可编程ROM(EEPROM)、闪存ROM、闪存等。存储设备652可包括大容量存储设备,诸如集成驱动电子(IDE)硬盘驱动器和/或其它设备或介质,诸如软盘、光存储、带、闪存、存储器棒、数字视频盘、生物学存储等。
可经由闪存接口691由芯片组620访问闪存690。可加密存储在存储设备652上和/或存储器设备DRAM612、SRAM622以及闪存690中的数据。
闪存690包含用于初始化平台600的固件。该初始化固件包括基本输入/输出系统(BIOS)固件692以标识和初始化系统组件硬件(诸如视频显示器卡和硬盘)以及包括可管理性引擎(ME)630的一些其它硬件设备。BIOS固件692使平台600的系统组件硬件准备以已知的低能力状态操作,所以存储在各种介质上的其它软件程序(包括操作系统)可被加载、执行并给予对平台600的控制。BIOS固件692包括BIOS/ME通信模块693,其实现在引导过程中可管理性引擎(ME)630的最初配置。在一个实施例中,可管理性引擎(ME)630利用BIOS/ME通信模块693登记,以在为平台600加载操作系统之前接收通知。该通知使得可管理性引擎(ME)630能在加载操作系统的准备中执行某些指令。
闪存690还包括用于配置网络控制器660的网络控制器固件695以及用于配置芯片组620的芯片组固件696。闪存690还包含数据区698。在一个实施例中,数据区698被加密且可仅被可管理性引擎(ME)630读取。由ME630使用以提供BIOS/引导固件多所有者管理服务的信息可被存储在闪存690的数据区698中或被存储在存储设备652上。
处理器610还可通信耦合到附加组件,诸如视频控制器、小型计算机系统接口(SCSI)控制器、网络控制器、通用串行总线(USB)控制器、诸如键盘和鼠标等输入设备。平台600还可包括一个或多个桥或中枢,诸如存储器控制器中枢、输入/输出(I/O)控制器中枢、PCI根桥等,以便通信耦合各种系统组件。正如本文中所使用的,术语“总线”可用于指代共享通信路径以及点对点路径。
诸如网络控制器660之类的一些组件可被实现为具有用于与总线通信的接口的适配器卡(例如,PCI连接器)。在一个实施例中,利用诸如可编程或不可编程逻辑设备或阵列、专用集成电路(ASIC)、嵌入式计算机、智能卡等组件,可将一个或多个设备实现为嵌入式控制器。
正如本文所使用的,术语“处理系统”和“数据处理系统”旨在广泛地包含单个机器或在一起操作的通信耦合的机器或设备的系统。示例处理系统包括但不限于分布式计算系统、超级计算机、高性能计算系统、计算群、大型计算机、迷你计算机、客户‑服务器系统、个人计算机、工作站、服务器、便携式计算机、膝上型计算机、平板计算机、电话、个人数字助理(PDA)、手持设备、诸如听觉和/或视频设备之类的娱乐设备以及用于处理或发送信息的其它设备。
平台600可至少部分地由来自诸如键盘、鼠标等常规输入设备的输入来控制和/或由接收自另一个机器、生物测定反馈或其它输入源或信号的命令来控制。平台600可利用至一个或多个远程数据处理系统(未示出)的一个或多个连接,诸如通过网络接口控制器(NIC)660、调制解调器或其它通信端口或耦合。
平台600可通过诸如局域网(LAN)、广域网(WAN)、以太网、因特网等物理和/或逻辑网络互连到其它处理系统(未示出)。涉及网络的通信可利用各种有线和/或无线短程或长程载波和协议,包括射频(RF)、卫星、微波、电气与电子工程师协会(IEEE)802.11、蓝牙、光、红外、电缆、激光等。
本文中公开的机构的实施例可按照硬件、软件、固件或此类实现方法的组合来实现。本发明的实施例可被实现为在包括至少一个处理器、数据储存器系统(包括易失性和非易失性存储器和/或储存元件)、至少一个输入设备以及至少一个输出设备的可编程系统上执行的计算机程序。
可将程序代码施加到输入数据以执行本文所述的功能并生成输出信息。本发明的实施例还可包括机器可访问介质,该机器可访问介质包含用于执行本发明的操作的指令,或包含限定本文中描述的结构、电路、装置、处理器和/或系统特征的诸如HDL之类的设计数据。此类实施例也可被称为程序产品。
此类机器可访问存储介质可包括但不限于通过机器或设备制造或形成的粒子的有形排列,包括存储介质,诸如:硬盘;包括软盘、光盘、压缩盘只读存储器(CD‑ROM)、可重写压缩盘(CD‑RW)以及磁光盘的任何其它类型的盘;诸如只读存储器(ROM)之类的半导体器件;诸如动态随机存取存储器(DRAM)、静态随机存取存储器(SRAM)之类的随机存取存储器(RAM);可擦除可编程只读存储器(EPROM);闪存可编程存储器(FLASH);电可擦除可编程只读存储器(EEPROM);磁卡或光卡;或适于存储电子指令的任何其它类型的介质。
可按照已知方式将输出信息应用于一个或多个输出设备。为了此应用的目的,处理系统包括具有诸如例如数字信号处理器(DSP)、微控制器、专用集成电路(ASIC)或微处理器之类的处理器的任意系统。
程序可按照高级面向过程或面向对象的编程语言来实现,以与处理系统通信。程序在需要时还可按照汇编或机器语言来实现。实际上,本文中描述的机制在范围上不限于任何特定编程语言。在任何情况下,该语言可以是编译或解释语言。
本文提供的是用于部署多用户签名固件的方法和系统的实施例。尽管已经示出并描述了本发明的具体实施例,但本领域的技术人员显然可作出很多改变、变化和修改而不背离所附权利要求的范围。因此,本领域的技术人员将意识到可作出变化和修改而不背离本发明在其较宽方面的范围。所附权利要求将在其范围内包含落在本发明的真实范围和精神内的所有这些改变、变化和修改。

固件映像的多所有者部署.pdf_第1页
第1页 / 共18页
固件映像的多所有者部署.pdf_第2页
第2页 / 共18页
固件映像的多所有者部署.pdf_第3页
第3页 / 共18页
点击查看更多>>
资源描述

《固件映像的多所有者部署.pdf》由会员分享,可在线阅读,更多相关《固件映像的多所有者部署.pdf(18页珍藏版)》请在专利查询网上搜索。

1、(10)申请公布号 CN 102934073 A (43)申请公布日 2013.02.13 CN 102934073 A *CN102934073A* (21)申请号 201180027397.8 (22)申请日 2011.06.10 12/814,246 2010.06.11 US G06F 9/22(2006.01) G06F 9/06(2006.01) (71)申请人 英特尔公司 地址 美国加利福尼亚州 (72)发明人 P萨克斯库马 RC斯旺森 VJ齐默 MA罗斯曼 M布鲁苏 (74)专利代理机构 上海专利商标事务所有限公 司 31100 代理人 张东梅 (54) 发明名称 固件映像的多。

2、所有者部署 (57) 摘要 一种用于固件映像的多所有者部署的方法、 设备、 系统和计算机程序产品。 该方法包括获取经 签名的固件映像, 该经签名的固件映像包括由第 一代码所有者签名的第一代码模块和由第二代码 所有者签名的第二代码模块。该方法还包括获取 经更新的第一代码模块, 其包括用于该第一代码 模块的经更新的代码 ; 验证经更新的第一代码模 块是由第一代码所有者签名 ; 以及响应于验证经 更新的第一代码模块是由第一代码所有者签名而 利用经更新的第一代码模块更新经签名的固件映 像。 经签名的固件映像还可包括访问控制列表, 该 访问控制列表授权由第一代码所有者对第一代码 模块的更新以及由第二代码。

3、所有者对第二代码模 块的更新。 (30)优先权数据 (85)PCT申请进入国家阶段日 2012.12.03 (86)PCT申请的申请数据 PCT/US2011/040020 2011.06.10 (87)PCT申请的公布数据 WO2011/156738 EN 2011.12.15 (51)Int.Cl. 权利要求书 3 页 说明书 9 页 附图 5 页 (19)中华人民共和国国家知识产权局 (12)发明专利申请 权利要求书 3 页 说明书 9 页 附图 5 页 1/3 页 2 1. 一种计算机实现的方法, 包括 : 获取经签名的固件映像, 所述经签名的固件映像包括由第一代码所有者签名的第一代 。

4、码模块和由第二代码所有者签名的第二代码模块 ; 获取经更新的第一代码模块, 所述经更新的第一代码模块包括用于所述第一代码模块 的经更新的代码 ; 验证所述经更新的第一代码模块是由第一代码所有者签名 ; 以及 响应于验证所述经更新的第一代码模块是由第一代码所有者签名而利用经更新的第 一代码模块更新经签名的固件映像。 2. 如权利要求 1 所述的方法, 其特征在于 : 所述经签名的固件映像还包括访问控制列表 ; 以及 所述访问控制列表授权由第一代码所有者对第一代码模块的更新以及由第二代码所 有者对第二代码模块的更新。 3. 如权利要求 2 所述的方法, 其特征在于, 还包括 : 获取访问控制令牌,。

5、 其中所述访问控制令牌包括用于第三代码所有者的公钥和对第三 代码所有者更新所述经签名的固件映像的第三代码模块的授权 ; 验证所述访问控制令牌由来自所述访问控制列表的经授权代码所有者签名 ; 验证经授权的代码所有者被授权更新第三代码模块 ; 以及 更新访问控制列表以包括第三代码所有者的公钥以及对第三代码所有者更新第三代 码模块的授权。 4. 如权利要求 3 所述的方法, 其特征在于, 还包括 : 从第三代码所有者接收经更新的第三代码模块 ; 验证所述经更新的第三代码模块是由第三代码所有者签名 ; 以及 响应于验证所述经更新的第三代码模块是由第三代码所有者签名而利用经更新的第 三代码模块更新经签名。

6、的固件映像。 5. 如权利要求 1 所述的方法, 其特征在于, 还包括 : 在更新经签名的固件映像之前, 验证第一代码所有者被授权更新第一代码模块。 6. 一种系统, 包括 : 至少一个处理器 ; 以及 耦合到所述至少一个处理器的存储器, 所述存储器包括执行以下的指令 : 获取经签名的固件映像, 所述经签名的固件映像包括由第一代码所有者签名的第一代 码模块和由第二代码所有者签名的第二代码模块 ; 获取经更新的第一代码模块, 所述经更新的第一代码模块包括用于所述第一代码模块 的经更新的代码 ; 验证所述经更新的第一代码模块是由第一代码所有者签名 ; 以及 响应于验证所述经更新的第一代码模块是由第。

7、一代码所有者签名而利用经更新的第 一代码模块更新经签名的固件映像。 7. 如权利要求 6 所述的系统, 其特征在于, 所述经签名的固件映像还包括访问控制列表 ; 以及 所述访问控制列表授权由第一代码所有者对第一代码模块的更新以及由第二代码所 权 利 要 求 书 CN 102934073 A 2 2/3 页 3 有者对第二代码模块的更新。 8. 如权利要求 7 所述的系统, 其特征在于, 所述指令还执行以下 : 接收访问控制令牌, 其中所述访问控制令牌包括用于第三代码所有者的公钥和对第三 代码所有者更新所述经签名的固件映像的第三代码模块的授权 ; 验证所述访问控制令牌由来自所述访问控制列表的经授。

8、权代码所有者签名 ; 验证经授权的代码所有者被授权更新第三代码模块 ; 以及 更新访问控制列表以包括第三代码所有者的公钥以及对第三代码所有者更新第三代 码模块的授权。 9. 如权利要求 8 所述的系统, 其特征在于, 所述指令还执行以下 : 从第三代码所有者接收经更新的第三代码模块 ; 验证所述经更新的第三代码模块是由第三代码所有者签名 ; 以及 响应于验证所述经更新的第三代码模块是由第三代码所有者签名而利用经更新的第 三代码模块更新经签名的固件映像。 10. 如权利要求 6 所述的系统, 其特征在于, 所述指令还执行以下 : 在更新经签名的固件映像之前, 验证第一代码所有者被授权更新第一代码。

9、模块。 11. 一种计算机程序产品, 包括 : 计算机可读存储介质 ; 以及 所述计算机可读存储介质中的指令, 其中所述指令在处理系统中执行时导致处理系统 执行以下操作 : 获取经签名的固件映像, 所述经签名的固件映像包括由第一代码所有者签名的第一代 码模块和由第二代码所有者签名的第二代码模块 ; 获取经更新的第一代码模块, 所述经更新的第一代码模块包括用于该第一代码模块的 经更新的代码 ; 验证所述经更新的第一代码模块是由第一代码所有者签名 ; 以及 响应于验证所述经更新的第一代码模块是由第一代码所有者签名而利用经更新的第 一代码模块更新经签名的固件映像。 12. 如权利要求 11 所述的计。

10、算机程序产品, 其特征在于, 所述经签名的固件映像还包括访问控制列表 ; 以及 所述访问控制列表授权由第一代码所有者对第一代码模块的更新以及由第二代码所 有者对第二代码模块的更新。 13. 如权利要求 12 所述的计算机程序产品, 其特征在于, 所述指令还导致处理系统执 行以下操作 : 接收访问控制令牌, 其中所述访问控制令牌包括用于第三代码所有者的公钥和对第三 代码所有者更新所述经签名的固件映像的第三代码模块的授权 ; 验证所述访问控制令牌由来自所述访问控制列表的经授权代码所有者签名 ; 验证经授权的代码所有者被授权更新第三代码模块 ; 以及 更新访问控制列表以包括第三代码所有者的公钥以及对。

11、第三代码所有者更新第三代 码模块的授权。 14. 如权利要求 13 所述的计算机程序产品, 其特征在于, 所述指令还导致处理系统执 权 利 要 求 书 CN 102934073 A 3 3/3 页 4 行以下操作 : 从第三代码所有者接收经更新的第三代码模块 ; 验证所述经更新的第三代码模块是由第三代码所有者签名 ; 以及 响应于验证所述经更新的第三代码模块是由第三代码所有者签名而利用经更新的第 三代码模块更新经签名的固件映像。 15. 如权利要求 11 所述的计算机程序产品, 其特征在于, 所述指令还导致处理系统执 行以下操作 : 在更新经签名的固件映像之前, 验证第一代码所有者被授权更新第。

12、一代码模块。 16. 一种计算机实现的方法, 包括 : 创建由第一代码所有者签名的固件映像, 经签名的固件映像包括第一代码模块和第二 代码模块 ; 对第一代码模块签名 ; 创建访问控制令牌以向第二代码所有者授予更新第二代码模块的权力 ; 一旦接收包括用于第二代码模块的更新代码的经更新的第二代码模块, 验证所述经更 新的第二代码模块是由第二代码所有者签名 ; 以及 响应于验证所述经更新的第二代码模块是由第二代码所有者签名而利用经更新的第 二代码模块更新经签名的固件映像。 权 利 要 求 书 CN 102934073 A 4 1/9 页 5 固件映像的多所有者部署 0001 版权声明 0002 本。

13、文中包含受到版权保护的材料。版权所有者对于任何人对其专利公开内容 (如 专利和商标局专利文件或记录所呈现) 的传真复制没有任何异议, 但保留其他一切权利。 技术领域 0003 本公开一般涉及计算机系统中 BIOS 及其它固件代码的部署。 背景技术 0004 最初为 IBM PC 可兼容计算机开发的基本输入 / 输出系统 (BIOS) (也称为系统 BIOS) 是限定固件接口的事实标准。BIOS 是引导固件, 被设计成通电时由 PC 运行的第一代 码。 BIOS的最初功能是标识、 测试和初始化诸如视频显卡、 硬盘和软盘及其它固件之类的系 统设备。该初始化将机器预备到已知状态, 使得诸如存储在兼容。

14、介质上的操作系统之类的 软件可被加载、 执行并给予 PC 控制。该进程被称为引导或自举, 它是引导过程的简称。 0005 BIOS程序提供小的基本输入/输出功能、 文本显示功能等的库, 这些基本输入/输 出功能可被调用以操作并控制诸如键盘之类的外围设备。当系统通电时, BIOS 检查系统配 置设置并将充当硬件组件和操作系统之间的翻译器的程序加载到存储器。例如, 当用户按 下键盘上的键时, 该信号被发送到键盘中断处理程序, 该键盘中断处理程序告知处理器它 是什么并将其传递到操作系统。 0006 BIOS 是当处理器运行在 16 位处理器模式且可寻址的存储器被限制在一兆字节且 BIOS 代码反映 。

15、IBM PC AT 硬件依赖性时为 IBM PC 开发的。为 32 位处理器开发的操作系 统开始包括用于处理 I/O 的设备驱动器, 而不是依赖调用由 BIOS 提供的 16 位运行时间接 口。这些设备驱动器通常由平台固件提供, 且在加载操作系统之前的 BIOS 初始化期间被加 载到存储器。由于大量的可与操作系统接口的外围设备, 这种平台固件通常由系统制造者 之外的实体提供。当涉及很多方时, 固件映像的分发变得复杂。 0007 随着当今计算环境中恶意软件的激增, 验证固件的重要性也在增加。数字签名或 数字签名方案是用于证明数字消息或文档的真实性的数学方案。 有效的数字签名给予接收 者相信该消息。

16、是由已知发送者创建且在传输中未被改变的原因。 数字签名通常用于软件分 发, 且期望将数字签名用于固件映像分发。 0008 附图简述 0009 图 1 是现有技术的经签名的固件映像的框图。 0010 图 2A 是根据本发明的一个实施例由根固件代码所有者签名的固件映像的框图。 0011 图 2B 是图 2A 的固件映像的框图, 示出根据本发明的一个实施例的用于根固件代 码所有者的访问控制列表。 0012 图 2C 是根据本发明的一个实施例由根固件代码所有者和 OEM 固件代码所有者两 者签名的固件映像的框图。 0013 图 2D 是图 2C 的固件映像的框图, 示出根据本发明的一个实施例的用于 O。

17、EM 固件 说 明 书 CN 102934073 A 5 2/9 页 6 代码所有者的访问控制列表。 0014 图 2E 是根据本发明的一个实施例由根固件代码所有者、 OEM 固件代码所有者以及 渠道分发器固件代码所有者签名的固件映像的框图。 0015 图 2F 是图 2E 的固件映像的框图, 示出根据本发明的一个实施例的用于渠道分发 器固件代码所有者的访问控制列表。 0016 图 3 是示出用于签名并授予更新图 2A 至 2F 的经签名的固件映像的权力的过程的 流程图。 0017 图 4 是根据本发明的一个实施例更新图 2A 至 2F 及图 3 的经签名的固件映像的访 问控制列表的方法的流程。

18、图。 0018 图 5 是根据本发明的一个实施例更新图 2A 至 2F 及图 3 的经签名的固件映像的方 法的流程图。 0019 图 6 是根据本发明的一个实施例的配置成使固件映像能够被多个占用者 (tenant) 签名的系统的框图。 0020 详细描述 0021 本发明的实施例可提供用于部署经签名的根固件映像的方法、 设备、 系统和计算 机程序产品, 该经签名的根固件映像包括由系统分发渠道中的不同实体签名的代码模块。 0022 在一个实施例中, 方法包括获取经签名的固件映像, 该经签名的固件映像包括由 第一代码所有者签名的第一代码模块和由第二代码所有者签名的第二代码模块。 该方法还 包括获取。

19、经更新的第一代码模块, 其包括用于该第一代码模块的经更新的代码 ; 验证经更 新的第一代码模块是由第一代码所有者签名 ; 以及响应于验证经更新的第一代码模块是由 第一代码所有者签名而利用经更新的第一代码模块更新经签名的固件映像。 经签名的固件 映像还可包括访问控制列表, 该访问控制列表授权由第一代码所有者对第一代码模块的更 新以及由第二代码所有者对第二代码模块的更新。 0023 该方法还可包括获取访问控制令牌, 其中该访问控制令牌包括用于第三代码所有 者的公钥以及第三代码所有者更新经签名的固件映像的第三代码模块的授权 ; 验证访问控 制令牌是由来自访问控制列表的经授权的代码所有者签名的 ; 验。

20、证经授权的代码所有者被 授权更新第三代码模块 ; 以及更新访问控制列表以包括用于第三代码的公钥和第三代码所 有者更新第三代码模块的授权。该方法还可包括接收来自第三代码所有者的第三代码模 块 ; 验证经更新的第三代码模块是由第三代码所有者签名, 以及响应于验证经更新的第三 代码模块是由第三代码所有者签名而利用经更新的第三代码模块更新经签名的固件模块。 0024 本发明改进传统的 BIOS/ 平台固件单片映像更新过程并允许不同的所有者签名 各固件代码模块。本发明使得能够对特定的 BIOS/ 平台固件代码模块 / 驱动器或应用执行 更新。随着平台固件变得越来越复杂并且提供诸如安全特征之类的重要功能,。

21、 BIOS 和平台 固件中的缺陷现在可被立即改正并且由企业管理服务器提供, 而不需要最初的设备制造提 供新的单片映像用于系统闪存的整个 BIOS- 平台固件区。 0025 在本说明书中对本发明的 “一个实施例” 或 “实施例” 的引用意味着结合该实施例 描述的特定特征、 结构或特性包括在本发明的至少一个实施例中。 因此, 在贯穿本说明书的 各个地方, 短语 “在一个实施例中” 或 “根据一个实施例” 等的出现不一定都指代同一实施 例。 说 明 书 CN 102934073 A 6 3/9 页 7 0026 为了解释的目的, 阐述了特定配置和细节, 以便提供对本发明的全面理解。然而, 对于本领域。

22、的普通技术人员显然易见的是没有本文介绍的特定细节也可实施本发明的实 施例。此外, 可省略或简化公知的特征以免使本发明晦涩。可贯穿说明书给出各示例。它 们仅仅是本发明的特定实施例的描述。本发明的范围不限于给出的示例。 0027 随着恶意软件篡改的发展, 期望诸如固件映像之类的系统软件提供者确认固件 映像的给定版本是真实的且未受到篡改。根据诸如李维斯特 - 萨莫尔 - 阿德曼 (Rivest Shamir Adleman(RSA)) 加密算法之类的加密方案 (其提供公钥和私钥来加密并签名数据) , 通常提供这种认证作为固件映像文件的数字签名。 本领域的技术人员将理解本文所述的发 明不限于 RSA 。

23、加密算法下的数字签名, 而是任何提供用于确认真实性的数字签名的方法都 在本发明的范围内。 0028 数字签名方案通常包括三种算法 :(1) 密钥生成算法, 其从一组可能的私钥中随 机统一地选择私钥。该算法输出私钥和相应的公钥。 (2) 签名算法, 给出消息和私钥, 该签 名算法产生签名。 (3) 签名验证算法, 给出消息、 公钥和签名, 该签名验证算法接受或拒绝消 息的真实性声明。需要两个主要的属性。第一, 由固定消息和固定私钥生成的签名应通过 利用相应的公钥验证该消息的真实性。 第二, 不具有私钥的一方不可能计算生成有效签名。 0029 图 1 是现有技术的经签名的固件映像的框图。通过单个实。

24、体的私钥 120 签名根固 件映像 110。仅私钥 120 的所有者可更新根固件映像 110。例如, 假设系统制造者已经使用 系统制造者的私钥 120 签名根固件映像 110。如果在根固件映像 110 被签名之后部署链中 的其它实体 (诸如 OEM 和渠道客户) 需要对根固件映像 110 内包含的模块的更新, 则这些实 体必须将他们的定制固件映像代码模块提供给私钥 120 的所有者, 以便被包含在根固件映 像 110 的后继版本中。这一实现需要用于根据外部实体的进度维持定制固件映像模块和部 署已更新的根固件映像 110 的基础结构。 0030 由私钥 120 的所有者之外的实体提供的定制固件映。

25、像代码模块允许的安全漏洞 危及整个根固件映像 110 的安全。这种安全漏洞仅可由私钥 120 的所有者改正。为此, 目 前大多数实现仅通过分发渠道的较低端处的实体签名。由系统制造者和 / 或 OEM 提供的根 固件映像代码模块通常未被签名以避免上述问题。然而, 在没有由很多固件映像代码模块 的提供者的数字签名的情况下, 系统的终端用户可认为固件映像较不可靠。 0031 图 2A 是根据本发明的一个实施例由根固件代码所有者签名的固件映像的框图。 在此示例中, 诸如系统制造者 (在本文中称为 “根” ) 之类的根固件映像的最初所有者已经利 用根私钥 220 在五个固件卷 (FV1211、 FV22。

26、13、 FV3215、 FV4217 和 FV5219) 中签名每个固件 映像代码模块。签名代码模块可涉及将数字签名附加到代码模块。在本文所示的示例中, 代码模块的签名被示为与包含代码模块的固件卷相关联的签名。类似地, 更新给定代码模 块的权力被描述为更新包含代码模块的固件卷的权力。 本领域的技术人员将理解一个以上 的代码模块可包含于给定的固件卷中, 且固件卷中的不同代码模块可具有不同的签名和 / 或更新权力, 但是为了简单起见, 代码模块和固件卷在本文中被描述为一对一关系。 0032 表 230A 提供了包括用于根代码所有者 “根” 的公钥 231 和用于代码所有者 “根” 的 访问控制列表。

27、 (ACL) 232 的安全信息。ACL 232 指示由公钥 231 所拥有的固件映像代码模 块 (即, 固件卷) 。在图 2B 中提供关于访问控制列表 232 的进一步细节。 0033 图 2B 是图 2A 的固件映像的框图, 示出根据本发明的一个实施例的用于根固件代 说 明 书 CN 102934073 A 7 4/9 页 8 码所有者 “根” 的访问控制列表。在所示的示例中, ACL 232 包含指向五个固件卷 FV1211、 FV2213、 FV3215、 FV4217 和 FV5219 的每一个中的代码模块的指针 232A 至 232E。参考以下 的图 3 进一步详细地示出并解释这些。

28、指针。 0034 图2C是根据本发明的一个实施例由根固件代码所有者和OEM固件代码所有者 (在 本文中称为 “OEM” ) 两者签名的固件映像的框图。在该示例中, 固件映像的代码模块的第二 所有者 (诸如图 2A 中持有公钥 220 的系统制造者的 OEM 客户) 已经提供定制的根固件模块。 例如, OEM 固件代码所有者可提供计算机系统作为刀片服务器产品, 且由代码所有者 “OEM” 提供的固件映像代码模块可将固件配置成工作在刀片服务器配置下。 0035 在图 2C, 第二所有者 “OEM” 已经利用 OEM 私钥 240 签名固件映像 (现在称为 OEM 固 件映像 210B) 内所选的固。

29、件卷。在该示例中, 已经通过 OEM 私钥 240 签名固件卷 FV3 215 和 FV5 219。表 230B 提供包括用于 “OEM” 代码所有者的公钥 241 和指示由公钥 241 所拥有 的固件映像代码模块 (即, 固件卷) 的访问控制列表 (ACL) 242 的新安全信息。在图 2D 中提 供关于 ACL 242 的进一步细节。 0036 图 2D 是图 2C 的固件映像的框图, 示出根据本发明的一个实施例的用于 “OEM” 固 件代码所有者的访问控制列表。在所示示例中, ACL 242 包含指向两个固件卷 FV3215 和 FV5219 中的每一个的相应指针 242C 和 242E。

30、。该新的安全信息是表 230B 的一部分, 该表 230B 还包括参考图 2A 和 2B 所述的固件代码所有者 “根” 的公钥 231 和 ACL232。然而, 根 固件代码所有者 “根” 授权固件代码所有者 “OEM” 更新 FV3215 和 FV5219, 且 ACL232 的指针 232C 和 232E 被 ACL242 的指针 242C 和 242E 覆盖 (override) 。以下参考图 3 至 5 进一步 描述授予更新固件代码模块的权力的过程。 0037 图 2E 是根据本发明的一个实施例由根固件代码所有者 “根” 、 OEM 固件代码所有者 “OEM” 以及渠道分发器固件代码所。

31、有者 “Chnl” 签名的固件映像的框图。在该示例中, 固件 映像的代码模块的第三所有者 (诸如图 2B 中持有私钥 240 的 OEM 的渠道客户) 已经提供定 制的根固件模块。第三所有者 “Chnl” 已经利用渠道 (Chnl) 私钥 250 签名固件映像 (现在称 为渠道客户固件映像 210C) 内的一个固件卷。在该示例中, 已经通过 Chnl 私钥 250 签名固 件卷 FV5219。表 230C 提供包括用于渠道客户所有者 “Chnl” 的公钥 251 和指示由公钥 251 所拥有的固件映像代码模块 (即, 固件卷) 的访问控制列表 (ACL) 252 的新安全信息。 0038 图 。

32、2F 是图 2E 的固件映像的框图, 示出根据本发明的一个实施例的用于渠道分发 器固件代码所有者 “Chnl” 的访问控制列表。在所示示例中, ACL 252 包含指向固件卷 FV5 219的指针252E。 该新的安全信息是表230C的一部分, 该表230C还包括参考图2A和2B所 述的根固件代码所有者 “根” 的公钥 231 和 ACL232 以及图 2C 和 2D 所述的固件代码所有者 “OEM” 的公钥 241 和 ACL242。指针 252E 覆盖固件代码所有者 “根” 的 ACL232 的指针 232E 和固件代码所有者 “OEM” 的 ACL 242 的 242E。 0039 图 。

33、3 是示出用于签名并授予更新图 2A 至 2F 的经签名的固件映像的权力的过程的 流程图。最初, 如参考图 2A 的根固件映像 210A 所述, 已经由根固件代码所有者 “根” 签名 根固件映像 310A。表 330A 指示具有公钥 331 的实体 (其对应于具有私钥 320 的 “根” 所有 者) 具有包含指针 332A 至 332E 的访问控制列表 332, 这些指针允许公钥 331 的所有者更新 包含在每个固件卷 FV1 311、 FV2313、 FV3315、 FV4317 和 FV5319 中的代码模块。 0040 在动作 3.1, 私钥 320 的所有者 “根” 创建经签名的令牌 。

34、360, 以便授权对根固件 说 明 书 CN 102934073 A 8 5/9 页 9 映像 310A 的后继更新。通过签名令牌 360, 私钥 320 的所有者, 即 “根” 固件代码所有者将 “根” 公钥 321 与令牌 360 相关联。创建令牌 360 以包括被授予权力的信息, 诸如被授权来 更新根固件映像 310A 的实体的公钥 362 和指示可通过相应的公钥 362 来更新的根固件映 像 310A 内的固件模块的访问控制列表 364。在该示例中, 固件代码所有者 “OEM” 的公钥 362 已经被包含在令牌360中, 且访问控制列表364允许OEM公钥362的所有者更新固件卷FV3。

35、 315 和 FV5 319。 0041 在动作3.2, 在更新根固件映像310A之前, 验证试图通过令牌360授予的权力。 根 固件映像 310A 查阅表 330A 以确保用于令牌 360 的公钥的所有者 (即, 令牌公钥 321 的所有 者 “根” ) 被授权更新令牌 360 内包含的固件卷。在该示例中, 表 330A 被查阅以确保用于令 牌 360 的公钥 321 的所有者 ( “根” ) 出现在表 330A 中, 且用于令牌 360 的公钥 321 的所有者 ( “根” ) 具有更新固件卷 FV3 315 和 FV5 319 的权力。 0042 在动作 3.3, 在证实用于令牌 360。

36、 的公钥 321 的所有者 “根” 具有更新固件卷 FV3 315和FV5 319的权力之后, FV3 315和FV5 319中的代码被更新以形成OEM固件映像310B。 OEM 固件映像 310B 内的表 330B 也被更新以包括用于 “OEM” 固件代码所有者的公钥作为公 钥 333 以及相应的访问控制列表 (ACL) 334。作为对表 330B 进行更新的结果, 访问控制列表 现在包括用于 “根” 固件代码所有者的三个指针, 指向 FV1 311 的指针 332A、 指向 FV2 313 的指针 332B 和指向 FV4 317 的指针 332D, 以及用于 “OEM” 固件代码所有者的。

37、两个指针, 指 向 FV3 315 的指针 334A 和指向 FV5 319 的指针 334E。 0043 在动作 3.4,“OEM” 固件代码所有者 (私钥 340 的所有者) 创建经签名的令牌 370 以 便授权对 OEM 固件映像 310B 的后继更新。通过签名令牌 370, 私钥 340 的所有者, 即 “OEM” 固件代码所有者将 “OEM” 公钥 341 与令牌 370 相关联。创建令牌 370 以包括被授予权力的 信息, 诸如被授权来更新 OEM 固件映像 310B 的实体的公钥 372 和指示可通过相应的公钥 372 来更新的 OEM 固件映像 310B 内的固件模块的访问控制。

38、列表 374。在该示例中, 固件代 码所有者 “Chnl” 的公钥 372 已经被包含在令牌 370 中, 且访问控制列表 374 允许 Chnl 公 钥 372 的所有者更新固件卷 FV5 319。 0044 在动作 3.5, 在更新 OEM 固件映像 310B 之前, 验证试图通过令牌 370 授予的权力。 OEM 固件映像 310B 查阅表 330B 以确保用于令牌 370 的公钥 341 的所有者被授权更新令牌 370 中包含的固件卷。在该示例中, 表 330B 被查阅以确保用于令牌 370 的公钥 341 的所有 者 ( “OEM” ) 出现在表 330B 中, 且用于令牌 370 。

39、的公钥 341 的所有者 ( “OEM” ) 具有更新固件 卷 FV5 319 的权力。 0045 在动作 3.6, 在证实用于令牌 360 的公钥的所有者 “OEM” 具有更新固件卷 FV5 319 的权力之后, FV5 319 中的代码被更新以形成渠道客户固件映像 310C。渠道客户固件映像 310C 内的表 330C 也被更新以包括用于 “Chnl” 固件代码所有者的公钥作为公钥 335 以及相 应的访问控制列表 (ACL) 334。 作为对表330C进行更新的结果, 访问控制列表现在包括用于 “根” 固件代码所有者的三个指针, 即指向 FV1 311 的指针 332A、 指向 FV2 。

40、313 的指针 332B 和指向 FV4 317 的指针 332D ; 用于 “OEM” 固件代码所有者的一个指针, 即指向 FV3 315 的 指针 334C ; 以及用于 “Chnl” 固件代码所有者的一个指针, 即指向 FV5 319 的指针 336E。 0046 图 4 是根据本发明的一个实施例更新图 2A 至 2F 及图 3 的经签名的固件映像的访 问控制列表的方法的流程图。 通过诸如图3的经签名的根固件映像310A之类的现有固件映 说 明 书 CN 102934073 A 9 6/9 页 10 像的所有者执行图 4 描述的步骤, 以向另一个实体授予更新经签名的固件映像的权力。授 予。

41、更新固件映像的权力的实体在本文中被称为 “授予实体” 。在先前图 2A 至 2F 的示例中, 图 4 中描述的步骤可通过 “根” 固件代码所有者执行以在动作 3.2 和 3.3 中向 “OEM” 固件 代码所有者授予权力。类似地, 图 4 的步骤可由 “OEM” 固件代码所有者执行以在动作 3.5 和 3.6 向 “Chnl” 固件代码所有者授予权力。图 4 的步骤将用于更新现有固件映像的访问 控制列表, 诸如根固件映像 310A 的访问控制列表 330A 或 OEM 固件映像 310B 的访问控制列 表 330B。 0047 在 “获取访问控制 (AC) 正向令牌” 步骤 410 中, 从授。

42、予实体获取诸如图 3 的令牌 360 或令牌 370 之类的访问控制令牌。如之前参考图 2A 至 2F 和图 3 所述, 诸如图 3 的令牌 360 或令牌 370 之类的访问控制令牌可由分发渠道中的一个实体创建以授权分发渠道中的 后续实体修改固件映像的给定版本。利用授予实体的私钥对访问控制令牌进行签名, 且授 予实体的公钥因此与访问控制令牌相关联。 一旦从分发渠道中的授予实体获取访问控制令 牌, 控制前进到 “标识授予实体并且使授予实体的公钥的签名与 ACL 匹配” 的步骤 420。 0048 在 “标识授予实体并且使授予实体的公钥的签名与 ACL 匹配” 的步骤 420, 授予实 体被标识。

43、为已经对访问控制令牌进行签名的实体。在图 3 的示例中, 在执行动作 3.2 时, 授 予实体是 “根” 固件代码所有者。对照将针对其授予更新权力的固件映像的访问控制列表 中出现的公钥来匹配与访问控制令牌相关联的公钥。 如果与访问控制令牌相关联的公钥出 现在固件映像的访问控制列表中, 则控制前进到 “验证 AC 正向令牌的签名” 步骤 430。 0049 在 “验证 AC 正向令牌的签名” 步骤 430 处, 授予实体的公钥用于验证访问控制令 牌的签名。为了执行该签名验证, 可从经签名的访问控制令牌计算散列值。公钥也可用于 解密数字签名和经签名的数据, 然后可从经解密的数据计算另一个散列值。如。

44、果两个计算 出的散列值匹配, 则数字签名可被视为有效。 在已经验证访问控制令牌的签名之后, 控制前 进到 “标识需要改变 ACL 的代码模块” 步骤 440。 0050 在 “标识需要改变ACL的代码模块” 步骤440处, 标识将针对其授予权力的固件卷。 在动作 3.2 的示例中, 在访问控制令牌 360 中标识的固件卷是固件卷 FV3 315 和 FV5 319。 一旦标识固件卷, 控制前进到 “验证授予实体被授权改变 AC” 步骤 450。 0051 在 “验证授予实体被授权改变 AC” 步骤 450 处, 作出授予实体是否被授权改变现有 固件映像的访问控制列表的确定。如上所述, 授予实体。

45、, 即 “根” 固件代码所有者已经被指 定为固件卷 FV1 311 至 FV5 319 的访问控制列表的所有者。因此, 授予实体被授权改变这 些固件卷的访问控制列表。控制然后前进到 “更新 ACL : 输入新实体的公钥并更新代码模块 的 ACL” 步骤 460。 0052 在 “更新 ACL : 输入新实体的公钥并更新代码模块的 ACL” 步骤 460 处, 被授予权力 的实体 (在本示例中为 “OEM” 固件代码所有者) 的公钥被加至访问控制列表, 并且固件卷FV3 315 和 FV5 319 的访问控制列表被更新。更新固件卷 FV3 315 和 FV5 319 的权力已经被授 予 “OEM。

46、” 固件代码所有者。 0053 图 5 是根据本发明的一个实施例更新图 2A 至 2F 及图 3 的经签名的固件映像的方 法的流程图。在 “处理经签名的模块” 步骤 510, 诸如根固件映像 310A 之类的现有固件映像 接收对处理经签名的模块的请求。 处理经签名的模块可涉及解开诸如经签名的模块中包含 的若干固件卷之类的信息和 / 或解开用于签名该经签名的模块的密钥。可根据图 5 的步骤 说 明 书 CN 102934073 A 10 7/9 页 11 处理每个经签名的代码模块。控制前进到 “使公钥的签名与 ACl 匹配以及标识更新实体” 步 骤 520。 0054 在 “使公钥的签名与 AC。

47、l 匹配以及标识更新实体” 步骤 520 处, 将与用于签名该经 签名的模块私钥相对应的公钥同现有固件映像的访问控制列表进行比较, 并且标识更新实 体。 如果经签名的模块的公钥出现在现有固件映像的访问控制列表中, 则控制前进到 “验证 模块的签名” 步骤 530。 0055 在 “验证模块的签名” 步骤 530, 验证模块的签名。为了执行该签名验证, 可从经签 名的模块计算散列值。公钥也可用于解密数字签名和经签名的数据, 然后可从经解密的数 据计算另一个散列值。如果两个计算出的散列值匹配, 则数字签名可被视为有效。在已经 验证模块的签名之后, 控制前进到 “标识用于更新的代码模块” 步骤 54。

48、0。 0056 在 “标识用于更新的代码模块” 步骤 540, 标识现有固件映像中要更新的固件卷中 的代码模块。 一旦标识固件卷中的代码模块, 则控制前进到 “验证更新实体被授权更新所请 求的代码模块” 步骤 550。 0057 在 “验证更新实体被授权更新所请求的代码模块” 步骤 550, 确定更新实体是否被 授权更新所请求的固件卷。如果更新实体被授权, 则控制前进到 “更新代码模块” 步骤 560。 在 “更新代码模块” 步骤 560, 更新现有固件映像中的代码模块。 0058 图 6 是根据本发明的一个实施例的配置成使固件映像能够被多个代码所有者签 名的系统的框图。对应于主机计算机系统的。

49、平台 600 包括经由台式机管理接口 (DMI) 611 连接到芯片组 620 的处理器。处理器 610 向平台 600 提供处理能力, 且可以是单核或多核 处理器, 且一个以上的处理器可包含在平台 600 中。处理器 610 可经由一条或多条系统总 线、 通信路径或介质 (未示出) 连接到平台 600 的其它组件。 0059 芯片组620包括可管理性引擎 (ME) 630, 其可被实现为独立于主机处理器610操作 的嵌入式微处理器以管理平台600的配置和操作。 在一个实施例中, 处理器610在主机操作 系统 (未示出) 的指导下操作, 而可管理性引擎 (ME) 630 提供不能被主机操作系统访问的安 全且隔离的环境。在一个实施例中, 可管理性引擎 (ME) 630 认证用户、 控制对外围设备的访 问、 管理用于保护存储在平台 600 的存储设备上的数据的加密密钥, 并经由网络控制器 660 提供至企业服务 670 的接口。利用企业服务 670, 可管理性引擎 (ME) 630 保持与用于诸如 平台 600 之类的平台的配置和管理的企。

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

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


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