NIST SP 800-147B: 服务器BIOS保护指南

NIST 特别出版 800-147B

服务器 BIOS 保护指南

Andrew Regenscheid 著

计算机安全分部,信息科技实验室

此出版物可从此处免费获得:

http://dx.doi.org/10.6028/NIST.SP.800-147B

2014 年八月

美国商务部 秘书 Penny Pritzker

美国国家标准技术研究所 标准和技术商务执行次长和执行主任 Willie May

权力范围

此出版物由 NIST 开发以履行其在美国联邦信息管理法案(FISMA),公法(P.L.)107-347 下的法定责任。NIST 负责为联邦信息系统开发信息安全标准和指导意见,包括最低要求,但是这样的标准和指导意见在没有得到对这些系统行使政策权力的适当的联邦官员的明确许可的条件下不应该被应用到国家安全系统。此指导意见于美国行政管理和预算局(OMB)公告 A-130 第 8b(3) 节“防护政府机构信息系统”相一致,如同公告 A-130 附录 IV“关键章节分析”所分析的那样。补充信息由公告 A-130 附录 III“联邦自动化信息资源的安全性”提供。

此出版物中的任何内容都不应该被带到由美国商务部秘书在法定权力下规定的对于联邦政府机构具有强制性和法律约束力的相矛盾的标准和指导意见中来。这些指导意见也不应该被解读为更改或者取代商务部秘书、行政管理和预算局主任,或是任何其他联邦官员的现有权力。此出版物可以在自愿的基础上被非政府组织使用,并且不受美国版权的限制。但是 NIST 要求署名权。

美国国家标准技术研究所特别出版 800-147B

Natl. Inst. Stand. Technol. Spec. Publ. 800-147B,32 页(2014 年八月)

http://dx.doi.org/10.6028/NIST.SP.800-147B

CODEN:NSPUE2

此文档中可能会提到某些商业实体、设备或者器材以便充分地描述某种试验程序或者概念。这样的提名的本意并非暗示 NIST 对其的推荐或认可,也非暗示这些实体、器材或者设备一定是可用于该目的之最好的。

此文档中可能会有对于 NIST 的当前正在开发中的其他出版物的引用,以便符合其被赋予的法定责任。此出版物中的信息,包括概念和方法论,可以被联邦政府机构使用,即使是在这些附带的出版物完成之前。因此,直到每部出版物完成之前,当前的要求、指导意见和过程在其所存在之处仍然有效。关于计划和迁移的目的,联邦政府机构可能想要紧密跟踪由 NIST 提供的这些新出版物的进展。

我们鼓励组织机构在公开评论期间审阅所有出版物草案并且为 NIST 提供反馈。所有 NIST 计算机安全分部的出版物,除了上述注记的以外,可以从 http://csrc.nist.gov/publications 获得。

关于此出版物的评论可以被提交至:

美国国家标准技术研究所

收件人:计算机安全分部,信息科技实验室,办事处大道 100 号(8930 邮递点),盖瑟斯堡,马里兰州 20899-8930

邮件:800-147comments@nist.gov

计算机系统技术报告

位于美国国家标准技术研究所(NIST)的信息科技实验室(ITL)通过为国家的测定和标准基础设施提供技术领导来提升美国经济和公众福利。ITL 通过开发测试、测试方法、参考数据、概念实现的证明以及技术分析来推进信息科技的发展及其生产性的使用。ITL 的职责包括为联邦信息系统中的国家安全相关信息以外的成本高效的安全性和隐私性开发管理、行政、技术和物理方面的标准和指导意见。此特别出版 800 系列报导了 ITL 的研究、指导意见及其在信息系统安全领域的延伸努力,以及与行业、政府和学术组织之间的合作活动。

摘要

现代计算机依赖基本系统固件,通常称其为基本输入/输出系统(BIOS)以辅助硬件初始化过程并且将控制权移交给虚拟机监视器或者操作系统。恶意软件对 BIOS 固件的非授权修改构成了一种重大威胁,由于 BIOS 在 PC 架构中的独特和特权的地位。此文档中的指导意见包括避免在服务器上执行恶意或者损坏的 BIOS 代码所需的要求。它们适用于存储于 BIOS 闪存中的 BIOS 固件,包括 BIOS 代码、作为更新可信根的一部分的密码学密钥,以及静态 BIOS 数据。此指南的本意是为服务器平台厂商提供关于安全 BIOS 更新过程的建议和指导意见。

关键字

基本输入/输出系统(BIOS);信息安全;补丁管理;服务器安全;固件;可信根;更新可信根

致谢

来自美国国家标准技术研究所(NIST)的作者 Andrew Regenscheid 想要感谢那些审阅了此文档草案并且为其贡献了技术内容的同事。特别地,NIST 感谢出自那些帮助指导本作品的来自业界和政府的专家的贡献。这些专家包括来自 AMD 的 Gary Simpson、来自思科的 Anthony Grieco、Bill Jacobs 和 Chirag Schroff、来自戴尔的 Mukund Khatri 和 Frank Molsberry、来自 IBM 的 Scott Dunham 和 Charles Palmer,以及来自 Intel 公司的 Lelia Barlow、Bob Hale 和 David Riss。

NIST 还想要感谢来自美国国家安全局的 Mike Boyle、Tom Broström、Bob Clemons 和 Patrick Hagerty,他们也为此文档提供了实质性的贡献。

执行摘要

现代计算机依赖基础系统固件,通常称其为基本输入/输出系统(BIOS)以辅助硬件初始化过程以及将控制权移交给虚拟机监视器或者操作系统。BIOS 通常由原始设备制造商(OEM)和独立 BIOS 厂商开发,并且由主板或者计算机制造商分发给最终用户。制造商频繁更新固件以修复 bug、为漏洞打补丁以及支持新硬件。此文档是关于 BIOS 保护的系列出版物中的第二部。于 2011 年四月发布的首部文档 SP800-147,BIOS 保护指南(BIOS Protection Guidelines)为在企业环境中部署的台式机和笔记本系统提供了指导意见。

恶意软件对 BIOS 固件的非授权修改构成了一种重大威胁,由于 BIOS 在现代计算架构中的独特和特权的地位。恶意 BIOS 修改可能成为针对组织机构的高级攻击的一部分——可以是永久的拒绝服务或者是持久的恶意软件存在。

此文档涵盖基本服务器、受管理的服务器和刀片服务器的 BIOS 保护。这些类型的服务器通常包含服务处理器——为管理员提供管理宿主服务器的接口的专用微控制器。服务器,特别是带有服务处理器的服务器,可能会实施多种 BIOS 更新机制。仅实施单一 BIOS 更新机制的服务器可以实行 SP800-147 中的指导意见,如果其更新机制与 PC 客户端系统足够相似,否则他们可以实施此文档中的指导意见。

此出版物中的安全指导意见并不试图防止通过供应链、利用物理替换 BIOS 芯片或是通过安全本地更新程序来安装非法 BIOS。

