《固件映像的多所有者部署.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 之类的平台的配置和管理的企。