4. 保护架构概览

电源控制固件一旦被篡改,后果往往不是“设备重启”这么简单:输出过压、限流阈值被改写、保护逻辑被绕过,都可能直接损坏功率级或负载。因此,保护架构不能只靠一个“加密开关”,而应是一套从芯片内部到应用逻辑逐层收口的体系。本节用分层模型把保护能力拆成四个平面:信任根、安全启动、运行时保护、恢复与审计,并说明它们之间的依赖关系。

核心结论:信任根是“不可变的起点”,安全启动是“把信任逐级传递到应用”,运行时保护是“在系统运行中持续验证关键状态”,恢复与审计是“出错后仍能回到可信状态并留下证据”。四层缺一不可,且下层被破坏时上层无法独立成立。

一、分层模型:从硅片到控制环

电源控制固件的保护对象不是单一镜像,而是由多个执行阶段和多个存储区域组成的链条。典型的分层模型如下:

  • L0 硬件信任根:芯片内部的 ROM、OTP/eFuse、安全引擎、时钟与复位控制器。该层不可修改,负责验证第一段可执行代码。
  • L1 引导加载层:BootROM 或一级引导,校验二级引导的签名与版本,建立初始安全上下文。
  • L2 固件运行层:电源控制应用、保护参数表、校准数据、通信协议栈。该层是攻击者最常瞄准的目标。
  • L3 运行时监控层:看门狗、时钟监控、ADC 合理性检查、PWM 输出封锁、参数范围校验。
  • L4 恢复与审计层:双分区回滚、安全日志、故障快照、远程证明。

分层的关键不是“层数多”,而是每一层只信任下一层经过验证的结果。如果 L2 直接读取未校验的参数区,那么 L1 做得再严密也会被绕过。

电源控制固件保护架构:四层信任传递 L0 硬件信任根 BootROM · OTP/eFuse · 安全引擎 · 时钟/复位 · 不可修改的根公钥哈希 不可变 · 只读 L1 引导加载层 一级引导 · 签名校验 · 版本防回滚 · 建立安全上下文 · 跳转到应用 校验通过才放行 L2 固件运行层 电源控制应用 · 保护参数表 · 校准数据 · 通信协议栈 · 控制环 攻击面最大 L3 运行时监控层 看门狗 · 时钟监控 · ADC 合理性 · PWM 封锁 · 参数范围校验 · 栈保护 持续验证 L4 恢复与审计层 双分区回滚 · 安全日志 · 故障快照 · 远程证明 · 密钥吊销 信任逐级传递

二、信任根:不可变的起点

信任根(Root of Trust, RoT)是整个保护架构的锚点。它通常由三部分组成:

  1. 不可变代码:芯片出厂时固化的 BootROM,负责最初始的签名验证。
  2. 不可变数据:OTP 或 eFuse 中烧录的根公钥哈希、安全启动使能位、调试口锁定状态。
  3. 安全硬件:TRNG、AES/SHA 加速器、密钥存储区、内存保护单元。

信任根的设计原则是“最小且不可改”。一旦根公钥哈希被烧录,后续所有镜像都必须能追溯到该密钥。若使用可擦写的密钥区,攻击者只需一次物理访问就能替换信任根,整个链条随之失效。

工程提示:量产阶段应关闭调试接口并锁定 OTP 写保护。开发阶段可保留调试口,但必须通过生命周期状态位区分“开发”与“量产”,避免同一固件在两种状态下行为不一致。

三、安全启动:把信任传递到应用

安全启动的本质是“逐级校验、逐级跳转”。以典型的电源控制 MCU 为例,启动流程如下:

BootROM
  ├─ 读取 OTP 中的根公钥哈希
  ├─ 校验一级引导镜像签名(ECDSA-P256 / RSA-3072)
  ├─ 校验版本号,拒绝低于防回滚计数器的镜像
  └─ 跳转到一级引导

一级引导
  ├─ 校验应用镜像签名与完整性
  ├─ 校验保护参数表 CRC 与签名
  ├─ 初始化看门狗与时钟监控
  └─ 跳转到电源控制应用

电源控制应用
  ├─ 再次校验关键参数区
  ├─ 启动运行时监控任务
  └─ 进入控制环

安全启动的常见误区是“只校验应用镜像,不校验参数表”。在电源控制场景中,保护阈值、死区时间、软启动斜率等参数往往单独存放在数据区,如果该区域未纳入校验,攻击者可以只改参数而不改代码,照样绕过保护。

四、运行时保护:启动之后仍不放松

安全启动解决的是“启动那一刻可信”,但电源系统运行中仍面临电压毛刺、时钟漂移、内存位翻转、通信注入等威胁。运行时保护应覆盖以下检查点:

检查点 监控对象 异常响应
看门狗 控制任务心跳 复位并记录故障快照
时钟监控 系统时钟与 PWM 时钟 切换备用时钟或封锁输出
ADC 合理性 输出电压/电流采样 连续越界则进入安全关断
参数范围校验 保护阈值、斜率、死区 拒绝写入并告警
PWM 输出封锁 驱动级使能信号 硬件级快速关断
栈与内存保护 关键变量、返回地址 触发异常并复位

运行时保护的关键在于“响应速度”和“响应路径独立”。如果保护动作依赖被攻击者控制的主循环,那么保护本身也会被绕过。因此,PWM 封锁、过流比较器等应尽量由硬件或独立外设完成,固件只负责配置和记录。

五、案例与复盘:一次参数区未校验导致的过压

某数字电源项目在安全启动中只校验了应用代码,参数区使用独立 CRC 但未签名。攻击者通过通信接口写入一组被篡改的保护阈值,使过压保护点从 54V 提升到 60V。启动阶段一切正常,运行中 ADC 采样也未越界,直到负载突变时输出冲到 58V,功率级电容被击穿。

复盘结论有三点:

  • 参数区必须纳入信任链:保护阈值、死区、斜率等应作为“安全关键数据”参与签名校验。
  • 运行时写入需二次校验:任何修改保护参数的请求都应经过范围检查、权限校验和审计记录。
  • 硬件保护不可省略:独立比较器或 PWM 故障输入应在固件失效时仍能封锁输出。
常见误区:把“安全启动通过”等同于“系统安全”。安全启动只保证启动镜像可信,无法阻止运行时的参数篡改、通信注入和故障注入。分层模型的价值就在于每一层都承担独立的验证职责。

综上,电源控制固件保护架构应围绕“信任根不可变、安全启动逐级校验、运行时持续监控、恢复审计可回溯”四个层面展开。设计时先确定信任根边界,再定义启动链的校验对象,最后把运行时保护点映射到具体的硬件外设和任务上,才能形成真正可落地的保护体系。