安全指导意见具体用于四种系统 BIOS 安全特性:

  • 认证 BIOS 更新机制:由数字签名防止执行非法 BIOS 更新镜像
  • 可选的安全本地更新机制:要求一位管理员在系统面前物理存在以安装 BIOS 镜像而无需签名验证
  • 固件完整性保护:在认证 BIOS 更新过程以外防止对于 BIOS 的无意或者恶意的修改
  • 不可绕过性特性:保证没有任何机制可以允许主处理器或者任何其他系统组件绕过 BIOS 保护

此文档还提供了关于利用普遍实现于服务器之中的三种 BIOS 更新机制来实现 BIOS 保护的额外信息和建议。这些素材的本意是帮助实施者们设计系统以满足此出版物中的安全要求。

服务处理器是众多现代服务器设计中的关键管理组件。他们负责多种管理特性,取决于系统的实现。某些但不是全部服务处理器能够更新系统 BIOS。此文档描述服务处理器在系统 BIOS 更新过程中的可能的作用,并且描述此安全指导意见是如何适用于包含这些组件的系统的。

第 1 章 简介

1.1 目的和范围

此文档提供服务器级别的系统中的 BIOS 保护指导意见。它是关于 BIOS 保护的系列出版物中的第二部。于 2011 年四月发布的首部文档,SP800-147,BIOS 保护指南,提供了关于部署于企业环境中的台式机和笔记本系统的指导意见。

恶意软件对 BIOS 固件的恶意修改构成了一种重大威胁,由于 BIOS 在现代计算机系统架构中的独特和特权的地位。恶意 BIOS 修改可能是针对组织机构的高级攻击的一部分——可以是永久的拒绝服务(如果 BIOS 损坏)或者是持久的恶意软件存在(如果 BIOS 被植入恶意软件)。

列出于 NIST SP800-147 中的用于客户端系统的 BIOS 保护的三大核心原则——认证固件更新、完整性保护和保护机制的不可绕过性——也适用于服务器级别的设备。然而,服务器由于其需要远程管理而带来的架构和操作上的复杂性,其以相同于客户端的方式实施 BIOS 安全保护更加困难;造成这种增加的难度的核心原因是服务器通常拥有多种 BIOS 更新机制。此外,某些服务器拥有一块或者更多的服务处理器(SP)。SP 为其宿主执行多种管理功能,这可能包括 BIOS 更新。这将 SP 作为一种安全关键组件引入进来,此文档因此包含关于作为 BIOS 更新过程的一部分的 SP 的指导意见。

启动固件指那些用于辅助硬件初始化过程并且将控制权移交给虚拟机监视器或者操作系统的软件或者固件。此出版物将 BIOS 用作指代服务器中的系统启动固件的通用、认可的词语,包括但不限于基于传统 BIOS、可扩展固件接口(EFI)BIOS 和统一可扩展固件接口(UEFI)BIOS 的启动固件。此文档中的指导意见包括在服务器上避免执行恶意或者损坏的 BIOS 代码的要求。它们适用于存储于 BIOS 闪存存储器中的 BIOS 固件,包括 BIOS 代码、作为更新可信根(RTU)的一部分的密码学密钥,以及静态 BIOS 数据。同系统 BIOS 固件一同存储并且由相同机制更新的设备固件根据此文档的目的被视为 BIOS 的一部分(例如,嵌入于 BIOS 闪存中的 Option ROM)。这些指导意见并不适用于存储于服务器的其他位置,例如一块可选板卡本身的其他设备固件或者 Option ROM。

此指南的本意是为服务器平台厂商提供关于安全 BIOS 更新过程的建议和指导意见。系统管理员应该查询 NIST SP800-147 的 3.2 节以获得关于在客户端和服务器系统上管理 BIOS 的建议的最佳实践。

1.2 受众

此文档本意上的受众包括服务器级别的系统的 BIOS 和平台厂商,以及负责管理服务器安全的系统安全专业人士。这些素材对于开发企业范围内的采购策略并且部署可能也会有用。

此文档中的素材是面向技术的,并且假设读者对于系统和网络安全至少具有基本理解。此文档提供背景信息以帮助这些读者理解所讨论的话题。我们鼓励读者充分利用其他资源(包括此文档中所列出的那些)以获取更多的细节信息。

1.3 文档结构

此文档的剩余部分被组织进以下的主要章节中:

  • 第 2 章呈现对于 BIOS 的概览,描述服务器架构及其更新机制,识别对于服务器中的 BIOS 的潜在威胁,并且解释更新可信根
  • 第 3 章识别为了化解对服务器中的 BIOS 的威胁所要求或者建议的用于 BIOS 实现的安全控制
  • 第 4 章为三种更新机制中的每一种提供额外的安全指导意见
  • 第 5 章为服务处理器提供额外的安全指导意见

此文档还包括带有支持素材的附录:

  • 附录 A 包含用于系统 BIOS 实现的安全指导意见的总结
  • 附录 B、C 和 D 描述用于实现服务器中的 BIOS 保护的可能的系统设计范例
  • 附录 E 定义此文档中使用的词语
  • 附录 F 包含此文档中使用的首字母缩略词和缩略语
  • 附录 G 包含此文档开发过程中使用的参考文献的列表

第 2 章 背景

本章提供了关于系统 BIOS 和服务器架构类型的背景信息。它标识出了用于更新系统 BIOS 的主要方法,还讨论了系统 BIOS 的安全问题和威胁。最后,本章讨论了更新可信根的组件。

2.1 系统 BIOS

系统 BIOS 完全由那些可以被嵌入平台的硅基组件,例如处理器中的特定配置和安全代码组成。它是当计算机加电时在其主中央处理器(CPU)上所执行的首个软件。尽管系统 BIOS 最初负责为操作系统提供硬件访问,它在现代设备上的主要作用是初始化并且测试硬件以及加载操作系统。此外,BIOS 加载并初始化重要的系统管理功能,诸如电源和散热管理。系统 BIOS 还可以在启动过程中加载 CPU 微码补丁。

有若干种不同类型的系统 BIOS 固件。某些计算机使用 16 位的传统 BIOS,而众多较新的系统使用基于 UEFI 规范 [UEFI] 启动固件,或者使用其他自定义的启动固件。在此文档中,我们将所有类型的启动固件称为 BIOS 固件、系统 BIOS 或者简称为 BIOS。如有必要,我们将会这样将传统 BIOS 固件同 UEFI 固件区分开来,即分别称其为传统 BIOS 和 UEFI BIOS。

系统 BIOS 通常由服务器的原始设备制造商(OEM)开发。制造商频繁更新系统固件以修复 bug、为漏洞打补丁,以及支持新硬件。系统 BIOS 通常存储于电可擦除可编程只读存储器(EEPROM)或者其他类型的闪存存储器中。通常,系统 BIOS 固件由一种对于 BIOS 所存储于其中的非易失性存储组件具有特别知识的工具来更新。此工具可以运行在服务器本身的 CPU 之一上,也可以运行在服务器机箱内的一块管理服务器上。

