华为海思芯片安全启动的技术原理主要包括以下几个方面:
信任根与固化代码
- 芯片内部固化的代码作为信任根,是安全启动的基础。如 BootROM 中的代码,在芯片生产时就被写入且不可更改,CPU 上电后首先执行这些固化代码,它拥有最高的执行权限,负责初始化安全启动机制及加载相关密钥等.
建立信任链
- 从芯片上电开始,安全启动机制建立起一条信任链。每一级启动镜像都由前一级镜像进行合法性验证,像链条一样将整个启动流程的信任关系连接起来,只要保证第一级镜像是合法的,后续各级镜像的合法性就可依次得到保证,从而确保整个系统的可信性。例如,BootROM 会验证引导加载器(如 SPL 等)的合法性,引导加载器再验证操作系统内核等后续启动镜像的合法性.
镜像签名验证与完整性校验
- 签名验证:使用非对称加密算法,如 RSA 或 ECC,设备制造商使用私钥对固件镜像进行签名,签名信息会附加在固件文件中。而芯片内部则存储着对应的公钥,在启动时,芯片会使用公钥对固件的签名进行验证,只有签名验证通过的固件才会被认为是合法的、来自官方且未被篡改的,从而防止恶意软件通过篡改固件来入侵系统.
- 完整性校验:通过消息摘要算法,如 SHA256、SHA512 等,计算固件镜像的哈希值,并将其与预先存储的正确哈希值进行比对,以验证固件的完整性。若哈希值一致,则说明固件未被篡改;若不一致,则启动失败,从而确保了固件的完整性和真实性.
密钥管理与保护
- 安全存储:涉及到的密钥包括用于签名验证的公钥和私钥等,这些密钥会被安全地存储在芯片内部的特定区域,如 OTP(One Time Programmable)存储器或 efuse 中。OTP 具有写入后不可更改的特性,efuse 则是一种一次性编程存储模块,其比特一旦烧写为 0 就无法再改变,保证了密钥的安全性和完整性,防止攻击者轻易获取或篡改密钥.
- CPU 专用访问:部分存储密钥的区域仅供 CPU 访问,进一步增强了密钥的保密性。即使攻击者能够物理接触到设备,也无法直接读取这些密钥,从而确保只有芯片的 CPU 能够使用密钥进行合法的验证操作.