减少操作系统中代码可利用性的操作查及一种方法是确保代码和/或数据未经修改并由受信任的供应商提供。例如,系统虚拟系统性检多年来,化安Windows一直采用驱动程序签名 。全知强化一些较新的识域数据版本更进一步 ,使用 硬件和软件 安全功能 的码和组合来锁定计算机 ,确保它仅运行受信任的完整代码/应用程序 - 此过程被Microsoft称为“Device Guard” 。 即使是异常特权恶意软件也无法 轻松让未经授权的应用程序 运行,因为 检查是源码库检测否允许应用程序运行的机制位于硬件辅助虚拟化环境中。大多数代码签名解决方案将与操作系统扩展关联的操作查及数字签名相关联 , 允许 操作系统检查代码的系统虚拟系统性检完整性是否完整以及供应商 是否合法。类似的化安过程通常用于更新。
但是全知强化,检查签名的识域数据代码以及操作系统本身呢 — 我们确定 它 没有 被 恶意引导工具包篡改吗? 确保在引导期间 加载 的系统软件的完整性涉及 许多步骤 ,云计算主要与引导过程本身的码和多个步骤有关。从最早的商用计算机开始,启动涉及多个阶段。即使是 IBM 701, 年代初期流行的计算机 ,安装多达 19 次,也已经具有这样的多阶段启动过程 ,从按下 特殊的“加载”按钮开始 ,使 系统加载 单个 36 位字 通常来自打孔卡。它将执行(部分)这个词 以加载更多指令,源码下载然后开始执行这些指令作为“引导程序”。
通常 ,安全启动设备从启动 启动过程 的初始“信任根”开始 ,并且通常基于 硬件 ,例如 ,微控制器从内部不可变存储器或根本无法重新编程的内部闪存开始执行软件,或者只能通过严格的身份验证和授权检查。例如 ,现代Apple计算机使用单独的处理器T2安全芯片来为安全启动等提供硬件信任根 ,而Google还为此开发了一种称为Titan的定制处理器。我们现在将讨论硬件信任根如何帮助 验证 系统是亿华云否安全启动。
启动通用计算机通常从固件开始 ,固件启动一系列阶段,以完全启动的系统结束 。例如 , 固件可以加载一个特殊的引导加载程序 ,然后加载操作系统内核 ,而 操作系统内核 又可以 加载额外的引导 驱动程序 ,直到最终操作系统完全初始化并准备好与用户或应用程序交互。所有这些阶段都需要保护 。例如,统一可扩展固件接口 (UEFI)可以通过安全启动来保护第一阶段 (即验证 引导加载程序的完整性)。服务器租用安全启动验证启动加载程序是否使用 适当的密钥进行签名 ,即使用与固件中存储的密钥信息一致的 密钥 。 这将防止没有 适当签名的加载程序和驱动程序获得对系统的控制 。 引导加载程序 现在可以在加载操作系统内核 之前 验证其数字签名 。接下来 ,内核在启动操作系统 的 所有其他组件(例如启动驱动程序和可能集成的反恶意软件)之前对其进行验证。 通过在其他驱动程序 之前启动 反恶意软件程序,它随后可以检查所有这些 后续组件 ,模板下载并将 信任链扩展到完全已初始化操作系统 。
下一个问题是:我们怎么 知道是 这种情况? 换句话说 , 我们如何知道 系统 确实安全启动 ,并且 我们可以信任 屏幕?这里的诀窍是使用证明 ,(远程)方可以检测到对我们系统所做的任何更改。远程证明通常使用特殊硬件 ,例如充当信任根的受信任平台模块 (TPM) ,包括分步验证系统是否加载了“正确”类型的软件 。特别是,TPM 是一个加密硬件模块,支持一系列加密功能 、密钥生成 和管理、安全存储(例如 ,密钥和其他 安全 敏感信息),以及重要的完整性测量。有关进一步讨论 ,请参阅硬件安全CyBOK知识领域[65]。
对于完整性测量,TPM 具有 一组 称为 PCR-0、PCR-1 的平台 配置寄存器。 . . , 在每次引导时 都设置为已知值。 这些寄存器 不是用于直接写入 ,而是 用于扩展。因此 ,如果 PCR-0寄存器的当前值为X ,并且我们想用Y扩展它 ,则TPM计算哈希(X ,Y)并存储 PCR-0 的结果 。 现在,如果我们想进一步 扩展它, 比如 使用 Z, TPM 会再次计算 Z 的 哈希和当前在 中的值 ,并将结果存储在 PCR-0 中。换句话说,它将计算哈希(Z, 哈希(X ,Y))。我们现在可以 进一步扩展它