一台给定的计算机系统可能在若干不同位置上拥有 BIOS。除了主板以外,BIOS 也可以在硬盘控制器、显卡、网卡及其他扩展卡上找到。这些额外的固件通常采用 Option ROM 的形式(包括传统 BIOS 和/或 UEFI 驱动程序)。它们在启动过程中由系统固件加载,并且在宿主 CPU 上执行。Option ROM 不应与设备固件相混淆;服务器中有众多带有运行其自身固件的微控制器的系统设备。

此文档中的指导意见适用于存储在 BIOS 闪存存储器中的 BIOS 固件,包括 BIOS 代码、作为更新可信根的一部分的密码学密钥,以及静态 BIOS 数据。与系统 BIOS 固件一同存储并且以相同机制更新的 Option ROM 出于此文档的目的也被看作 BIOS 的一部分。然而,这些指导意见并不适用于存储于服务器的其他位置,诸如一块扩展卡上的 Option ROM 及其他设备固件。

如需获得关于系统 BIOS 基础的更多信息,查阅 NIST SP800-147 第 2 章。

2.2 服务器架构

在本节中,我们将服务器分为三类:基本服务器、受管理的服务器和刀片服务器。此处所作出的区分必须与更新系统 BIOS 所采用的机制相关。

基本服务器在架构上类似于拥有单一 BIOS 更新机制的客户端 PC 系统。为基本服务器保护 BIOS 更新的要求可以通过符合列出于此文档或者 NIST SP800-147 第 3.1 节的要求而被满足。通常,基本服务器上的更新可信根(RTU)是系统 BIOS 的一部分(参见 2.5 节以获得关于 RTU 的更多信息)。

受管理的服务器是拥有用于设备维护和额外服务器管理特性的专用通道的计算机系统。除了宿主处理器外,受管理的服务器可能拥有能够进行系统管理,可能包括 BIOS 更新的服务处理器(见下文)。防止在服务处理器上执行恶意或者损坏的代码至关重要,由于它对于服务器的其他操作方面拥有直接控制权。作为一种潜在的 BIOS 更新机制,执行于服务处理器上的代码可能包含 RTU 并且必须被保护起来以防止非授权的修改。

刀片服务器是一种专用的服务器硬件平台设计,它被配置为可安装于机架系统中的机箱/机柜中的可装配设备。这些平台通常拥有共享的电源和冷却系统以及共享的管理接口。刀片可以在一个机箱/机柜/机架内作为一排服务器自主地运作,或者由中央总线管理器控制。这种系统配置也可能拥有多种途径以更新用于运行独立刀片的 BIOS。从 BIOS 更新的视角来看,刀片服务器通常类似于受管理的服务器。业界也会使用多节点(或者模块化)服务器这一词语,它们拥有和刀片服务器相同的 BIOS 保护要求。

不同的服务器架构差别巨大,尽管大多数服务器适合于归入上述类别之一,在某些情况下,可能难于将一台服务器严格归类为属于上述类别之一。这些类别被作为范例而提供,以帮助澄清要求。然而此文档中的安全指导意见的本意是对任意类型的服务器拥有宽泛的可适用性。

一台服务器可能拥有一块服务处理器,有时称为基板管理控制器,这是一种专用的微控制器。服务处理器通常是一块特别的扩展卡,或者嵌入于服务器主板之上。服务处理器微控制器运行一种专用的操作系统,通常存储于闪存存储器中,并且为管理员提供接口以管理宿主服务器。服务处理器通常是现代服务器中的高权限组件,通常能够更新系统上的固件和软件、更改配置设置,以及读取系统内存。此文档假设管理员将会实施适当的计算机、网络和物理安全性控制以化解对于服务处理器的特有威胁。例如,管理员通常通过网络接口与服务处理器进行交互。最佳安全实践表明,服务处理器应该处于只能由系统管理员访问的私有局域网中。

服务处理器负责执行不同功能,取决于系统实现。服务处理器通常将会监视服务器中的不同传感器,例如用于散热和电源管理的温度和电源传感器。它可能会为管理员提供某种机制以更新服务器和宿主操作系统中的软件或者固件。维持服务处理器的安全对于维持服务器的完整性和可用性至关重要。参见第 5 章以获得关于服务处理器的安全要求。

2.3 系统 BIOS 更新机制

此出版物中的指导意见的本意是防护 BIOS 更新机制以使得只有合法的、经过授权的 BIOS 镜像被写入 BIOS 闪存存储器。这一过程有时被称为“刷”镜像。尽管客户端系统通常只有一种途径以更新 BIOS,服务器系统可能实施若干种更新机制以允许管理员在不同环境中更新 BIOS。此出版物标识了三种一般类别的认证 BIOS 更新机制。一台服务器通常将会实施这些更新机制中的一种或多种。每种更新机制简略描述如下:

  • 更新机制 1——可于任何时机发生的认证 BIOS 更新:此更新机制允许 BIOS 闪存存储器被安全地更新,而无论服务器的操作状态。这包括能够在服务器运转时更新 BIOS 闪存而无需重启。此机制必须保护 BIOS 闪存存储器以防止非授权的修改。
  • 更新机制 2——重启时的认证 BIOS 更新:此 BIOS 更新机制允许在服务器运行时期间引发刷新过程,但是对 BIOS 闪存存储器的实际更新直到系统重启时才会发生。与上一种机制类似,此机制必须保护 BIOS 闪存存储器以防止非授权的修改。
  • 更新机制 3——运行时的 BIOS 更新和重启时的 BIOS 验证:利用这种 BIOS 更新机制,BIOS 只有在每次启动时被验证为合法才能被执行。此机制是必需的,如果 BIOS 刷新锁定机制不足以保护运行中的系统的 BIOS 闪存存储器的完整性。如果 BIOS 闪存存储器在启动时被确定为非法,将会引发恢复过程,并且非法 BIOS 不会被执行。

此外,某些服务器可能包含一种安全本地更新机制,它可以更新系统 BIOS 而无需使用上文讨论的三种认证更新机制中的任何一种。安全本地更新机制通过要求一位管理员物理存在于服务器面前指导更新来保证 BIOS 更新镜像的合法性和完整性。对物理存在的要求化解了针对系统 BIOS 的远程攻击的风险。

2.4 针对系统 BIOS 的威胁

服务器容易受到和那些对客户端系统构成威胁的相同形式的攻击。在服务器上执行操作系统层级的恶意软件可能先于 BIOS 攻击发生。未经认证为来自可信来源就执行的服务器 BIOS 更新易受攻击。由于服务器可能拥有多种 BIOS 更新机制,每种机制都有存在漏洞的风险。不同更新机制之间的相互作用还可能潜在地引入其他漏洞。

