保护物联网设备免受安全威胁是优质产品的核心要素。Silicon Labs 通过在 Series 2 产品中引入 Secure Engine(安全引擎),显著增强了安全性供给。Secure Engine 是一个防篡改组件,用于安全地存储敏感数据和密钥、执行加密功能并提供安全服务。基于 RTSL(Root of Trust and Secure Loader)的 Secure Boot 确保只有经过可信签名的固件才能在设备上运行。Documentation Index
Fetch the complete documentation index at: https://mintlify.com/dsyx/docs.silabs.com_zh/llms.txt
Use this file to discover all available pages before exploring further.
Series 2 设备安全特性概述
Secure Engine(SE)
Series 2 设备中的安全引擎,负责安全引导、密钥存储和加密服务。可以是硬件实现(HSE)或虚拟实现(VSE)。
Secure Vault
在 SE 基础上提供额外安全特性,分为 High(SVH)、Mid(SVM)和 Base(SVB)三个等级,提供不同级别的保护。
Secure Boot
初始引导阶段从不可变存储器(ROM)执行代码,在被授权执行之前对固件进行身份验证,防止未受信任的映像运行。
Secure Debug Access Control
锁定调试端口访问以确保操作安全,并在授权实体需要时安全地解锁调试访问。
Secure Engine 类型
| 缩写 | 说明 |
|---|---|
| HSE | Hardware Secure Engine(硬件安全引擎) |
| VSE | Virtual Secure Engine(虚拟安全引擎) |
| SE | Secure Engine(泛指 HSE 或 VSE) |
Secure Vault 等级
| 等级 | SE 支持 | 包含特性 |
|---|---|---|
| Secure Vault High (SVH) | HSE only (HSE-SVH) | Secure Key Storage、Anti-Tamper Protection、Device Authentication |
| Secure Vault Mid (SVM) | HSE-SVM 或 VSE-SVM | Secure Boot、Secure Debug Access Control |
| Secure Vault Base (SVB) | N/A | 基础安全特性 |
Secure Boot 原理
信任根(Root of Trust)
Secure Boot 的本质是建立并维护信任链。信任链中的第一个链环是信任根,其安全强度在于不变性——信任根的固件来源于 ROM,Public Sign Key 也存储于 ROM 中。 在 Series 2 设备中,信任根在 ROM 中实现,Secure Engine 在 ROM 中运行代码,检查可升级的 GBL(Main Bootloader)的完整性和真实性。与 Series 1 设备不同,Series 1 的信任根(First-Stage Bootloader)位于闪存而非 ROM,且仅使用 CRC32 校验和(非签名)验证 Main Bootloader 的完整性。Series 2 提供了更强的硬件级安全保证。
两阶段引导设计
Series 1 和 Series 2 设备均使用两阶段引导设计:- 不可升级的第一阶段(信任根):Series 1 为 First-Stage Bootloader,Series 2 为 SE ROM
- 可升级的第二阶段(SSB/Main Bootloader):用于验证和升级 Application 固件
ECDSA-P256-SHA256 Secure Boot 流程
Series 1 设备流程
在 Series 1(SVB)设备上,Secure Boot 从闪存启动,GBL 第一阶段检查是否有针对第二阶段的升级待决,若已启用 Secure Boot,则 GBL 第二阶段在执行前检查 Application 映像的完整性和真实性。若完整性检查失败,程序控制权保留在 SSB 中。Series 2 HSE 设备流程
在 HSE-SVM 和 HSE-SVH 设备中,Secure Boot 源自安全协处理器(HSE)中的 ROM。Series 2 VSE 设备流程
在 VSE-SVM 设备中,主机 MCU(Cortex-M33)在复位后假定一个提升的安全状态,通过源自 ROM 的代码安全地自行引导,然后按照与 HSE 类似的流程验证 GBL 和 Application。基于证书的 Secure Boot(Certificate-Based Secure Boot)
Certificate-Based Secure Boot 使用密钥委托来最小化 Private Sign Key 的暴露。证书结构包含:| 字段 | 说明 |
|---|---|
| 结构版本 | 证书结构的版本号 |
| 公钥 | ECDSA-P256 公钥(X 和 Y 坐标拼接),用于验证映像 |
| 证书版本 | 当前运行证书的版本(支持证书吊销) |
| 签名 | 对公钥和证书版本的 ECDSA-P256 签名 |
- 标准证书模式
- 高级证书模式
SE 验证包含证书的 GBL,GBL 使用证书中的公钥验证 Application。信任链:SE OTP 公钥 → GBL 证书 → Application 签名。
Secure Loader
在 Series 2 设备中,Secure Loader 是预加载到芯片中的固件,由 Silicon Labs 维护并通过安全升级包部署,功能上等同于 Series 1 设备上的第一阶段 GBL。 Secure Loader 在执行升级操作前,会验证暂存映像的真实性和完整性。要求:- 暂存映像驻留在芯片上
- 暂存映像不得与目标地址范围重叠
- 片外来源的固件映像需由 Application 或 SSB 暂存后,才能调用 Secure Loader 执行升级
密钥配置
关键密钥类型
| 密钥名称 | 由客户编程 | 用途 |
|---|---|---|
| Public Sign Key | 是 | Secure Boot 二进制认证和/或 OTA 升级载荷认证 |
| Public Command Key | 是 | Secure Debug Unlock 或 Disable Tamper 命令认证 |
| OTA Decryption Key(GBL Decryption Key) | 是 | 解密用于固件升级的 GBL 载荷 |
| Attestation Key(Private Device Key) | 否 | 设备安全身份认证 |
配置 Public Sign Key 与启用 Secure Boot
- 使用 Simplicity Commander
- 使用 SE Manager 示例
Secure Boot 配置选项说明:
| 选项 | 说明 |
|---|---|
SECURE_BOOT_ENABLE | 启用后,SE 在释放 Cortex-M33 之前验证主机映像签名 |
SECURE_BOOT_VERIFY_CERTIFICATE | 启用后,要求基于证书的映像签名 |
SECURE_BOOT_ANTI_ROLLBACK | 启用后,防止升级到版本低于当前版本的映像 |
SECURE_BOOT_PAGE_LOCK_NARROW | 锁定经 Secure Boot 验证的闪存页(不含签名所在最后一页,若不在页边界) |
SECURE_BOOT_PAGE_LOCK_FULL | 锁定经 Secure Boot 验证的闪存页(含签名所在最后一页) |
为 Secure Boot 签名映像
ECDSA-P256-SHA256 签名流程
生成未签名的 GBL 映像
在 Simplicity Studio 中,通过 Bootloader Core 软件组件生成 Bootloader 项目,构建获得未签名的 GBL 映像(
.s37 文件)。生成未签名的 Application 映像
构建 Application 项目,在 Simplicity Studio 的 Project Properties 中配置 Post-build 步骤生成
.s37 文件。基于证书的签名流程
在启用 Secure Boot 的设备上调试
在启用 Secure Boot 的设备上进行调试,需要确保烧录到设备的 Application 映像是已签名的。Simplicity IDE 配置
在项目属性的 C/C++ Build → Settings → Build Steps → Post-build steps 中添加签名命令:Secure Boot 失败时的设备恢复
- 标准调试解锁状态
- 安全调试锁定状态
运行 若检测到 Secure Boot 失败,
security erasedevice 命令擦除设备,然后烧录正确签名的映像:commander flash 会在烧录前自动擦除设备:失败分析
| 状态 | Secure Boot 未启用 | Secure Boot 已启用 |
|---|---|---|
| 标准调试解锁 | 无需设备擦除 | 无需设备擦除,但需要正确签名的映像 |
| 标准调试锁定 | 需要设备擦除 | 需要设备擦除和正确签名的映像 |
| 永久调试锁定 | 无法进行失败分析 | 无法进行失败分析 |
| 安全调试锁定 | 需要 Debug Unlock Token | 需要 Debug Unlock Token 和正确签名的映像 |