安全启动
概述
MTT E300 是一款集成安全启动功能的系统级芯片(SoC),旨在为嵌入式系统、物联网设备和边缘计算平台提供硬件级的安全启动保障。该芯片有效解决了设备在启动阶段面临的固件篡改、未授权代码执行、启动链攻击等安全挑战。通过集成在 SoC 内部的安全启动引擎,MTT E300 确保系统从电源上电到操作系统加载前的整个启动过程都是可信且完整的。
功能描述
MTT E300 通过内置的硬件信任根(RootPK)和可配置的验证策略,逐级验证引导加载程序和镜像的完整性与真实性,防止恶意或未经授权的代码在启动过程中执行。
运行原理
MTT E300 的安全启动功能基于 SoC 内部的专用安全子系统和加解密引擎(Trusted Engine)实现,采用密码学签名验签机制和一次性可编程存储器(eFuse)。芯片出厂时,eFuse 中已写入 SoC 启动 ROM 所使用的硬件信任根(RootPK)和 Secure Boot 使能位。
芯片上电时,启动 ROM 会执行以下验证流程:
- 加载 BL2 证书并验证其签名
- 验证 BL2 镜像的完整性
- BL2 启动后,依次加载
SCP_BL2、BL31、BL32、BL33等镜像 - 在加载每个镜像前,先加载其对应的证书,并验证证书完整性和镜像完整性
信任链
证书信任链(Key Cert 或 Key Content Cert):
- 每个证书将其公钥存放在父级证书中
- 当父级无证书时,表示父级为
RootPK,其 Hash 值已写入eFuse中
镜像信任链(BL2、SCP_BL2、BL31、BL32、BL33 等):
- 将各镜像的 Hash 值存放在父级证书中
验签关系说明:
- 黄色:验签所使用的公钥(
Public Key) - 深蓝色:Key Cert,主要用于存放子级证书的公钥
- 浅蓝色:Key Content Cert,主要用于存放子级镜像的 Hash 值
- 紫色:各启动阶段的镜像(
Image)
关键特性
- BootROM 固化:安全启动逻辑固化在 SoC 内部,不可绕过
- 镜像防篡改:确保引导加载程序和镜像的完整性
- 快速验证加速:通过加解密引擎(
Trusted Engine)实 现高效的验证过程
快速开始
以下说明均为用户更新 BL33 证书的操作步骤。
每个版本更新都会发布新的 fip.bin 文件。该文件中的 BL33 镜像已进行签名,但使用的是随机公钥。因此,需要更新自己的 BL33 镜像和证书,以确保 BL33 镜像不被篡改。
准备工作
用户更新 BL33 镜像证书公钥的操作步骤如下:
- 生成私钥并妥善保存
- 将我司新发布的
fip.bin文件放置到 Yocto 指定目录 - 编译生成 WIC 文件,其中包含 BL33 镜像证书(存放用户私钥对应的公钥)
- 由于父级证书未更新,需将 WIC 文件提交至我司签名服务器进行签名
- 签名完成后生成两个文件:
wic和sign-fip.binwic文件可直接烧录运行sign-fip.bin可重命名为fip.bin,用于后续生成包含用户公钥证书的完整签名 WIC 文件
步骤 1:密钥配置
# 进入工具目录
cd m1000-soc-sw-sdk/fip-prebuild
# 生成密钥对
./cert_create -n -k --key-alg rsa --key-size 2048 --nt-fw-key pri_user.pem
# 在 generate_wic.sh 中设置 PRIKEY_PATH 变量,指向 pri_user.pem 文件路径
执行上述命令后可能出现 "ERROR: Key filename not specified. \n ERROR: Cannot save xxx key" 错误,请忽略此错误信息。
步骤 2:复制新发布的 fip.bin 到 SDK
# fip.bin 文件在每次 release 版本更新时都会更新
cp fip.bin m1000-soc-sw-sdk/fip-prebuild/fip.bin
步骤 3:编译 WIC 文件
# 进入编译环境
source setup_env.sh build
# 生成 WIC 文件,并将生成的 WIC 文件提交给我司 QA 团队上传至编译服务器进行签名
generate_wic.sh
步骤 4:更新包含用户公钥的 fip.bin
签名服务器处理完成后,会生成 wic 和 sign-fip.bin 两个文件。其中 wic 是经过完整签名的文件,可直接烧录运行。
# 将 sign-fip.bin 重命名为 fip.bin 并更新到 SDK 目录
cp sign-fip.bin m1000-soc-sw-sdk/fip-prebuild/fip.bin
名词解释
- SoC(System on Chip):集成处理器、内存、外设和安全功能的单一芯片
- 硬件信任根(RootPK):芯片内部不可篡改的安全起点
- eFuse:一次性可编程存储器,用于安全存储密钥和配置
- 启动链(Boot Chain):从芯片上电到 BL33 运行的完整启动序列
- FIP(Firmware Image Package):固件镜像包,包含镜像、证书和启动参数