服务器中的服务处理器拥有提升的权限以执行系统管理,这可能包括修改 BIOS。尽管服务处理器可能是通过隔离的通讯信道被控制的,对此信道的非授权访问使服务器暴露于重大风险之中。尽管众多安全实践专注于数据网络,在没有为之付出特别努力的情况下,管理网络可能被较少地审查和保护。

如果保护不充分,服务器上的 BIOS 镜像备份(通常是为了恢复特性而保留的)容易受到重写攻击,即使主要 BIOS 被保护以防止修改。在成功破坏一份 BIOS 备份之后,对手可以利用其他手段以使得服务器通过受感染的备份镜像重启。

2.5 更新可信根

更新可信根(RTU)是被内在地信任的硬件和固件的组合,它执行安全 BIOS 更新并且维持 BIOS 的完整性。RTU 可能包括验证经过数字签名的 BIOS 镜像、启用或禁用写保护机制、将 BIOS 更新写入到闪存、执行 BIOS 恢复,以及更新 RTU 本身等功能。第 3 章具体说明执行安全 BIOS 更新和维持 BIOS 完整性对于 RTU 的要求。对 RTU 的内在信任是从隔离的执行环境中得到的——最小化破坏 RTU 功能的风险并且因此维持对 RTU 的内在信任。

RTU 的每种功能组件可以被看作用于该特定功能的可信根:

  • 验证组件负责验证经过数字签名的 BIOS 镜像以决定是否应该将控制权传递给该镜像。该组件拥有可信执行途径,由于它是从设备的一种已知正确的状态进入的。验证组件可用于将可信执行延伸到未受保护的内存区域中的代码上来。验证组件将会验证 BIOS 镜像,如果验证成功,则将控制权传递给该镜像。如果验证失败,则验证组件返回可信执行环境并且不将控制权传递给该镜像。
  • 恢复组件负责引发系统返回至一种已知正确的状态。
  • 完整性组件负责维护 BIOS 镜像的完整性。这可能包括启用基于硬件和固件的锁定机制以防止对镜像的非授权修改。它也会防止竞争/逻辑条件对 BIOS 镜像进行非授权修改。
  • 更新组件负责执行安全 RTU 更新以及维持 RTU 的完整性。

第 3 章 BIOS 安全性原则

NIST SP800-147 所呈现的客户端系统的安全性原则——更新认证、闪存区域完整性和不可绕过性——直接适用于服务器级别的设备。这些安全性原则的本意是化解针对系统 BIOS 的威胁。服务器架构的复杂性以及服务器 BIOS 的多种更新途径要求对 NIST SP800-147 中的指导意见进行延伸。本章列举了主张 BIOS 更新安全性原则对服务器的要求。这些原则在以下的上下文环境中使用“授权”(authorize)和“认证”(authenticate)等词语。对镜像的认证保证它的完整性和来源。它通常植根于固件或者服务器制造商。认证是利用数字签名以密码学的方式实行的。授权是指允许某个更新被系统执行。对更新的授权通常植根于服务器管理员。

3.1 BIOS 更新认证

认证 BIOS 更新机制应该在 RTU(参见 2.5 节)中被实施。这些机制使用数字签名来保证 BIOS 更新镜像的合法性和完整性。RTU 的验证组件应该包含数字签名验证算法和一个密钥存储器。此密钥存储器应该包含用于验证 BIOS 更新镜像的签名的公钥,或者该密钥的一种许可的密码学散列值 [FIPS180-4]。在后一种情况下,更新机制应该计算由 BIOS 更新镜像提供的公钥的散列值,以保证它与出现在密钥存储器中的某个散列值相匹配,然后才能使用提供的公钥来验证 BIOS 更新镜像的签名。

BIOS 镜像应该以符合 NIST SP800-89,关于获取数字签名应用程序的担保的建议 [SP800-89] 的方式被签名,使用一种在 NIST FIPS 186-4,数字签名标准(DSS) [FIPS186-4] 中具体说明的许可的数字签名算法,它提供至少 112 位的安全强度,以满足 NIST SP800-131A,过渡:关于密码学算法和密钥长度的使用的过渡的建议 [SP800-131A] 的要求。

认证更新机制应该保证在更新 BIOS 之前,BIOS 更新镜像经过数字签名,并且该数字签名可以使用某个已存储的密钥或者由 RTU 来验证。这些机制还可以在执行之前验证闪存存储器中的 BIOS 代码的数字签名,特别是当 BIOS 闪存未被保护时(参见 3.3 节)。恢复机制也应该使用认证更新机制,除非此恢复过程满足安全本地更新的指导意见。

系统应该提供能够防止非授权地将 BIOS 更改至较早的认证版本的机制。这种回滚限制机制可以这样实现,例如通过验证 BIOS 镜像的版本号高于当前安装的 BIOS 镜像版本号。适当的回滚保护方式取决于服务器的使用环境以及运行服务器的组织对安全性和可用性的需求。系统可以允许管理员授权回滚至较早版本、禁用这些机制或者基于他们的需求以其他方式配置这些机制。

3.2 安全本地更新

服务器可以可选地包括一种安全本地更新机制,它可以更新系统 BIOS 而无需使用认证更新机制。安全本地更新机制应该通过要求一位管理员物理存在于服务器面前指导更新来授权和认证 BIOS 更新镜像。这种对物理存在的要求化解了远程攻击者主导恶意更新至某个非法系统 BIOS 镜像的风险。

通过远程控制台与服务器进行交互并不满足这种对于物理存在的要求。例如,安全本地更新机制可以被用于从某个不能使用认证更新或者自动恢复机制来更新的损坏的 BIOS 中恢复。安全本地更新机制也可被用于在一台禁止回滚的系统上由物理存在的管理员更改至较早的 BIOS 版本。

然而请注意,实施了安全本地更新机制的系统潜在地容易受到恶意管理员的攻击,或者带有对服务器的物理访问的其他攻击。因此额外的物理、环境以及技术安全措施对于保护这些服务器至关重要,但是它们超出了此文档的范围。

3.3 固件完整性保护

如需防止执行非法或者恶意 BIOS 代码,系统 BIOS 应该在 RTU 验证系统 BIOS 和在启动过程中执行 BIOS 之间保持完整性。

为了防止在认证 BIOS 更新过程外对系统 BIOS 进行无意或者恶意的修改,包含 BIOS 的系统闪存存储器(即 BIOS 闪存),除了存储于非易失性存储器中,由系统 BIOS 所使用的配置数据以外,应该被保护起来以防止认证 BIOS 更新机制以外的修改。如果被实施,BIOS 闪存保护应该在执行 RTU 以外的代码之前被启用,并且应该由硬件机制来强制执行,该机制只能通过某种经过授权的机制(例如系统重置)禁用。

