主题中讨论的其他器件: UNIFLASH
我们将 CC3220SF 用于我们的产品开发之一、我对启动过程、安全启动和加密有一些疑问。 问题以绿色标记。请尽早回答。
首先、我将开始闪烁。 我的目的是使用 Uniflash 工具生成签名和文件加密。
Uniflash 工具会加载到串行闪存中什么? 它是否还会将二进制文件签名存储到串行闪存中?
当二进制映像和20字节哈希被编程到串行闪存上时、为什么还需要一个哈希、为什么引导加载程序会计算该映像并将其存储在"/sys/mcuflashimghash.bin 中?
使用新的散列 SHA-1检查完整性时、已经与串行闪存中的二进制文件一起编程的20字节散列有何用途?
我指的是以下文件
http://www.ti.com/lit/ug/swru465/swru465.pdf
“引导加载程序计算串行闪存上的 SHA-1哈希并将其存储在文件“/sys/mcuflashimghash.bin”中。
同一文档中的以下语句令人困惑、它直接说前20字节散列用作检测串行闪存上新映像的标识符。
串行闪存文件/sys/mcuflashimg.bin 的前20字节散列部分既不会被引导加载程序复制也不会参与 SHA-1生成。 它用作检测串行闪存上新映像的标识符。 与先前存储的哈希不匹配会触发更新周期、并且传输过程会重复。
现在介绍安全启动
根据我的理解、启动时二进制的签名和解密被称为安全启动。
编程时或每次启动时、签名是何时验证的? 如果每次引导时都没有验证签名,则以下语句说明“安全文件仅在写入文件系统时才进行身份验证”,您如何才能说系统支持安全引导?
“使用 Secure SimpleLinkWi-Fi
设备(CC3X20S/SF)时,必须提供有效的代码签名证书。 受保护的文件只有在写入文件系统时才会进行身份验证。 sl_FsClose 调用(在写入安全且有符号的文件时)应包含证书的路径和文件签名,作为二进制‘C’数组。 处理 sl_FsClose 后、验证签名。 如果验证失败,则不会刷写文件。”
加密解密时如何进行? 同时传输到片上闪存?。 当我使用供应商密钥时,引导加载程序如何知道要解密的密钥?
根据我在每次启动时从下面的语句中了解到的、器件将通过计算片上二进制的哈希值来验证哈希值、并将其与串行闪存中存储的哈希值进行比较。 mu 理解正确还是会计算每次启动时的串行闪存哈希值、并将其与存储在"/sys/mcuflashimghash.bin "文件中的哈希值进行比较?
“CC3220SF 引导加载程序在每次从加电或休眠状态退出时,都会检查片上闪存上现有(并标记为有效)用户应用程序映像二进制文件的完整性,并与串行闪存上自动生成的映像 SHA-1 (在片上闪存的程序和更新阶段保存)进行对比。 如果不匹配,片上闪存将被整体擦除以保护用户应用程序二进制文件。”
谢谢、
Harish