什么是 BIOS 中的安全启动和平台密钥
Summary: 了解安全启动及其在保护系统免受恶意软件侵害方面的作用。了解 BIOS 中的平台密钥是什么,以及它如何建立对安全启动功能的信任。
Symptoms
本文介绍了安全启动以及如何将其扩展到 Linux;RHEL7。它还提供了一些关于 Linux“可信内核引导”及其对用户空间应用程序的影响的见解。
安全引导旨在使用选项 ROM 和 MBR 等机制防止以下情况:引导时安装在内存中的根工具包加载到操作系统,将系统控制劫持并保持隐藏状态,让反恶意软件程序无法发现它们。随着时间的推移,此问题已发展,在数据丢失或损坏和被盗中发挥着重要作用。恶意软件可能位于 BIOS 和作系统加载程序的中间。它也可以介于作系统加载程序和作系统之间。
统一可扩展固件接口 (UEFI) 是新式服务器平台的硬件和软件接口的新标准,具有一组丰富的 UI、模块化和标准接口,用于在 UEFI 中开发设备驱动程序,这些驱动程序在比旧 BIOS 环境更灵活的预启动环境中协同工作。操作系统和平台对 UEFI 的采用率继续增长,许多主要的客户端和服务器操作系统版本都支持 UEFI。
在 Microsoft 的领导下,UEFI 标准机构确定了一种方法,使用加载和运行未经修改且平台已知的二进制文件的机制来禁止安装启动时恶意软件 rootkit。此机制称为安全启动 — 请参阅 Microsoft 安全启动,了解 Microsoft 信息,并以类似的方式,不同的作系统供应商整合了不同的方法来实现安全启动。
安全的 UEFI 平台只加载未经修改且受平台信任的软件二进制文件,例如选项 ROM 驱动程序、引导加载程序、操作系统加载程序。此处详细描述了安全启动机制的 UEFI 规范。
UEFI 安全启动:
UEFI 规范定义了安全引导所需的基础架构。这里简要介绍了安全启动中使用的术语,对于希望更详细地了解的人很有用。
安全启动不会在运行时保护系统及其数据。如果在启动过程中未对任何组件进行身份验证,安全启动会停止启动至作系统,从而阻止系统运行隐藏的恶意软件。
这些关键字是安全启动的基础。UEFI 规格 请详细介绍这些关键字。这些规范详细说明了如何对二进制文件进行签名; 请参阅第 28
节以了解更多信息。
经过身份验证的变量:
UEFI提供了一项称为经过身份验证的变量的服务,这意味着只有经过认证的模块或真实的代码模块才能写入,也就是说,只有具有密钥证书的代码模块才能写入。但任何一方都可以读取这些变量。
平台密钥 (PK):
平台密钥在平台所有者和平台制造商安装在 NVM 中的固件之间建立信任关系。
密钥交换密钥 (KEK):
密钥交换密钥在作系统和平台固件之间建立信任。KEK 由作系统和/或想要与平台固件通信的第三方组件安装在平台中。
数据库 (DB):
授权的数据库,存放被授权与平台固件交互的代码模块的公钥和证书。
DBX:
被列入黑名单的数据库。不允许开始加载与这些证书匹配的任何代码模块。
签名:
私钥和哈希生成要签名的二进制文件的签名。
证书:
包含公钥的 Authenticode 证书,该公钥与用于对映像签名的私钥相对应。
UEFI 平台固件加载由证书颁发机构 (CA)(在本例中为 Microsoft)签名的第三方驱动程序、optionROMS 和作系统加载程序。任何硬件供应商都可以在 UEFI BIOS 中编写其驱动程序,并让其由 Microsoft 签名以在 UEFI 平台上运行。OEM 在平台数据库中安装密钥的公共部分,UEFI 加载程序协议服务根据授权的数据库验证二进制文件的签名,然后才允许在平台上运行。此身份验证链从 UEFI 延续到作系统加载程序和作系统。
总之,UEFI 允许已签名且其密钥存在于数据库中的作系统加载程序运行。此密钥机制可确保仅当作系统加载程序或选项 ROM 获得授权且未经任何一方修改时,才允许它们运行。
图 1:UEFI 平台固件
Cause
Resolution
Additional Information