概述
安全启动(Secure Boot)是保障物联网设备安全的关键技术,其核心目的是确保设备只运行经过授权的固件,防止恶意代码植入或固件被非法篡改。 核心方法是利用非对称加密的私钥签名、公钥验签技术:开发者使用私钥对固件进行签名;芯片在启动时使用公钥来验证签名,从而确保固件的完整性和真实性。
当设备上电启动时,芯片内部固化的 Boot ROM 代码会自动检查即将运行的固件是否拥有合法的数字签名: 验证通过则确认固件来源可信,系统继续执行后续启动流程;验证失败则认为固件不可信,清除敏感状态并终止启动。
这一过程通过"信任链(Chain of Trust)"机制实现——信任关系从不可篡改的硬件(ROM)开始,通过逐级验签延伸至最终的应用固件。从而确保在整个运行周期内,所有的固件都是可信的。
Ameba 系列 IC 支持不同的签名算法:
算法种类 |
算法参数 |
|---|---|
EdDSA |
ed25519 |
算法种类 |
算法参数 |
|---|---|
EdDSA |
ed25519 |
ECDSA |
secp192r1、secp224r1、secp256r1、bp256r1、secp192k1、 secp224k1、secp256k1 |
算法种类 |
算法参数 |
|---|---|
EdDSA |
ed25519 |
ECDSA |
secp192r1、secp224r1、secp256r1、bp256r1、secp192k1、 secp224k1、secp256k1 |
算法种类 |
算法参数 |
|---|---|
EdDSA |
ed25519 |
ECDSA |
secp192r1、secp224r1、secp256r1、bp256r1、secp192k1、 secp224k1、secp256k1 |
算法种类 |
算法参数 |
|---|---|
EdDSA |
ed25519 |
ECDSA |
secp192r1、secp224r1、secp256r1、bp256r1、secp192k1、 secp224k1、secp256k1 |
算法种类 |
算法参数 |
|---|---|
EdDSA |
ed25519 |
ECDSA |
secp192r1、secp224r1、secp256r1、bp256r1、secp192k1、 secp224k1、secp256k1 |
算法种类 |
算法参数 |
|---|---|
EdDSA |
ed25519 |
ECDSA |
secp192r1、secp224r1、secp256r1、bp256r1、secp192k1、 secp224k1、secp256k1 |
了解 Ameba 系列 IC 支持的签名算法后,下面介绍安全启动的原理与完整流程。
安全启动原理与流程
安全启动从 Boot ROM + OTP 构成的 ROT 开始,逐级传递。下图展示了完整的安全启动使用过程:
安全启动涉及开发、量产、运行三个环节,由不同的参与者在不同时间完成:
开发阶段(开发者完成):
生成非对称密钥对:私钥必须严格保密,并计算公钥哈希值。
生成签名固件:使用私钥对原固件进行数字签名,生成包含公钥、签名、原固件哈希等元数据的 Manifest。Manifest 与原固件组合生成签名固件。
量产阶段(产线完成):
烧录公钥哈希值与使能位:将开发阶段生成的公钥哈希值烧录到芯片 OTP 的固定地址。同时烧录安全启动使能位,启用安全启动功能。
烧录签名固件:将开发阶段生成的签名固件烧录到芯片的 Flash 存储中。
运行阶段(芯片执行):设备上电后,Boot ROM 基于 OTP 中的公钥哈希,逐级验证各级固件的签名与完整性。验证通过则继续启动,验证失败则清除敏感信息并终止启动。
安全启动解决方案
Ameba SDK 提供完整的开箱即用安全启动解决方案。所有复杂的签名验签机制均已实现在 SDK 中, 开发者无需自行编写代码,只需要根据用户指南进行配置 SDK。 下图展示了芯片多级启动中的验签流程:
Ameba 系列 IC 采用多级启动流程,依次执行以下三个独立固件:
第一阶段 - Boot ROM:设备上电后首先执行的是芯片内部 ROM ,物理上无法篡改。Boot ROM 从 Flash 读取 Bootloader 及其 Manifest,使用 OTP 公钥哈希验证 Manifest 中的公钥和签名。然后验证 Manifest 中存储的 Bootloader 固件哈希,验证通过后跳转执行 Bootloader,失败则清除敏感状态并终止启动。
第二阶段 - Bootloader:从 Flash 加载的引导程序,负责后续固件的加载与安全验证。Bootloader 首先验证密钥证书(Key Certificate)的签名。证书中包含应用固件的公钥哈希,还允许新增多组自定义公钥哈希值。验证通过后,Bootloader 从证书中提取用于验证应用固件的公钥哈希,再使用该公钥哈希验证应用固件的 Manifest,最后计算并对比应用固件的哈希值。
第三阶段 - Application:直接运行的用户应用程序,不负责固件验证。
前两个启动阶段都是执行在 Arm 安全世界。与单级验证相比,Ameba 采用的三级验证架构具备以下优势:
密钥隔离:Bootloader 和应用固件使用不同的密钥对,即使应用固件密钥泄露,Bootloader 仍然安全。
灵活更新:应用固件密钥存储在证书中,更新应用密钥无需修改 OTP。
权限分离:开发者可以维护应用密钥,而 OEM 厂商控制 Bootloader 密钥,实现权限分离。