如果 BIOS 闪存保护未被实施,那么 BIOS 完整性应该在每一步执行过程之前利用 RTU 的验证组件进行验证以认证此 BIOS 镜像。如果验证失败,则系统应该引发恢复过程,这可以涉及操作人员的介入或者自动进行。引发恢复至某个受保护的合法 BIOS 的自动恢复机制应该被支持。自动恢复机制化解了拒绝服务攻击的风险,在此,攻击者将会加载某个非法 BIOS 并且将系统置于不可启动的状态。此系统可以允许授权的管理员在服务器上配置驱动这些恢复程序的安全策略。

每个 RTU 都应该被保护以防止认证更新机制以外的修改。保证 RTU 完整性的保护机制应该在执行 RTU 以外的代码之前被启用。RTU 完整性保护应该由硬件机制强制执行,该机制只能通过某种授权的机制,例如系统重置来禁用。

3.4 不可绕过性

系统及其附带的系统组件和固件的设计应该保证没有任何机制可以安装并执行非法 BIOS 代码,除了通过物理介入以及安全本地更新机制以外。

特别地,认证更新机制应该是在没有贯穿于安全本地更新机制的物理介入的情况下修改 RTU 的唯一机制。系统及其附带的系统组件和固件的设计应该保证没有任何机制可以允许宿主服务器或者任何其他系统组件绕过用于更新 RTU 的认证更新机制,除了安全本地更新机制以外。

现代平台也包含赋予了系统组件对 RTU 或者系统 BIOS 的直接访问的设计特性以改进性能和管理,例如将 BIOS 复制到内存中,或者用于系统管理模式操作。某个系统组件可能会拥有对于系统闪存存储器的读取访问权限,但是它不应该能够直接修改 RTU,除非该组件作为 RTU 的扩展或者就是 RTU 本身。

第 4 章 各种更新机制的安全指导意见

下文提供了关于针对三种典型的安全 BIOS 更新机制实施本文档中的安全指导意见的详细建议。一台服务器可以实施这些机制中的一种或多种,而一台给定的服务器上所实施的方法可能由该平台上的硬件支持所决定。这些方法会因 RTU 可以于何时被建立以及用于防止对于存储于 BIOS 闪存存储器中的代码和数据的无意或者恶意的修改的闪存安全锁定机制的可用性而异。所有机制依赖于经过数字签名的 BIOS 更新镜像以及 RTU 中的验证组件利用某个公钥以验证该镜像的签名的能力。

4.1 更新机制 1:任何时机的安全 BIOS 更新

对于此种 BIOS 更新机制,对 BIOS 闪存存储器的安全更新可能发生于服务器的多种运行状态。这包括能够在服务器运行时更新 BIOS 闪存而无需重启。尽管新的 BIOS 被期望直到重启之前不会被执行,此闪存可以在运行时使用系统管理中断(SMI)处理程序、服务处理器或者其他安全方法来刷新。导致新 BIOS 被执行的重启可以发生于任何后续时机(在实际的闪存更新发生之后潜在地可达数月之久)。

由于此安全更新机制防止向 BIOS 闪存存储器写入非法代码,无需在重启时验证 BIOS。

对于实施此种 BIOS 更新机制的相关指导意见列于下方:

  • BIOS 更新镜像必须经过数字签名以满足 3.1 节所述的 BIOS 更新认证要求。实现方式可以将 BIOS 更新镜像分割为多个独立数字签名的部分
  • 如 2.5 节定义的 RTU 必须在运行时可用(并且可以在服务器的其他运行状态下可用)以更新 BIOS 闪存存储器
  • 锁定机制必须存在以使得只有 RTU 可以写入 BIOS 闪存。应该只有 RTU 能够解锁闪存,并且当解锁时,只有 RTU 可以拥有写入 BIOS 闪存存储器的能力。RTU 可以总是拥有 BIOS 闪存存储器的写入访问权限
  • 经过数字签名的 BIOS 更新镜像必须被传输到 RTU。RTU 必须有能力将 BIOS 更新镜像存储于某个不允许对 BIOS 更新镜像进行非授权的写入访问的位置。

实施这一机制的一般步骤包括:

  1. 经过数字签名的 BIOS 更新镜像被传输到 RTU
  2. RTU 将此 BIOS 更新镜像存储于只能被 RTU 写入的某个位置
  3. RTU 验证此 BIOS 更新镜像是否合法。如果此 BIOS 更新镜像被确定为非法,则此 BIOS 更新镜像不会被写入 BIOS 闪存存储器。如果此 BIOS 更新镜像合法,RTU 配置锁定机制,使得只有 RTU 拥有对于 BIOS 闪存存储器的写入访问权限。可行的锁定机制设计可以允许 RTU 对于 BIOS 闪存存储器总是拥有写入访问权限,只要只有 RTU 拥有相同的能力
  4. RTU 将 BIOS 更新镜像写入 BIOS 闪存存储器
  5. RTU 保证 BIOS 闪存存储器在将控制权移交给 RTU 以外的代码(例如 Option ROM)之前被锁定,基于 3.3 节所述的固件完整性保护的每一项要求。

参见附录 B 以获取此更新机制的范例。

4.2 更新机制 2:重启时的安全 BIOS 更新

对于此种 BIOS 更新机制,BIOS 闪存存储器处理在服务器运行时被引发,然而实际的 BIOS 闪存存储器更新直到服务器重启之前都不会发生。此种 BIOS 更新机制防止非法代码被写入 BIOS 闪存存储器中。

对于实施此种 BIOS 更新机制的相关指导意见列于下方:

  • BIOS 更新镜像必须经过数字签名以满足 3.1 节所述的 BIOS 更新认证要求。实现方式可以将 BIOS 更新镜像分割为多个独立数字签名的部分
  • 对于 BIOS 闪存存储器的锁定机制必须存在,使得除了 RTU 以外没有任何实体在运行时对于 BIOS 闪存存储器拥有写入访问权限。尽管对于此种更新机制,RTU 不必须拥有对于 BIOS 闪存存储器的写入访问权限,可能还有确实有此要求的其他 BIOS 更新机制被支持
  • 如 2.5 节所定义的 RTU 必须在系统启动过程中可用,它可以在运行时更新 BIOS 闪存存储器。RTU 必须在重启时在 BIOS 闪存存储器更新之前被执行。RTU 将会在针对闪存的任何更改发生之前验证 BIOS 更新镜像的数字签名
  • 必须存在一块其内容在重启时可被保留的存储区域,使得经过签名的 BIOS 更新镜像可以于运行时被缓存到其中,并且 RTU 可以在重启过程中访问它以便在更新 BIOS 闪存存储器的内容之前验证 BIOS 更新镜像的数字签名。在重启过程中,保存 BIOS 更新镜像的存储区域在验证过程中必须不能被除了 RTU 以外的任何实体访问。

实施这一机制的一般步骤包括:

  1. 经过签名的 BIOS 更新镜像被缓存到一块存储位置,其内容可以在服务器重启时被保留
  2. 当服务器重启时,执行权被移交至 RTU
  3. RTU 验证 BIOS 更新镜像是否合法。如果认定为合法,RTU 将会按需解锁 BIOS 闪存存储器并且将更新写入 BIOS 闪存存储器。如果此 BIOS 更新镜像被认定为非法,则 BIOS 闪存存储器不会被更新
  4. BIOS 闪存存储器的锁定机制在执行任何不可信代码,包括 Option ROM 之前被启用。

