This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

[参考译文] CC3235SF:验证我的供应商信任根和证书目录是否正常工作

Guru**** 2553450 points
Other Parts Discussed in Thread: LAUNCHXL-CC3235SF, UNIFLASH

请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

https://e2e.ti.com/support/wireless-connectivity/wi-fi-group/wifi/f/wi-fi-forum/1159682/cc3235sf-verifying-that-my-vendor-root-of-trust-and-cert-catalog-are-working

器件型号:CC3235SF
主题中讨论的其他器件: UNIFLASH

您好!

我最近使用供应商 OTP 和供应商证书目录对 LaunchXL-CC3235SF 进行了编程。  我按照"使用 SimpleLink WiFi 器件进行供应商器件身份验证"文档中的步骤创建证书目录和 OTP 文件。  然后、我使用包含供应商证书目录的 SLI 文件刷写了器件、并检查了"使用供应商证书目录"和"添加 OTP 文件"选项。  我添加了创建的 vendor_otp.in、并选择了成功完成的"Program Image"。

我想测试供应商 OTP 是否按预期工作、并执行以下测试:

1) 1)使用由信任私钥的供应商根签名的更新目录执行证书目录 OTA 更新。  我希望这会成功、确实如此。  

2) 2)使用未由信任私钥的供应商根签名的更新目录执行证书目录 OTA 更新。  我希望这失败了、但确实失败了。

3) 3)尝试使用 UniFlash 对器件进行编程、其中包含来自运动场的证书目录的新 SLI 文件、以及由 dummy-root-ca-cert-key 签名的 mcuflashimg.bin。   作为参考、我这次没有选择"使用供应商证书目录"或"添加 OTP 文件"。

  我预期这会失败、因为:

  • 我的器件已经使用特定于供应商的公钥对 OTP 进行了编程、并且"证书集合目录"没有由特定于供应商的私钥签名。  
  • 如果 UniFlash 成功地对器件进行了编程、我希望引导失败、因为 mcuflashimg.bin 由 dummy-root-ca-cert-key 签名、而我的供应商证书目录中未包含该签名。   

  但是、此更新的两个方面似乎都已成功、因为"程序映像"报告器件已成功编程、并且器件会使用新的 mcuflashimg.bin 按预期启动。

我想知道我是否错过了这里的一个步骤、因为根据上面3)的结果、我的设备似乎仍然接受目录和我不认为应该接受的图像。

提前感谢!

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    要使用 OTP、您需要服务包。 当使用编程时(SLI)、它将不起作用。

    安装正确的服务包后  、将使用供应商目录而不是编程的目录。 因此、它将在 TLS 设置和 OTA 更新期间产生影响、但在编程期间不会产生影响。  

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好、Kobi、

    感谢您的回答。   我不清楚服务包没有存储在 SLI 中。   

    以下是使用 OTP 的正确过程

    1) 1)使用 UniFlash、选择一个服务包、然后选择"刻录"和"编程映像(创建和刻录)"以将服务包放置在器件上。

    2) 2)按照我在第一个帖子中所述、使用 SLI 对器件进行编程?

    谢谢!

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    使用 SLI 进行编程时、您将擦除闪存并使用 ROM 引导加载程序代码将新内容写入器件。

    之前安装的 Service Pack 将被擦除。

    如果映像 中包含服务包、则它将写入闪存(包括其自身的验证)、但不会在验证其他文件(例如 MCU 文件)期间使用。   

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    谢谢 Kobi。

     您能给我介绍"正确"的方法来执行器件的初始编程吗?

    作为参考、我的用例是:

    1)供应商 OTP

    2)供应商证书目录

    3) Service Pack

    3) mcuflashimg.bin、使用供应商代码签名证书签名

    4)多个"用户文件"(用户软件使用的证书和配置文件)

    我们最初的理解是、这一切都可以使用一个.sli 文件来完成、但情况似乎并非如此。  提前感谢您的帮助。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    没错。 它可以通过一个 SLI 文件来实现。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    但是、如果我使用不同的 SLI (还包括服务包和"虚拟证书"目录的 SLI)对器件进行"编程"、 和一个使用虚拟代码签名证书签名的映像、正如我在原始文章中所述)、OTP 为什么不将其标记为无效目录和无效映像?

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    为什么要对器件进行两次编程? 通常、它在生产中完成一次、然后您的供应商目录将用于验证代码签名证书(这将使您能够使用自己的根 CA 对 MCU 映像进行签名、并在生产期间(在同一 SLI 中)或 OTA 期间验证签名)和 SSL 证书 (假设目录包含您正在使用的服务器的根 CA)。

    稍后、您可以使用 OTA 替换目录、但不能使用 SLI。

    ROM 引导加载程序不支持 OTP、该 OTP 被添加为扩展、因此常规(第二)编程将不会使用它。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    如果您使用“使用供应商证书目录”选项,但不使用“添加 OTP”,则应该能够再次使用 SLI。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    我尝试对其进行两次编程、以验证它无法成功完成、这是它在工作时引发问题的原因。

    感谢您的解释、现在我了解了为什么第二个 SLI 编程仍然成功。

    非常感谢您在本主题中提供的回答。  谢谢!