TPM 芯片自我初始化
硬件复位
当计算机系统加电时,电源管理电路会向 TPM 芯片发送一个复位信号。这个复位信号就像是一个启动指令,告知 TPM 芯片开始初始化流程。
在电子电路中,信号的传输往往以电压的不同状态来表示不同的逻辑信息。对于复位信号而言,一般是通过改变特定引脚的电压电平来触发 TPM 芯片执行复位操作。常见的逻辑电平有高电平(通常表示逻辑 “1”)和低电平(通常表示逻辑 “0”),电源管理电路通过控制输出到 TPM 芯片特定引脚的电压在这两种电平之间切换,来发送复位信号。
硬件复位会将 TPM 芯片内部的寄存器和状态机设置为初始值。寄存器是芯片内部用于临时存储数据和控制信息的单元,状态机则用于控制芯片的工作流程。通过复位操作,TPM 芯片可以清除之前可能存在的异常状态,为后续的正常工作做好准备。
自检程序执行
硬件复位完成后,TPM 芯片会启动内部的自检程序。这个自检程序是预先烧制在 TPM 芯片的固件中的,它包含了一系列的指令和算法,用于检查芯片的各个功能模块是否正常工作。
功能模块检查:自检程序会对 TPM 芯片的多个关键功能模块进行检查,例如:
密码运算单元:检查其是否能够正确执行各种密码学算法,如哈希算法(SHA – 256 等)、加密算法(AES 等)。自检程序会输入一些预设的数据,让密码运算单元进行计算,然后将计算结果与预先存储的正确结果进行比对,如果一致,则说明密码运算单元正常工作。
存储单元:检查芯片内部的非易失性存储区域(用于存储密钥、哈希值等重要信息)和易失性存储区域(用于临时存储数据)是否能够正常读写数据。自检程序会向存储单元写入一些测试数据,然后再读取出来进行验证。
通信接口:检查 TPM 芯片与计算机主板上其他组件(如南桥芯片)之间的通信接口(如 LPC、SPI 等)是否能够正常传输数据。自检程序会通过通信接口发送和接收一些测试信号,检查信号的传输是否准确无误。
配置信息加载
读取配置数据:在自检通过后,TPM 芯片会从内部的非易失性存储区域中读取预先存储的配置信息。这些配置信息包括芯片的工作模式、支持的密码学算法列表、安全策略等。
设置工作参数:根据读取到的配置信息,TPM 芯片会设置自身的工作参数,使其处于合适的工作状态。例如,如果配置信息指定使用 SHA – 256 哈希算法进行度量操作,TPM 芯片会将密码运算单元配置为使用该算法。
与系统建立通信
握手协议执行:初始化的最后一步是 TPM 芯片与计算机系统的其他部分建立通信。TPM 芯片会通过通信接口与主板上的其他组件执行握手协议,以确保双方能够正常进行数据交互。握手协议通常包括一系列的信号交换和身份验证步骤,双方会交换一些特定的信息,以确认彼此的身份和通信能力。
报告初始化结果:完成握手协议后,TPM 芯片会向系统报告自己的初始化结果。如果初始化成功,系统可以继续进行后续的启动流程,并且可以开始使用 TPM 芯片提供的安全功能;如果初始化失败,系统可能会采取相应的措施,如发出警报、记录错误信息等。
TPM芯片度量和验证主板固件及系统引导的可信性
度量过程
度量过程主要是对主板固件和系统引导程序的内容进行特征提取,一般采用哈希算法来实现。
选择哈希算法:TPM 芯片通常会采用诸如 SHA – 1、SHA – 256 等哈希算法。以 SHA – 256 为例,它能将任意长度的输入数据转换为 256 位的固定长度哈希值,这个哈希值就如同数据的 “指纹”,可以唯一标识数据的内容。
度量主板固件:
1:在系统启动时,BIOS(基本输入输出系统)作为主板固件的重要组成部分,TPM 芯片会对其代码和配置信息进行读取。
2:利用选定的哈希算法对 BIOS 的数据进行计算,得到一个对应的哈希值。例如,通过对 BIOS 的代码段、配置参数等进行 SHA – 256 运算,得出一个 256 位的哈希值。
度量系统引导程序
1:当主板固件验证通过后,系统进入引导阶段,TPM 芯片会对系统引导程序(如 GRUB,Grand Unified Bootloader)进行度量。
2:同样使用哈希算法对引导程序的内容进行计算,得到引导程序的哈希值。这个过程会对引导程序的代码、加载的配置文件等进行全面计算。
验证过程
验证过程是将度量得到的哈希值与预先存储的可信哈希值进行比对,以确定主板固件和系统引导程序是否可信。
存储可信哈希值
在系统生产或配置阶段,会将主板固件和系统引导程序的正确版本的哈希值存储到 TPM 芯片的非易失性存储区域中。这些哈希值是在安全的环境下计算得出的,代表了合法、未被篡改的程序内容。例如,在计算机出厂前,制造商使用相同的哈希算法对 BIOS 和引导程序进行计算,并将得到的哈希值写入 TPM 芯片。
比对哈希值
TPM 芯片将度量得到的主板固件哈希值与存储的可信哈希值进行比较。如果两者完全一致,说明主板固件的内容没有被篡改,是可信的。接着,对系统引导程序的哈希值进行同样的比对操作。如果引导程序的哈希值也与可信哈希值匹配,那么系统引导程序也被认为是可信的。
判定结果与处理
如果哈希值比对结果一致,TPM 芯片会向系统发出验证通过的信号,系统会继续正常启动流程,信任从硬件平台传递到引导层,进而传递到操作系统。如果比对结果不一致,TPM 芯片会判定主板固件或系统引导程序可能已被恶意修改,存在安全风险。此时,系统可能会采取一系列安全措施,如拒绝启动、发出警报、记录安全事件等,以防止恶意软件或非法程序入侵系统。
信任链传递
TPM 芯片度量和验证的过程构建了一个信任链。从 TPM 这个可信根实体开始,先验证主板固件的可信性,只有主板固件通过验证后,信任才会传递到系统引导层。当系统引导层通过验证后,又会继续验证下一层的软件组件,如操作系统内核、系统关键服务等,从而将信任逐步扩展到整个计算机系统,确保系统从硬件到软件的启动过程都是在可信的环境中进行的。
可信根实体(Trusted Root of Trust)
可信根实体
可信根实体(Trusted Root of Trust)是整个信任链的起点,通常是硬件组件或固化在硬件中的代码,具有不可篡改的特性。常见的可信根实体包括可信平台模块(TPM,Trusted Platform Module),它是一种专门设计用于提供安全功能的芯片,能够存储密钥、进行加密操作和度量系统组件的完整性。
度量与验证
度量:指对主板固件和系统引导程序进行精确的测量和记录,通常是计算其哈希值(如 SHA – 256 哈希)。哈希值是一个固定长度的数字指纹,能够唯一标识一个文件或程序的内容。如果文件内容发生任何改变,其哈希值也会相应改变。
验证:将度量得到的哈希值与预先存储的可信哈希值进行比较。如果两者匹配,则说明主板固件和系统引导程序的内容没有被篡改,是可信的;如果不匹配,则表明可能存在安全风险。
信任传递
信任传递是指将可信根实体的信任状态逐步扩展到系统的各个层次。在这个过程中,可信根实体首先验证主板固件的可信性,只有当主板固件通过验证后,信任才会传递到系统引导层。系统引导层在被验证为可信后,再继续验证下一层的软件组件,以此类推,形成一个完整的信任链。
举例说明
假设一台安装了 TPM 芯片的计算机启动过程如下:
可信根实体初始化
当计算机加电启动时,TPM 芯片首先被初始化。TPM 芯片内部存储了一些预先设定的可信哈希值,这些哈希值是主板固件和系统引导程序的正确版本的哈希值。
度量主板固件
BIOS(基本输入输出系统)作为主板固件的一部分,在启动过程中,TPM 会对 BIOS 的代码和配置信息进行度量,计算其哈希值。例如,TPM 计算出当前 BIOS 的 SHA – 256 哈希值为 abcdef123456…。
验证主板固件
TPM 将计算得到的 BIOS 哈希值与预先存储的可信哈希值进行比较。如果两者相同,说明 BIOS 没有被篡改,是可信的;如果不同,TPM 会判定 BIOS 可能已被恶意修改,系统可能会采取相应的安全措施,如拒绝启动或发出警报。
信任传递至引导层
当主板固件通过验证后,信任从 TPM 传递到系统引导层。在这个阶段,TPM 会对系统引导程序(如 GRUB,Grand Unified Bootloader)进行度量和验证。同样,TPM 计算 GRUB 的哈希值,并与可信哈希值进行比较。如果 GRUB 通过验证,系统会继续加载操作系统内核,信任也随之传递到操作系统层面。
后续信任传递
操作系统内核加载完成后,会继续验证系统关键组件和服务的完整性,将信任进一步传递到整个系统。例如,验证系统库文件、驱动程序等,确保整个系统的启动过程是在可信的环境中进行的。
通过这种方式,可信根实体度量并验证主板固件和系统引导的可信性,将信任从硬件平台传递至引导层,最终建立起一个完整的信任链,保障计算机系统的安全性。