参见附录 C 以获取此更新机制的范例。

4.3 更新机制 3:要求启动时验证的安全 BIOS 更新

对于此种更新机制,在运行时保护 BIOS 闪存存储器的锁定机制不存在或者受限,使得由 RTU 以外的实体对 BIOS 闪存存储器的写入不能被防止。对 BIOS 闪存存储器的恶意更新可能会发生,由于 BIOS 闪存存储器未被写保护或者锁定。然而,BIOS 闪存存储器的内容应该于每次启动时被执行前被认证。如果 BIOS 闪存存储器在启动过程中被认定为非法,将会引发恢复过程,而非法 BIOS 不会被执行。

对于实施此种 BIOS 更新机制的相关指导意见列于下方:

  • BIOS 镜像必须经过数字签名,以满足 3.1 节所述的 BIOS 更新认证要求
  • 如 2.5 节所定义的 RTU 必须在将镜像写入到 BIOS 闪存存储器之前验证 BIOS 更新镜像的数字签名
  • 由于系统 BIOS 在运行时未被保护以防止修改,RTU 必须包含能够在执行之前验证系统 BIOS 的验证组件,基于 3.3 节所述的固件完整性保护的每一条要求。验证组件必须在启动时被执行,并且在任何可更新的 BIOS 代码被执行之前验证系统 BIOS
  • 如果系统 BIOS 被认定为非法,RTU 必须引发恢复过程,并且非法系统 BIOS 必须从未被执行。

实施这一机制的一般步骤包括:

  1. 经过数字签名的 BIOS 镜像被验证并且写入到 BIOS 闪存存储器中
  2. 在每次启动时,执行权被移交给 RTU
  3. 如果 RTU 的验证组件认定 BIOS 闪存存储器合法,执行权被移交给 BIOS
  4. 如果 BIOS 闪存存储器被认定为非法,RTU 引发恢复过程,并且此非法 BIOS 从未被执行。

参见附录 D 以获取此更新机制的范例。

第 5 章 关于服务处理器的指导意见

服务器和客户端的关键区别之一在于系统中是否包含服务处理器。服务处理器在管理和监视服务器的过程中具有重要作用,并且可能在更新系统 BIOS 过程中也有作用。本章描述服务处理器并且为包含服务处理器的系统提供更加详细的安全性要求。

5.1 作为可信根的服务处理器

受管理的服务器和刀片服务器中的服务处理器可能拥有直接更新 BIOS 闪存存储器、BIOS 执行内存或者它们自己的闪存或者其他存储介质的能力。在这些情况下,某些或者全部服务处理器环境可以被用作系统 BIOS 的 RTU。这适用于在那些使用 BIOS 闪存保护机制以防止对 BIOS 代码的非授权修改的系统(例如使用第 4 章所述的更新机制 1 或 2 的系统)上能够更新 BIOS 闪存的服务处理器。这也适用于在那些在执行前验证 BIOS 代码的系统(例如使用更新机制 3 的系统)上能够修改用于验证 BIOS 代码的 RTU 的服务处理器。

在这些情况下,服务处理器(SP)的执行环境必须被保护以防止那些能够更新 BIOS 或者 SP 闪存的恶意代码。为了满足第 3 章所述的 BIOS 安全性原则,用作可信根以保护 BIOS 的服务处理器应该满足以下指导意见:

  1. 针对 SP 代码、密码学密钥以及存储于 SP 闪存中的静态数据的更新应该经过认证更新机制
  2. SP 环境应该被控制,使得只有合法代码可以在 SP 上执行
  3. 用户同服务处理器的交互应该要求授权。

5.2 由服务处理器实现的 BIOS 保护的不可绕过性

某些带有服务处理器的服务器可能不将服务处理器用作 BIOS 更新的 RTU。为了保证 SP 环境不能绕过 BIOS 保护,这些系统中的服务处理器不应该拥有对于 BIOS 代码在其中验证或者执行的 BIOS 闪存存储器的直接写入访问权限。更进一步地,服务处理器应该受到限制,使得它不能干涉 BIOS 更新过程,也不能干涉 BIOS 或者 RTU 代码在其中执行的内存。

未被实施这些限制的服务处理器可能能够绕过此文档所概述的 BIOS 保护。因此,它们必须被信任以保护 BIOS,即使它们在其正常操作中并未被用于 BIOS 更新。这样的服务处理器应该被视为可信根,并且满足 5.1 节的要求。

附录 A——要求的总结

此附录包含了关于第 3 章中的系统 BIOS 实现的安全 BIOS 更新指导意见的总结。这些指导意见的本意是用于平台厂商设计、实现或者选择一种系统 BIOS 实现。读者应该查询此文档正文中的相关章节以获得深入描述这些指导意见的目的和上下文环境的额外的信息性文字。

1. BIOS 更新认证

  • 1-A 认证 BIOS 更新机制应该被实现在 RTU 中(参见 2.5 节)
  • 1-B RTU 的验证组件应该包含数字签名验证算法和一个密钥存储器。此密钥存储器应该包含用于验证 BIOS 更新镜像的签名的公钥或者该密钥的一种许可的密码学散列值 [FIPS180-4],在后一种情况下,更新机制应该计算由 BIOS 更新镜像提供的公钥的散列值并且确保它与出现在密钥存储器中的某个散列值相匹配,然后才能使用提供的公钥来验证 BIOS 更新镜像的签名
  • 1-C BIOS 镜像应该以符合 NIST SP800-89,关于获得数字签名应用程序的担保的建议 [SP800-89] 的方式签名,使用一种在 NIST FIPS186-4,数字签名标准 [FIPS186-4] 中具体说明的数字签名算法,它提供至少 112 位的安全强度,以符合 NIST SP800-131A,过渡:关于密码学算法和密钥长度的使用的过渡的建议 [SP800-131A] 的要求
  • 1-D 认证更新机制应该确保 BIOS 更新镜像经过数字签名,并且该数字签名可以在更新 BIOS 之前使用某个已存储的密钥或者由 RTU 验证
  • 1-E 恢复机制也应该使用认证更新机制,除非此恢复过程满足安全本地更新的指导意见
  • 1-F 系统应该提供能够防止非授权地将 BIOS 更改至某个较早的认证版本的机制。

2. 安全本地更新(可选)

服务器可以可选地包括一种安全本地更新机制,在此,由物理存在授权 BIOS 更新镜像的安装,而无需使用认证更新机制。

  • 2-A 安全本地更新机制应该通过要求管理员物理接触服务器本身以指导更新的方式来授权和认证 BIOS 更新镜像。

