SECURE BOOT 03 加密学基础:信任根和信任链

63 阅读5分钟

image.png

一、 信任根 - Root of Trust

**1. 核心思想:**信任根是一个系统中最基础、最底层、必须无条件信任的组件或一组功能。它是整个系统信任体系的起点和基石。如果信任根本身不可信,那么建立在其上的一切信任都将不复存在。

2. 关键特性:

  • **不可篡改性:**信任根必须是高度安全的, ideally 在硬件层面实现,难以被软件攻击或物理篡改。
  • **始终可信:**系统假设信任根在出厂时就是正确、可靠的。
  • **功能最小化:**信任根的功能应该尽可能简单、精简,以减少潜在的攻击面。这符合“安全最小化”原则。

**3. 信任根的主要类型:**在实际系统中,通常有三个关键的信任根:

信任根类型英文全称功能描述
根密钥Root of Trust for Storage一个安全存储在硬件(如芯片熔丝、安全闪存)中的加密密钥。它是整个密钥体系的根,用于加密和保护其他密钥。
测量根Root of Trust for Measurement一个可信的硬件功能模块,负责对系统启动时代码(如BIOS、Bootloader)进行初始的、可靠的完整性度量(计算哈希值)。
报告根Root of Trust for Reporting一个能够对“测量根”得到的数据进行数字签名的功能(通常与根密钥关联),以向外部证明度量结果的可信性。

在实际硬件中,这三个功能通常被集成在一个叫做 可信平台模块的芯片中。


二、 信任链 - Chain of Trust

1. 核心思想:信任链是一种逐级度量和验证的机制。它从最底层的信任根开始,像链条一样,一环扣一环地将信任扩展到整个计算机系统。 **2. 工作原理 - “先度量,后执行”**这个过程可以概括为以下几个关键步骤:

  1. **起点:**系统上电后,首先由硬件级别的 测量根对第一段要执行的代码(通常是 BIOS/UEFI的引导程序)进行完整性度量(计算哈希值)。

  2. **验证第一环:**在执行BIOS代码之前,系统会将计算出的哈希值与一个预先存储的、可信的哈希值(在白名单中)进行比对。

    • **如果匹配:**说明BIOS未被篡改,是可信的。于是,测量根将控制权交给BIOS。
    • **如果不匹配:**说明完整性被破坏,系统会中止启动(或进入恢复模式),防止恶意代码运行。
  3. 传递信任:现在,已经被验证为可信的BIOS就成为了新的、临时的“信任根”。它接下来会负责度量并验证下一个要加载的组件,即操作系统引导程序

  4. 继续延伸:同样,被验证通过的引导程序会去度量和验证操作系统内核

  5. **最终目标:**操作系统内核被验证后,还可以继续度量和验证关键的应用程序(如杀毒软件、安全组件等)。

这个过程的精髓在于:**每一环在将控制权交给下一环之前,都必须先确保下一环是完整和可信的。****一个生动的比喻:**想象你要传递一份绝密文件,需要经过多人之手:

  • **信任根:**你本人,是绝对可信的起点。
  • 第一环:你将文件交给下属A。在交给他之前,你通过照片和工牌验证了他的身份。
  • 第二环:下属A已经被你验证,成为可信节点。现在由他负责将文件交给快递员B。下属A会通过公司系统验证快递员B的身份和授权。
  • 第三环:可信的快递员B将文件送到客户C的公司,由前台D签收。快递员B会验证前台D的身份。
  • ...如此继续。

如果其中任何一环无法验证下一环的身份(比如发现工牌是伪造的),链条就会中断,文件传递停止。这样,即使你无法亲自监督整个过程,也能确保文件最终安全送达,因为信任被一环一环地传递了下去。

三、 信任根与信任链的关系总结

特性信任根信任链
角色信任的起点和基石信任传递的机制和过程
关系是链条的第一环是从第一环开始不断延伸的链条
目标提供一个小而坚固的可信基础将信任从基础安全地扩展到整个复杂系统

实际应用与技术

  • 可信平台模块:这是实现信任根和信任链最典型的硬件芯片。它内置了加解密引擎、受保护的存储空间,专门用于完成度量、存储和报告功能。
  • 安全启动:这是信任链原理在PC和移动设备(如Windows电脑、安卓手机)上的具体实现。它确保设备只启动由原始设备制造商签名的操作系统,从而防御Bootkit等底层恶意软件。
  • 可信执行环境:在移动设备上,通过信任链机制,在主操作系统之外创建一个隔离的、安全的小型操作系统,用于处理指纹、支付等敏感信息。

总结来说,信任根和信任链共同构建了一个防御纵深体系。它们解决了“如何在一个本身可能不安全的复杂环境中,确保系统从启动开始就是可信的”这一根本性问题,是现代计算安全的基石。