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),禁止任何修改。3,SecureBoot功能配置(全局配置项70-71)bit功能描述15-12指定存储验签公钥的sotID。(pubkey_sotID)11-08指定存储签名值或者摘要的slotID,分别对应FullSig,FullDig模式有效(store_sotID)7-5默认04摘要加密随机性要求。1,表示输入摘要必须通过真随机nonce加密,且要求SecureBoot返回MAC;0,此时输入摘要否加密取决于SecureBoot命令,加密也无随机性限制。3关联密钥永久使能。只有SecureBoot命令成功,置位PersistentDisable的密钥才能使用。2默认01-000:SecureBoot功能关闭,不支持01:FullBoth模式,要求摘要和签名同时下发10:FullSig模式,首次SecureBoot执行成功后,签名存于store_sotID指定槽11:FullDig模式,首次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 中 “公钥易被替换、验证易被绕过” 的痛点,为物联网设备提供了从启动阶段开始的 “根安全保障”,广泛适用于智能家居、工业控制、医疗设备等对固件安全性要求极高的场景。
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),禁止任何修改。3,SecureBoot功能配置(全局配置项70-71)bit功能描述15-12指定存储验签公钥的sotID。(pubkey_sotID)11-08指定存储签名值或者摘要的slotID,分别对应FullSig,FullDig模式有效(store_sotID)7-5默认04摘要加密随机性要求。1,表示输入摘要必须通过真随机nonce加密,且要求SecureBoot返回MAC;0,此时输入摘要否加密取决于SecureBoot命令,加密也无随机性限制。3关联密钥永久使能。只有SecureBoot命令成功,置位PersistentDisable的密钥才能使用。2默认01-000:SecureBoot功能关闭,不支持01:FullBoth模式,要求摘要和签名同时下发10:FullSig模式,首次SecureBoot执行成功后,签名存于store_sotID指定槽11:FullDig模式,首次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 中 “公钥易被替换、验证易被绕过” 的痛点,为物联网设备提供了从启动阶段开始的 “根安全保障”,广泛适用于智能家居、工业控制、医疗设备等对固件安全性要求极高的场景。