如何为 IoT 设备实现安全启动(Secure Boot)和可信执行环境?
解读
面试官问“如何为 IoT 设备实现安全启动和可信执行环境”,并不是让你背诵 Android 手机那套 Verified Boot + TEE 流程,而是考察三件事:
- 能否把 Android 安全机制裁剪到 IoT 硬件(ROM≤128 MB、RAM≤256 MB、无 TEE 或只有轻量级安全岛);
- 是否熟悉国内芯片平台(瑞芯微、全志、海思、ASR、紫光展锐)的 Secure Boot fuse 方案与加密算法合规要求(国密 SM2/SM3/SM4);
- 能否给出“端到端”落地步骤:从编译服务器、产线烧录、远程 OTA 到失效回收,全部符合国内法规(《网络安全法》《个人信息保护法》《电子认证服务管理办法》)。
一句话:让面试官相信,给你一块板子,你能在两周内让它“上电只跑可信代码,敏感数据进安全世界”。
知识点
-
IoT-Android 裁剪层级
- AOSP → Android Things(已停更)→ 厂商自建“mini-Android”(Android 10 Go + 自定义 HAL)。
- 关闭 Java Framework 中不用的 ContentProvider、DownloadManager,把 SystemServer 拉到 32 个核心服务以内,减少 TCB(Trusted Computing Base)。
-
Secure Boot 链(国产芯片视角)
- BootROM(片内固化)→ SPL/TF-A(Trusted Firmware A)→ U-Boot → boot.img → dtbo → system.img。
- 每一级验下一段:RSA-2048/SM2 签名 + SHA-256/SM3 摘要;公钥 Hash 写 efuse,一次性烧录,国内俗称“熔丝”。
- 关闭串口下载、JTAG、fastboot oem unlock;设置 rollback fuse 防回滚。
-
可信执行环境(TEE)轻量化
- 若芯片带 ARM TrustZone,走 OP-TEE(开源)或 国密算法增强版 Tencent TEE OS;
- 若无 TrustZone,用“安全岛”RISC-V + 片内 SRAM 做国密加速器,Android 侧只留 CA(Client Application),TA(Trusted Application)跑在安全岛;
- 密钥体系:RPMB(Replay Protected Memory Block)存密钥,Android 侧无法直接读写;国密算法在 TEE 内完成 SM2 签名、SM4 加解密。
-
国内合规与证书
- 安全启动签名证书须通过工信部电子认证服务许可,Root CA 用国密双证书(签名证书 + 加密证书);
- OTA 升级包做 SM2 签名 + zip 压缩,升级前由 TEE 验签,避免“卡刷”绕过;
- 若设备收集用户数据(摄像头、语音),需通过 GDPR 同级备案 + 国密 SSL 通道上传。
-
Android 关键配置
- 打开 BOARD_AVB_ENABLE := true,配置 vbmeta.img 的 algorithm=SM2_SM3;
- 在 fstab 中给 /system、/vendor 添加 avb=sm2;
- 关闭 adb 默认授权,ro.adb.secure=1,ro.debuggable=0;
- SELinux 采用 strict 模式,neverallow 语句禁止 shell 访问 TEE 设备节点。
-
产线与生命周期
- 烧录站通过 HSM(硬件加密机)签发 per-device 密钥,写入 RPMB;
- 云端设备管理平台(阿里云 IoT、华为云 IoTDA)存设备公钥,用于后续 OTA 和身份认证;
- 失效回收:远程触发 TEE secure storage 格式化,再烧写“报废”标记,防止二手市场刷机再利用。
答案
“针对国内 128 MB Flash、256 MB RAM 的 IoT-Android 设备,我分三步落地安全启动与可信执行环境:
第一步,建立安全启动链。
选用瑞芯微 RK3566 为例,BootROM 已固化 SM2 公钥 Hash。编译时把 TF-A、U-Boot、boot.img、system.img 全部做 SM2+SM3 双签名,公钥证书链通过工信部许可的 CA 签发。产线用加密机一次性烧录 rollback index,关闭 fastboot 解锁与 JTAG,确保‘上电即验签,失败即停启’。
第二步,部署轻量化 TEE。
芯片带 TrustZone,我裁剪 OP-TEE 至 256 KB,只保留 GP TEE Internal API 与国密算法补丁。Android 侧通过 JNI 调用 TEE 的 CA,关键业务(摄像头人脸特征、支付密钥)全部在 TA 内完成 SM4 加密、SM2 签名,密钥只存 RPMB,Android 侧无法读取。若芯片无 TrustZone,则外挂 64 KB RISC-V 安全岛,通过 SPI Mailbox 与主核通信,协议头加 32-bit MAC 防重放。
第三步,打通 OTA 与合规。
服务器端用国密 SSL 隧道下发差分包,升级前由 TEE 验签 SM2 签名,验证版本号≥rollback index,否则拒绝。用户隐私数据先经 TEE SM4 加密,再通过国密 SSL 上传至阿里云 IoT,满足《个人信息保护法》第38 条跨境评估要求。设备回收时,云端下发‘安全清除’指令,TA 格式化 RPMB 并写入‘报废’标记,防止二手刷机。
两周内可交付:安全启动 0→1 启动时间增加 <200 ms,TEE 内存占用 <256 KB,国密算法性能 SM2 签名 120 次/秒,完全满足国内 IoT 项目验收与网安抽检要求。”
拓展思考
- 若客户要求“零成本不加安全芯片”,能否用 PUF(Physical Unclonable Function)+ 软件 TEE(如 Google 的 Trusty 模拟器)实现?性能与安全性如何平衡?
- 面对《信息安全技术 网络安全等级保护 2.0》中“物联网扩展要求”,如何把你的安全启动链映射到等保三级的“可信验证”控制点?需要补哪些文档与测评证据?
- 当设备已部署到海外(欧盟、北美),如何在同一固件里同时支持国密算法与国际算法(RSA/ECC),并满足当地加密出口管制(EAR、Wassenaar)?