3. 完整性保护

  • 3-A 在系统 BIOS 由 RTU 验证和启动过程中系统 BIOS 被执行之间,系统 BIOS 的完整性应该得到维持
  • 3-B 包含 BIOS 的系统闪存存储器,除了存储于非易失性存储器中的由系统 BIOS 使用的配置数据以外,应该被保护以防止认证 BIOS 更新机制以外的修改
    • 3-B.i 如果被实施,BIOS 闪存保护应该在执行 RTU 以外的代码前被启用
    • 3-B.ii 如果被实施,BIOS 闪存保护应该只能通过某种授权的机制(例如系统重置)禁用的硬件机制来强制执行
  • 3-C 如果 BIOS 闪存保护未被实施,则 BIOS 完整性应该在每次执行前被验证,利用 RTU 的验证组件来认证 BIOS 镜像
    • 3-C.i 如果验证失败,则系统应该引发恢复过程
    • 3-C.ii 引发恢复到某个受保护的合法的 BIOS 的自动恢复机制应该被支持
  • 3-D 每个 RTU 都应该被保护起来以防止认证更新机制以外的修改
    • 3-D.i 确保 RTU 完整性的保护机制应该在执行 RTU 以外的代码前被启用
    • 3-D.ii RTU 完整性保护应该由只能通过授权的机制,例如系统重置来禁用的硬件机制强制执行

4. 不可绕过性

  • 4-A 系统及其附带的系统组件和固件的设计应该保证没有任何机制可以安装并执行非法 BIOS 代码,除了通过物理介入以及安全本地更新机制以外
  • 4-B 认证 BIOS 更新机制应该是在没有贯穿于安全本地更新机制的物理介入的情况下修改 RTU 的唯一机制
  • 4-C 系统及其附带的系统组件和固件的设计应该保证没有任何机制可以允许宿主处理器或者任何其他系统组件绕过认证更新机制来更新 RTU,除了安全本地更新机制以外
  • 4-D 尽管某个系统组件可能拥有对于系统闪存存储器的读取访问权限,它不应该能够直接修改 RTU,除非该组件被用作 RTU 本身。

5. 服务处理器

  • 5-A 用作可信根以保护 BIOS 的服务处理器应该满足下列要求:
    • 5-A.i 针对 SP 代码、密码学密钥以及存储于 SP 闪存存储器中的静态数据的更新应该通过认证更新机制实现
    • 5-A.ii SP 环境应该被控制,以使得只有合法代码可以在 SP 上执行
    • 5-A.iii 用户同 SP 的交互应该要求授权
  • 5-B 不用作可信根以保护 BIOS 的服务处理器应该满足下列要求:
    • 5-B.i SP 不应该拥有对于 BIOS 代码在其中验证或者执行的 BIOS 闪存存储器的直接写入访问权限
    • 5-B.ii SP 应该受到限制,使得它不能干涉 BIOS 更新过程,也不能干涉 BIOS 或者 RTU 代码在其中执行的内存

附录 B——更新机制 1 范例

此附录提供了关于更新机制 1 可以如何在一台服务器上实现的一个范例。更新机制 1 包括服务器运行时的认证 BIOS 更新。在此范例中,运行时 BIOS 更新由服务处理器(SP)执行。图 1:此范例的系统框图展示了 BIOS 闪存 SPI 控制器可被宿主和 SP 访问。宿主到 SPI 控制器的路径上可能需要额外的逻辑以防止宿主对 BIOS 闪存存储器的写入访问。此逻辑可以是芯片组内部的寄存器,也可以位于芯片组外部。由于它拥有对于系统闪存的写入访问权限,此范例中的 SP 环境必须是一种安全的、受保护的环境,如第 5 章所述。

图 1:更新机制 1 系统框图范例

在此范例中,系统 BIOS 在系统重置时被赋予对宿主 CPU 的控制权。所有 SPI 闪存部分在系统重置时被解锁。系统 BIOS 在允许执行非可信代码(例如 Option ROM、引导程序)前锁定宿主侧对于包含系统 BIOS 的系统闪存部分的写入访问权限。这种锁定是通过同逻辑的交互而实现的,以便将包含 BIOS 镜像的区域“锁定直到重置”。当此锁定被设置时,对此锁定寄存器的访问变为只读,以使得“锁定直到重置”的设置本身不能被修改。对于 BIOS 闪存部分的写入访问权限对于 SP 仍然可用。

当指导 BIOS 更新时,宿主上的系统管理软件可以同 SP 进行交互以便将某个候选更新镜像发送至 SP。或者,BIOS 更新镜像可以经过 SP 以太网通过带外通讯的方式到达 SP。SP,作为系统 BIOS 的 RTU,利用 SP 上的数字签名验证算法和密钥来验证 BIOS 更新镜像。如果此镜像合法,则即使是在宿主操作系统重启之后对 BIOS 闪存存储器仍然具有写入访问权限的 SP 可以通过同 BIOS 闪存存储器的 SPI 控制器进行交互而执行闪存更新。

附录 C——更新机制 2 范例

此附录提供了关于更新机制 2 可以如何在一台服务器上实现的一个范例。在此范例中,BIOS 更新镜像在启动过程中被验证和刷入,此时被实现为 BIOS 的一部分的 RTU 拥有对系统的控制权。图 2 展示了使用此种更新机制的服务器的一种系统框图范例。BIOS 闪存 SPI 控制器仅可由宿主访问。潜在的 BIOS 更新镜像存储于 SP 环境中。

图 2:更新机制 2 系统框图范例

在此范例中,如需引发 BIOS 更新,宿主上的系统管理软件可以同 SP 进行交互以发送 BIOS 更新镜像,使其存储于 SP 环境中用于之后 BIOS 的访问。或者,候选 BIOS 更新镜像可以经过 SP 以太网通过带外通讯的方式到达 SP。

被实现为系统 BIOS 的一部分的 RTU 在系统重置时获得宿主侧的控制权。所有 SPI 闪存部分在系统重置时被解锁。在系统闪存内部,RTU 并未与系统 BIOS 的剩余部分相分离,在执行非可信代码(例如 Option ROM)之前,系统 BIOS 就是 RTU。它与 SP 进行通讯以查找候选 BIOS 更新镜像。如果存在,它从 SP 中读取到宿主内存中(它在 RTU 执行期间仅可由系统 BIOS 写入)并且进行验证。如果此 BIOS 更新镜像合法,系统 BIOS 通过同 SPI 闪存控制器的交互来执行系统闪存更新。当 BIOS 更新结束时,系统 BIOS 强制系统重置并且重新启动以便从新的镜像执行。

如果 SP 指示候选 BIOS 更新镜像不存在,或者候选 BIOS 更新镜像验证失败,BIOS 通过同 SPI 控制器交互以便将包含 BIOS 镜像的区域“锁定直到重置”来锁定 BIOS 闪存存储器。当此锁定被设置时,对此 SPI 部分的锁定寄存器的访问变为只读,以使得“锁定直到重置”的设置本身不能被修改。此区域的锁定在退出 BIOS 的 RTU 部分之前完成。

