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.

[参考译文] MSPM0L1228:引导和启动序列

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

https://e2e.ti.com/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/1480252/mspm0l1228-boot-and-startup-sequence

器件型号:MSPM0L1228

工具与软件:

您好!  

在我公司、我们正在开发一个具有 M0L1228微控制器的项目。 我有一个关于所选微控制器中可用的安全启动方案的问题、描述见 TRM 第4.1章。

根据我的理解、步骤1的目的仅是配置保护、如"调试安全性"、"批量擦除"或"组交换策略"。

而在第2步中、客户安全代码负责确定执行组和安全密钥初始化。 假设 CSC 是由我们开发的、我们假设它也使用其中一个密钥集来设置主应用程序的 CMAC 值。 这种情况仅在第一次执行时发生、第二次调用主应用程序时发生。

我的解释是否正确? 在哪个阶段使用相应的密钥集根据 CMAC 值验证主应用程序的完整性? 此验证是否需要额外的引导加载程序、或者 CSC 在每次执行重新启动时是否可以管理它?

提前感谢您的答复、

高级

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

    尊敬的 Alessandro:

    您对步骤1和步骤2的解释通常是正确的。 在 TRM 的4.1.1和4.2.1节中、您可以看到在每个步骤中应用哪些确切策略的更多详细信息。

    对于您的问题、具体的身份验证方法由您决定。在我们的示例中、当应用程序映像在受信任/特权模式下运行时、我们使用 ECDSA 对其进行身份验证。 然后、在非特权/不可信模式下、我们再次检查 SHA 哈希以再次进行验证。  

    我强烈建议您查看客户安全代码用户指南、该指南位于 SDK 中的以下路径中:  

    [SDK 安装路径]/docs/english/middleware/boot_manager/doc_guide/doc_guide-srcs/customer_secure_users_guide.html

    此视频将引导您完成 CSC 示例和代码、其中更详细地显示 CSC 中所采取的具体步骤。 我认为这将解决您目前有关该器件工作原理的大多数问题(如果不是全部问题)。

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

    尊敬的 Dylan:

    感谢您的答复。 我还有一个问题:我从 TRM 了解到、微控制器具有用于 AES 的硬件加速器。 它是否也支持 ECDSA、这些应用需要 SHA 或外部软件库?

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

    很乐意提供帮助。

    这些器件中的 AES 加速器不支持 ECDSA 和 SHA。 您需要一个外部软件库来执行这些功能。 在我们的 CSC 示例中、您可以看到我们为 SHA 和 ECDSA 函数使用外部库。

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

    谢谢迪伦。

    我的最后一个问题是:CSC 是一次性可执行文件吗? 它仅用于初始化吗?  

    如果需要在软件更新后重写 CMAC 值、该怎么办?

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

    尊敬的 Alessandro:

    CSC 将在每次器件启动时执行。 但是、器件处于特权模式还是非特权模式将取决于 INITDONE 是否有效(如用户指南所述)。 简而言之、答案是不可以、它不是一次性可执行文件。

    发生软件更新时、您需要重新计算 CMAC、因此可以在运行时重新计算 CMAC 并与存储的值进行比较。 如果未更新保存的值、则始终会无法通过 CSC、因为失败的 CMAC 比较会表明 SW 映像与最初加载的映像不同、因此不可信。  

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

    尊敬的 Dylan:

    因此、引导加载程序负责根据存储的 CMAC 验证主应用程序的完整性、它应该是 CSC 的一部分吗?  

    主应用程序是否仍然可以使用密钥库中的密钥集?  

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

    我们的 CSC 示例不包含引导加载程序、您可以选择使用 ROM 引导加载程序或定义自定义引导加载程序。 CSC 示例展示了在运行应用程序映像之前启动并验证该应用程序映像的过程、它包括读取和写入保护等功能、用于在退出特权模式后锁定必要的闪存段。  设计人员可以选择运行 CSC、然后 让应用程序映像包含自定义安全引导加载程序。 CSC 本身不是引导加载程序。

    主应用程序可以使用密钥库中的密钥。 在 CSC 示例中、密钥被传输到密钥库中、然后读取受保护。 因此应用程序不能简单地从闪存中获取它们并加以使用。 但是、一旦它们存储在密钥库中、它们就可以在 AES 加速器中使用并由应用程序使用、但不能读出。