资讯动态

KNECC608 中 SecureBoot 机制详解

发布时间:2026/10/21 1:43:18 来源:尧图企业网站定制
KNECC608中SecureBoot 本质是 “应用固件签名验证机制”功能兼容ATECC608B。核心逻辑是设备厂商在运行其主机应用固件前在BOOT阶段用 “信任的私钥”--固化的32字节随机数 对其应用固件摘要进行签名由存储其对应公钥的从端设备进行验证辨认真伪。主端在BOOT阶段下发SecureBoot指令后KNECC608芯片从端用预存的 “验证公钥” 对主端应用固件的签名和/或HASH值进行验证 —— 只有签名合法证明固件来自授权方或哈希值匹配证明未被篡改主机跳出BOOT并允许其主机应用固件执行否则触发安全锁死如禁止启动、进入恢复模式。该功能强调验证主端固件应用程序的合法性运行于BOOT阶段主端对从端的认证可以通过单独的MAC命令08 指令认证实现运行于应用程序阶段。一、 SecureBoot 密钥对配置1签名私钥 与 验签公钥SecureBoot 的安全性依赖于非对称密钥对通常采用 ECC P-256 算法密钥类型持有者存储位置 / 方式核心作用签名私钥设备厂商 / CA离线存储如硬件安全模块 HSM、加密服务器或者秘密存储于BOOT固件且无法导出对发布的应用固件计算摘要并对其进行签名验签公钥安全芯片KNECC608“安全密钥槽”配置为可读禁改或者禁读禁改验证固件签名的合法性确认主机运行应用固件来源可信合法。2公钥属性配置存储公钥的数据槽slot08~slot15择其一如slot09通过slotConfig,keyConfig配置为ECC公钥数据锁定后禁止更新或者公钥写入后单独独立锁定(SlocLocked)禁止任何修改。3SecureBoot功能配置全局配置项70-71bit功能描述15-12指定存储验签公钥的sotID。pubkey_sotID11-08指定存储签名值或者摘要的slotID,分别对应FullSig,FullDig模式有效(store_sotID)7-5默认04摘要加密随机性要求。1表示输入摘要必须通过真随机nonce加密且要求SecureBoot返回MAC;0,此时输入摘要否加密取决于SecureBoot命令加密也无随机性限制。3关联密钥永久使能。只有SecureBoot命令成功置位PersistentDisable的密钥才能使用。2默认01-000SecureBoot功能关闭不支持01FullBoth模式要求摘要和签名同时下发10FullSig模式首次SecureBoot执行成功后签名存于store_sotID指定槽11FullDig模式首次SecureBoot执行成功后摘要存于store_sotID指定槽二、SecureBoot 完整流程从设备BOOT启动到设备应用固件被SecureBoot 命令验证激活流程可分为激活前的签名阶段和设备上电后的启动验证阶段两阶段通过 “固件签名 - 验证” 闭环确保安全。阶段 1应用固件激活前的 “签名预处理”厂商侧应用固件激活前需对固件进行签名处理生成 “可被验证的固件包”步骤如下固件哈希计算对应用固件如 MCU 的二进制镜像文件进行 SHA-256 哈希运算得到 32 字节的 “固件哈希值”哈希值唯一对应固件内容任何微小修改都会导致哈希值变化私钥签名BOOT启动固件用 “签名私钥” 对应用固件哈希值进行 ECDSA 签名生成 64 字节的 “应用固件签名值”包含 R 和 S 参数对应 ECC 签名格式固件包封装将 “应用固件 应用固件哈希值 应用固件签名值” 打包为 “SecureBoot 固件包”其中 “应用固件哈希值 应用固件签名值” 通常作为 “固件头部” 附加在应用固件前方便BOOT启动时提取。其中的“固件头部”为认证的准备材料。阶段 2设备上电后的 “启动验证”设备侧设备上电后主控 MCU如 Microchip PIC/AVR、ARM Cortex-M、STM32系列不会直接执行应用固件而是BOOT固件先触发 KNECC608的 SecureBoot 验证流程步骤如下步骤 1启动初始化与固件加载设备上电主控 MCU 先进入 “安全启动模式”运行BOOT固件而非直接运行应用固件通过 I²C接口与 KNECC608建立通信主控BOOT固件 从存储介质如 Flash、EEPROM中读取 “SecureBoot 固件包”分离出 “应用固件”“应用固件哈希值”“应用固件签名值” 三个部分。步骤 2安全芯片硬件验证签名主控 BOOT固件 将 “应用固件哈希值” 和 “应用固件签名值” 发送给 KNECC608由芯片完成核心验证避免主控MCU应用固件被注入被篡改导致验证失效芯片接收验证参数KNECC608通过 “验证指令Verify Command” 接收输入待验证的哈希值32 字节即应用固件哈希值签名值64 字节即应用固件签名值验证公钥所在的密钥槽如 Slot 9预存了厂商的验证公钥。内部签名验证KNECC608从指定密钥槽读取验证公钥调用芯片内置的 “ECDSA 验签引擎”用验证公钥对 “应用固件哈希值” 和 “应用固件签名值” 进行验证 —— 核心是检查 “该签名是否由与验证公钥对应的私钥生成”即确认固件来自授权厂商。哈希一致性校验可选增强步骤为防止 “固件包中的哈希值被篡改”部分场景下会增加一层验证主控 BOOT固件 将 “应用固件” 发送给 KNECC608芯片通过内置 SHA-256 引擎重新计算固件哈希值认证效率偏低主控 BOOT固件对比本产品KNECC608芯片 “重新计算的哈希值” 与 “固件包中的哈希值”若一致则确认固件未被篡改否则认为MCU固件不安全终止后续操作。4.推荐加密输入和返回MAC方式验签为防止假冒安全芯片滥竽充数总是返回验证通过或者非法弄到验签公钥安全芯片存储的验签公钥没有配置为禁止读出都能欺骗启动BOOT验证通过。故推荐SecureBoot 功能配置bit4置1采用IO保护密钥的MAC认证模式实现单指令的双向认证认证效率高安全此处暂不详细展开需要使能IO保护功能和IO保护密钥配置。步骤 3结果反馈与启动决策若验证通过签名合法且哈希一致KNECC608向主控 MCU 返回 “验证成功” 响应如特定状态码主控 MCU 接收到成功信号后加载并执行应用固件设备进入正常工作模式。若验证失败签名非法或哈希不匹配KNECC608返回 “验证失败” 响应主控BOOT固件触发安全策略 —— 常见措施包括禁止应用固件执行、点亮错误指示灯、锁定 Flash 写入权限、通过硬件引脚触发设备复位或进入 “恢复模式”仅允许通过特定安全通道更新固件。总结SecureBoot 机制通过 “厂商私钥签名固件→芯片公钥验证签名→硬件级哈希校验” 的闭环确保设备启动时仅运行授权且未篡改的固件。其核心价值在于用硬件安全特性解决了软件级 SecureBoot 中 “公钥易被替换、验证易被绕过” 的痛点为物联网设备提供了从启动阶段开始的 “根安全保障”广泛适用于智能家居、工业控制、医疗设备等对固件安全性要求极高的场景。

读完文章,也想定制专属网站?

尧图设计师 24 小时内与您沟通定制方案

免费获取报价 →
↑