附录 D——更新机制 3 范例

此附录提供了关于更新机制 3 可以如何在一台服务器上实现的一个范例。在此范例中,BIOS 闪存并未被强有力地保护,因此 BIOS 代码的完整性在启动过程中被验证。更新机制 3 的系统框图范例展示了 BIOS 闪存 SPI 控制器可由宿主和 SP 访问。由于它拥有对于 BIOS 闪存存储器的写入访问权限,此范例中的 SP 环境必须是安全、受保护的环境,如第 5 章所述。

图 3:更新机制 3 系统框图范例

在此范例中,如需引发 BIOS 更新,宿主上的系统管理软件可以同 SP 交互以便将 BIOS 更新镜像发送到 SP。或者,BIOS 更新镜像可以经过 SP 以太网通过带外通讯的方式到达 SP。然后,作为 RTU 的一部分的 SP 认证此 BIOS 更新镜像。如果此镜像合法,即使在宿主操作系统启动以后对于系统闪存仍然拥有写入访问权限的 SP 可以通过同系统闪存的 SPI 控制器进行交互以执行闪存更新。

在此范例中,系统 BIOS 包含它自身的 RTU 验证组件,它用于在每次启动时认证系统 BIOS 的剩余部分。此验证组件驻留于系统闪存中,并且出于描述此更新机制的目的,它将被标记为 RTU-V。此 RTU-V 在系统重置时被赋予对于宿主侧的控制权。系统重置同时也会解锁全部 SPI 闪存部分。在系统闪存内部,RTU-V 是可以独立于系统 BIOS 的剩余部分而被锁定的。RTU-V 也可以按照如下所述被更新:类似于更新机制范例 2,RTU-V 更新发生于重启时,并且由 RTU-V 本身来更新。它同 SP 通讯以查询候选 RTU-V 更新镜像。如果存在,则它从 SP 读入到宿主内存中并且进行认证。如果此镜像通过认证,则由 RTU-V 通过同 SPI 闪存控制器的交互来进行 BIOS 闪存 ROM 的 RTU-V 部分的更新。当 RTU-V 更新结束时,RTU-V 强制系统重置并且重新启动以便从新的镜像执行。

如果 SP 指示候选 RTU-V 更新镜像不存在,或者候选 RTU-V 更新镜像验证失败,则 RTU-V 通过同 SPI 控制器进行交互将闪存的 RTU-V 区域锁定直到重置。当此锁定被设置时,对此 SPI 区域的锁定寄存器的访问变为只读,使得“锁定直到重置”的设置本身不能被修改。此区域的锁定先于退出 RTU-V(例如,在执行 BIOS 的剩余部分之前)完成。

由于系统闪存区域包含不可锁定的 BIOS 代码,并且会受到恶意代码的修改,因此由 RTU-V 认证系统 BIOS 的剩余部分。系统 BIOS 的剩余部分保存于系统闪存中的独立闪存区域中。如果认证通过,RTU-V 将控制权传递给系统 BIOS 的剩余部分。在此范例中,系统 BIOS 的剩余部分不会锁定包含系统 BIOS 剩余部分的闪存区域。不锁定此闪存区域的可能的原因之一是在运行时简化 BIOS RTU 对此区域的访问。另一种可能的原因是这些区域中的一部分需要在运行时可写入,而区域锁定的粒度不足以保证在锁定 BIOS 的同时不会同时锁定需要可写入的区域。

如果 BIOS 认证失败,它不会被执行。与之相反,RTU-V 同 SP 上的 BIOS RTU 进行通讯以告知认证失败。然后 SP 必须访问之前存储于 SP 环境中的一份合法 BIOS 镜像(可能来自先前的认证 BIOS 更新),认证它并且执行闪存更新。然后 SP 强制系统重置以重新启动 RTU-V,它将于其后认证并执行系统 BIOS 的剩余部分。

附录 E——用语

此出版物中使用的选定的词语定义如下:

  • 基本输入/输出系统(BIOS):总体地用于指代基于传统 BIOS、可扩展固件接口(EFI)和统一可扩展固件接口(UEFI)的启动固件。
  • 传统 BIOS:用于众多 x86 兼容计算机系统的老旧启动固件,也称为遗产 BIOS。
  • 可扩展固件接口(EFI):关于操作系统和平台固件之间的接口规范。1.10 版本是 EFI 规范的最终版本,由统一可扩展固件接口论坛制定的后续修订版本属于 UEFI 规范的一部分。
  • 固件:包含在只读存储器(ROM)中的软件。
  • Option ROM:由系统 BIOS 调用的固件。Option ROM 包含扩展卡(例如显卡、硬盘控制器、网卡等)上的 BIOS 固件以及用于扩展系统 BIOS 功能的模块。
  • 系统管理模式(SMM):见于 x86 兼容处理器的一种高权限操作模式,用于低级系统管理功能。系统管理模式仅可在系统生成系统管理中断时进入,并且仅可执行来自隔离的内存块中的代码。
  • 系统闪存存储器:系统 BIOS 所在的非易失性闪存,通常是主板上的电可擦除可编程只读控制器(EEPROM)闪存存储器。尽管系统闪存存储器是一个技术具体的词语,此文档中的指导意见本意是将系统闪存存储器应用于指代包含系统 BIOS 的任意非易失性存储介质。
  • 可信平台模块(TPM):构建于某些计算机主板中的防破坏集成电路,它可以执行密码学操作(包括密钥生成)以及保护少量敏感信息,诸如口令和密码学密钥。
  • 统一可扩展固件接口(UEFI):正在广泛部署到新的基于 x86 的计算机系统上的针对传统 BIOS 的可能的替代品。UEFI 规范继承自 EFI 规范。

附录 F——首字母缩略词和缩略语

此附录包含此指南中使用的一组选定的首字母缩略词和缩略语。

  • ACPI:高级配置与电源接口
  • BIOS:基本输入/输出系统
  • CPU:中央处理器
  • EEPROM:电可擦除可编程只读存储器
  • EFI:可扩展固件接口
  • FIPS:美国联邦信息处理标准
  • FISMA:美国联邦信息安全管理法案
  • GPIO:通用目的输入/输出
  • I2C:集成电路总线
  • IO:输入/输出
  • IT:信息科技
  • ITL:信息科技实验室
  • LAN:局域网
  • LPC:低针数总线
  • NIST:美国国家标准技术研究所
  • OEM:原始设备制造商
  • OMB:美国行政管理和预算局
  • OS:操作系统
  • PC:个人计算机
  • PCI:外设元件互联标准
  • ROM:只读存储器
  • RTU:更新可信根
  • RTU-V:更新可信根的验证组件
  • SMI:系统管理中断
  • SMM:系统管理模式
  • SP:服务处理器
  • SP:特别出版
  • TPM:可信平台模块
  • UEFI:统一可扩展固件接口
  • USB:通用串行总线

附录 G——参考文献