华为海思芯片的 Secure Boot 机制是一种确保设备启动过程安全可信的技术,以下是其具体介绍:
基本原理
- Secure Boot 的核心是通过数字签名和密钥验证,确保设备启动时加载的每一个软件组件都是经过授权和未被篡改的,从而建立起从硬件到软件的信任链,防止恶意软件或未经授权的代码在启动过程中被加载运行.
涉及的关键组件
- Boot ROM:芯片上电后,首先由固化在芯片内部的 Boot ROM 开始执行。它包含了最基础的启动代码和 Secure Boot 的相关逻辑,负责初始化芯片的基本硬件环境,并启动后续的启动流程.
- OTP(One Time Programmable)存储器:用于存储一些关键的安全信息,如 Secure Boot 的标志位、密钥等。这些信息在芯片生产后一般不可修改,保证了其安全性和可靠性。以 Hi3519AV100/Hi3556AV100 V100 芯片为例,其供 CPU 使用的 OTP 区域存储着 RSA 的公钥 hash 和 AES 的 key 等用于验签的信息.
- 密钥对:包括用于签名的私钥和用于验证签名的公钥。私钥由华为严格保密,用于对启动相关的软件组件进行签名;公钥则被嵌入到芯片的安全存储区域或在启动过程中被安全地加载,用于验证软件组件的签名是否合法.
启动流程中的 Secure Boot 机制
- 启动初期:芯片上电后,CPU 执行 Boot ROM 中的代码,该代码会读取 OTP 中的 Secure Boot 标志位,以确定是否开启 Secure Boot 功能。若开启,则进入 Secure Boot 流程.
- 验签过程:在 Secure Boot 流程中,会对关键的启动组件,如 Hi3519AV100/Hi3556AV100 V100 芯片中的 ddr_init.bin 和 uboot.bin 进行签名验证。首先计算组件的哈希值,然后使用存储在 OTP 中的公钥对其携带的数字签名进行解密,将解密得到的哈希值与计算得到的哈希值进行比对,若两者一致,则说明组件未被篡改,验证通过后才会继续加载和执行后续的启动组件.
- 后续启动阶段的扩展保护:对于一些芯片,如 Hi3519AV100/Hi3556AV100 V100 芯片,虽然 Secure Boot 本身只保护了 ddr_init.bin 和 uboot.bin,但可以通过在 uboot 中加入对后续分区的校验程序,使用 RSA 算法对 kernel、rootfs 等后续分区进行签名,并将公钥的 hash 保存起来,在 uboot 中验证后续分区的签名,从而实现对整个启动过程的更全面保护.
- 异常处理:如果在签名验证过程中发现签名不匹配、哈希值不一致等异常情况,芯片会立即触发相应的异常处理机制,如停止设备启动,并向用户或管理员发出警报通知,提示设备可能存在安全风险。