变电站边缘 AI:安全启动与运行时完整性手册
调研日期:约 2026-10-25(Asia/Shanghai)
定位:站端边缘盒 Secure Boot / verified boot、dm-verity 或只读根、TPM/TEE(若有) 与 Mender A/B、模型签名仓、VLAN/管理口、密钥保管的可执行衔接;不进保护网。
衔接:edge-ai-model-signstore-mender-cookbook.md、edge-ai-gstreamer-ota-cheatsheet.md、edge-ai-vlan-network-isolation.md、edge-ai-mqtt-hardening-offline-buffer.md、edge-ai-observability-logging-metrics.md、edge-ai-d60-d90-acceptance-checklist.md、edge-ai-substation-gateway-bom.md。
声明:本文为边缘 AI 工程安全基线,不替代继电保护二次安规、站端安防细则或业主未公开规程。板级熔丝/OTP/厂商 HAB 细节标 unknown,须 BSP 厂商与安监终审。公开方案引用:U-Boot Verified Boot、FIT dm-verity、Mender Secure Boot/A/B、OP-TEE 概念级。
0. 一句话结论与红线
结论:信任链从(可选)硬件 RoT → 验签 bootloader → 验签内核/FIT → dm-verity 或 A/B+哈希只读根 → Agent/模型仓 Ed25519 验签;系统轨走 Mender A/B,模型轨走数据分区签名仓,分轨回滚;生产关调试口、密钥不出盒、管理口进 MGMT VLAN,永不进保护二层。
| 红线 ID | 禁止项 | 说明 |
|---|---|---|
| S1 | 禁止未验签模型上线 | 无 sig / 错签 / model.ver≠权重 SHA → 拒激活;对齐 D60-06、MODEL_VERIFY_FAIL |
| S2 | 禁止生产开调试口无审计 | UART/ADB/JTAG/串口 shell、未鉴权 SSH 密码登录默认关;临时开启须工单+审计日志+时限 |
| S3 | 密钥不出盒 | 模型/OTA/设备身份私钥不落 rootfs、不进 Git、不出站外拷贝;设备侧仅公钥或 TEE/TPM 内私钥 |
| S4 | 不替代二次安规 | Secure Boot ≠ 保护装置安全;AI 资产禁止进 PROT VLAN / 跳闸回路(N1、D60-09) |
| S5 | 禁止「只签内核、不保根」当生产完成态 | 无 dm-verity / 只读根 / A/B 完整性策略时,rootfs 可被改写绕过 Agent 验签;试点可分期,D90 须有书面缺口或落地 |
1. 信任分层(RoT → 模型仓)
[硬件 RoT 可选]
eFuse/OTP 公钥哈希 · TPM/fTPM · SoC HAB/EdgeLock(板级 unknown)
│ 验签下一阶段
▼
[Bootloader]
U-Boot Verified Boot:仅加载签名 FIT(kernel + dtb + initramfs/可选 filesystem)
│
▼
[内核 / Rootfs]
方案 A:dm-verity 只读根(Merkle 树;FIT 可带 dm-verity 元数据 → cmdline)
方案 B:Mender A/B 双根 + 启动成功标记;镜像构建时嵌入内容哈希/签名
│
▼
[用户态 Agent / 模型仓]
预置 model-verify.pub;Ed25519 验 manifest + 文件 SHA;仅 current 可推理
| 层 | 做什么 | 失败行为 | 公开参考 |
|---|---|---|---|
| L0 硬件 RoT | ROM/SPL 校验下一阶段签名;可选测度量进 TPM PCR | 不启动 | 厂商 Secure Boot 手册(具体熔丝位 unknown) |
| L1 Bootloader | U-Boot 校验 FIT 签名;拒绝未授权镜像 | 停在 U-Boot / 回退备用槽(若配置) | U-Boot Verified Boot |
| L2 内核+根 | dm-verity 挂载只读根;或 A/B 槽位完整性 | verity 失败→kernel panic/救援;A/B 失败→回滚 | FIT dm-verity;Mender Secure Boot 文档 |
| L3 Agent/模型 | Ed25519 + model.ver=权重 SHA-256 |
拒切 current;上报 MODEL_VERIFY_FAIL |
本系列签名仓手册 |
OP-TEE(概念级,可选):Trusted Application 验签加载;设备身份/解密密钥放安全世界;默认 TA 密钥必须换成自有密钥且私钥离线/HSM。无 TEE 的板卡可用「只读根 + 签名仓 + 禁调试」达试点基线;机密权重入 TEE 属增强项,unknown 是否本季必做。
分区建议(概念):boot(或 A/B FIT 分区)+ rootfsA + rootfsB + 独立 /data(模型/证据/缓冲) + 可选持久配置。社区实践强调:勿反复改写共享 boot 分区;FIT 与 rootfs 宜分槽(Mender+dm-verity 讨论见公开论坛)。精确扇区表 unknown,由 BSP 出。
2. 与 Mender A/B、模型分轨、回滚
| 轨 | 完整性手段 | 回滚路径 | 与安全启动关系 |
|---|---|---|---|
| 系统轨(Mender) | 签名 Artifact;A/B 切换;可选 Secure Boot 签 kernel/GRUB/U-Boot | 新槽启动/报到失败 → 自动回旧槽;不删 /data |
Mender 不替代 Secure Boot:须在镜像构建链中预先签好 boot 链组件后再打 Artifact(Mender Secure Boot) |
| 模型轨(签名仓) | Ed25519 manifest;current/previous |
健康检查失败 → 切 previous + reload;不改 rootfs |
公钥随系统镜像预置;权重只在 /data/models/store/<sha>/ |
硬规则(对齐签名仓手册):
- 未签名权重 禁止进 rootfs Artifact。
- 系统回滚不得误删已激活模型;模型回滚不得改写只读根。
- dm-verity 与 Mender 同用时,通常需 自定义 Update Module 下发「已签名 FIT + verity 根」——具体模块名/脚本 unknown,试点可先 A/B 只读挂载,再演进 verity。
- 坏签名模型演练:必须出现
MODEL_VERIFY_FAIL且 rootfs 版本不变(D90-05)。 - 坏 rootfs Artifact 演练:回滚后推理仍可用当前模型(D60-07 / D90-05)。
构建侧注意:Mender 文档写明 Secure Boot 与 Mender 架构独立——客户端会原样下发 Artifact 内二进制;若 boot 链需要签名,签名必须发生在打 Artifact 之前的镜像构建步骤,否则设备侧 verified boot 会拒载“合法下发但不验签”的内核。Yocto/meta-mender 场景下 GRUB/U-Boot 相关二进制同样要纳入签名集合(细节随是否启用 grub-efi 而变,以当期 docs.mender.io 为准)。
3. 密钥与证书
| 用途 | 算法建议 | 私钥位置 | 设备持有 | 轮换要点 |
|---|---|---|---|---|
| 模型签名 | Ed25519(与仓手册一致) | 离线签名机 / HSM / 隔离 CI | 仅 model-verify.pub(可多 key_id) |
新钥进下一系统镜像;旧钥保留验签窗口 N 天;吊销列入 deny key_id |
| Mender / 系统 OTA | 按 Mender Artifact 签名(RSA/ECDSA 等,以项目配置为准) | 构建签名环境 | 客户端信任的服务端/Artifact 公钥 | Artifact 签名钥与模型钥分轨、分保管;勿混用 |
| 设备身份(mTLS / MQTT) | ECDSA P-256 或项目统一 | 理想:TPM/TEE;最低:/data 权限 600 + 不可导出备份策略 |
设备证书+私钥(不出站) | 证书过期前轮换;吊销走 CRL/短时效;吊销列表同步通道 unknown(站内 PKI) |
| SSH 主机/用户 | Ed25519 | 运维侧个人钥;主机钥首次生成后钉死指纹 | authorized_keys;禁密码 |
人员离职删钥;主机指纹变更告警 |
保管红线:私钥不出盒、不进飞书/聊天、不进证据仓对象;生产构建机与日更模型签名机账号分离;CI 仅持短期令牌调 HSM(若有)。板载熔丝烧写步骤、是否双人授权:unknown,写入工单模板即可。
轮换节奏(可写入台账,日期自定):模型签名钥建议按季度或重大漏洞即时轮换;设备 mTLS 证书按站内 PKI 周期(常见 1 年,unknown 以业主为准);SSH 用户钥随人员变动即时删增。吊销后旧制品:已激活且哈希仍可信的模型可继续跑,新下载必须拒用被吊销 key_id。
4. 运行时加固
| 项 | 基线动作 | 验收证据 |
|---|---|---|
| 只读根 | rootfs ro 或 dm-verity;可写仅 /data、/tmp(tmpfs)、必要 overlay |
findmnt/mount 截图;故意写根失败 |
| 不可变配置 | 推理阈值、VLAN 角色、公钥、Schema 版本进镜像或签名配置包;现场改动走审计工单 | 配置基线哈希;与事件 schema_ver 一致 |
| SSH | 仅密钥;PasswordAuthentication no;监听 MGMT 口/VLAN;限源 IP(堡垒) |
sshd_config 脱敏导出;从业务 VLAN 连 SSH 应失败 |
| 调试口 | 生产关 ADB/未鉴权 console;U-Boot 中断需口令或熔丝关闭(板级 unknown) | 上电无开放 shell 录屏;例外工单号 |
| 审计日志 | auth、sudo、模型激活/回滚、OTA 槽切换、SSH 登录写入本地只追加日志,并进可观测性流水(对齐可观测性手册) | 故意错签/错 SSH 各一条可检索日志 |
| 网络 | 管理口 ≠ 相机/MQTT 业务口;OTA 仅白名单;零接入 PROT(VLAN 手册 N1–N3) | 口别标签照片 + ACL 表 |
4.1 启动与运行时自检(建议开机脚本)
生产镜像可在 Agent 启动前做只读断言(失败则告警、默认不进 prod 推理通道):
mount显示 rootfs 为ro或 verity 设备;/data可写。model-verify.pub指纹与出厂台账一致(sha256sum 对比)。current指向的 manifest 验签通过且model.ver等于主权重哈希。- SSH:
PasswordAuthentication no;监听地址仅 MGMT 网卡。 - 默认路由/防火墙:无通往 PROT 网段的路由;OTA 域名白名单非空。
以上检查结果写入本地审计日志与可选 MQTT telemetry(质量可标 ok/suspect),不得因自检失败去改保护侧任何对象。
4.2 回滚决策树(运维一页)
| 症状 | 先怀疑 | 动作 | 禁止 |
|---|---|---|---|
| 开机停在 U-Boot / 验签失败 | 错误 FIT、密钥未烧录、槽位写坏 | 切回上一启动槽或现场刷已知好 FIT(双人) | 为“先跑起来”关闭 verified boot |
| 新系统槽启动循环 | Mender 未 commit、驱动不兼容 | 等自动回滚或人工标记旧槽 | 同时改模型软链“碰运气” |
MODEL_VERIFY_FAIL |
错签、缺文件、哈希漂移 | 保持 previous;查仓与 CI 签名机 |
手工拷未签名 .rknn 到 current |
| 推理 OOM / 健康检查失败 | 模型过大或 Agent 回归 | 模型轨切 previous;系统轨不动 |
删 verity / 改 rw 根“腾地方” |
| 无法 SSH | 钥未登记或连错 VLAN | 经 MGMT 堡垒;核 authorized_keys |
临时开密码或把 SSH 暴露到 CAM |
5. 两周落地清单 + 验收门禁
5.1 两周清单(可并行)
| 日 | 动作 | 产出 |
|---|---|---|
| D1–2 | 盘点板卡:有无 Secure Boot/eFuse/TPM/TEE;确认 U-Boot/FIT 能力 | 《板级安全能力表》(unknown 列如实填) |
| D3–4 | 构建链:开启 FIT 签名验证(或等价);镜像嵌入 model-verify.pub |
签名构建 SOP;公钥指纹 |
| D5–6 | rootfs:只读挂载或 dm-verity PoC;/data 独立分区 |
分区表 + mount 证据 |
| D7–8 | Mender A/B 与签名仓分轨演练(坏 Artifact / 坏模型各一次) | 两份签字记录(对齐 D90-05) |
| D9–10 | SSH 密钥化、关密码、MGMT 限源;关生产调试口 | sshd/防火墙 diff |
| D11–12 | 密钥台账:模型/OTA/设备/SSH 四类;轮换与吊销草案 | 密钥台账 xlsx(无私钥) |
| D13–14 | 对照下方门禁自测;缺口写入 D90 风险清单 | 本文件勾选表 |
5.2 门禁(对齐 D60/D90、签名仓、VLAN)
| ID | 描述 | 级别 | □ |
|---|---|---|---|
| SB-01 | 未签名或错签模型无法成为 current;有 MODEL_VERIFY_FAIL(D60-06) |
否决 | □ |
| SB-02 | 系统 OTA 与模型轨分家;双回滚演练通过(D60-07、D90-05) | 否决 | □ |
| SB-03 | 生产 SSH 仅密钥、禁密码;管理口在 MGMT,非 CAM/MQ 混用(N3) | 否决 | □ |
| SB-04 | 无 AI 资产进保护二层(D60-09 / N1) | 否决 | □ |
| SB-05 | rootfs 只读或 verity;可写隔离在 /data |
否决(D90)/ 警告(D60 可记缺口) | □ |
| SB-06 | 模型/OTA 私钥不在设备、不在仓库;公钥指纹可审计(S3) | 否决 | □ |
| SB-07 | 调试口策略成文:默认关 + 例外工单 + 审计 | 警告→D90 升否决 | □ |
| SB-08 | boot 链验签(U-Boot verified / 厂商 Secure Boot)至少 PoC 或书面板级 unknown+排期 | 警告(无 RoT 板)/ 否决(宣称 Secure Boot 却未开) | □ |
6. 公开引用与 unknown
| 主题 | 公开入口 | 本文用法 |
|---|---|---|
| U-Boot Verified Boot | docs.u-boot-project.org …/verified-boot.html | L1 验签 FIT |
| FIT dm-verity | …/fit/dm-verity.html | L2 只读根 cmdline 生成 |
| Mender ↔ U-Boot / Secure Boot | docs.mender.io …/u-boot 、…/secure-boot | A/B 与签名构建衔接;不替代 Secure Boot |
| OP-TEE | optee.readthedocs.io(概念) | 可选 TEE/密钥;替换默认 TA 钥 |
| 模型 Ed25519 仓 | 本系列 edge-ai-model-signstore-mender-cookbook.md |
L3 |
明确 unknown(勿臆造):具体 SoC 熔丝位与烧写命令、厂商 HAB/OP-TEE HUK 实现、站内 PKI CRL 通道、Mender+verity 自定义 Update Module 成品名、U-Boot 关闭 console 的板级补丁。
7. 与系列文档的一页关系
Secure Boot / verity(本文)
│ 预置公钥、只读根
▼
Mender A/B ←→ 模型签名仓(分轨)
│ │
▼ ▼
VLAN MGMT/OTA Agent 验签 → 推理
│ │
└──── 禁止进 PROT / 跳闸 ────┘
验收总表见 edge-ai-d60-d90-acceptance-checklist.md;网络红线见 VLAN 手册;事件与 model.ver 见 Schema 验收。
全文完。仅落盘;板级细节以 BSP/安监终审为准。