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.

[参考译文] AM2432:在有/没有引导的情况下验证安全启动 SBL 映像

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

https://e2e.ti.com/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/1389894/am2432-validating-secure-boot-sbl-image-with-without-booting

器件型号:AM2432

工具与软件:

您好!

我们正在计划实施 SBL OTA 升级。 但是、遇到了与在刷写到 bootflash (0x00_0000引导地址)之前验证 SBL 映像签名相关的问题。  

 我在 HS-SE (安全启动)中知道、在启动映像之前、AM243x 将使用融合密钥来验证 SBL。

是否有可能使用融合密钥验证加密 SBL 映像而无需从特定偏移地址引导? ROM 引导库是否可用于此用途? 是否有其他任何 API/方法可以实现?

如果以上所述、则无法在不引导的情况下进行验证。 不管怎么说、我们可以指定 SBL 引导偏移地址并在 HS-SE 模式下触发引导序列。 那么、AM243x 是否可以从指定的偏移地址引导(其中 OTA SBL 映像存在于 bootflash 存储器中)? 是否有任何 API 可用于从特定地址触发引导序列。 就像从 SBL 加载应用映像一样?

需要有关上述两个问题的信息。 请提供这些方面的资料。

谢谢

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

    您好!

    您可以使用以下 TISCI API 对已签名映像进行身份验证

    https://software-dl.ti.com/tisci/esd/latest/2_tisci_msgs/security/PROC_BOOT.html?highlight=tisci_msg_proc_auth_boot#proc-boot-authenticate-image-and-configure-processor

    这是 SBL 在引导应用程序映像之前验证应用程序映像的方法。

    https://github.com/TexasInstruments/mcupsdk-core/blob/2252c873974d577912b02fdad718a05c2cb04e4d/source/drivers/bootloader/soc / am64x_am243x/bootloader_soc.c#L1234C9-L1234C32

    此致、

    Prashant

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

    感谢您的回复。

    如上所述、API 用于 HS-API FS 模式。 HS-SE 模式怎么样?  当尝试验证 SBL OTA 映像存储时、如何在引导闪存中验证 SBL 映像是另一个位置。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    如上所示上述 FS 用于 HS-API 模式。 HS-SE 模式怎么样?[/QUOT]

    它同时适用于 HSFS 和 HSSE。

    在 HSFS 器件上、由于没有密钥、因此会跳过身份验证、仅执行完整性检查。 在 HSSE 器件上、通过融合密钥对图像进行完全验证。

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

    您好 Prashant:  

      上面提到的 TISCI API 用例是由 SBL 对应用映像进行身份验证。  

    对于我们的用例、我们将更新 SBL、因此该过程将首先将 SBL 存储到 RAM 或存储 SPI 器件中、然后我们需要调用 API 来使用 OTP 中的 SMPK 密钥对此新的 SBL 映像进行身份验证。  仅当验证映像是否使用 OTP 中正确的 SMPK 密钥进行签名后、我们才希望将 SBL 编程到 bootflash 中。   


    谢谢!  
    Hong   



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

    您好!

      您在上面提到的 TISCI API 用例是由 SBL 对应用程序映像进行身份验证。  [报价]

    TISCI_MSG_PROC_AUTH_BOOT 是用于对有符号随机二进制文件进行身份验证的通用 API。 使用它来验证 appimage 的 SBL 只是它的一个用例。

    由于 SBL 使用 ROM X.509证书格式进行签名、因此该 API 不能直接用于对 SBL 进行身份验证。 您可以按照以下步骤操作:

    • 将已签名的 SBL (ROM X.509证书+有效负载)视为单个二进制数(Y)。
    • 使用生成签名二进制 Z (= X (SYSFW X.509证书) + Y)的 SYSFW 签名脚本对 Y 签名。
    • 接收 Z
    • 使用  TISCI_MSG_PROC_AUTH_BOOT 对 Z 进行身份验证。
    • 如果成功、则丢弃 X 并以所需偏移量闪烁 Y。

    此致、

    Prashant

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

    以防万一、

    无法验证 SBL、因为它实际上是在不让 ROM 引导它的情况下进行验证的。 您所能做的最好的方法是确保接收到作为二进制文件的签名的 SBL 并使用前面所述的步骤正确刷写。

    如果您想按原样验证 SBL、可执行以下步骤:

    • 接收 SBL 映像并在闪存的主要偏移0x0处刷写。
    • 如果 SBL 映像损坏或发生任何事情、ROM 将拒绝该映像并回退到闪存的冗余偏移0x4000。
    • 冗余偏移应包含一个有效的 SBL 映像、该映像可能是一个 OTA SBL 以再次触发 OTA 更新。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好 Prashant:  

    您在下面的陈述中提到的是哪个 SYSFW 签名脚本?  您能帮助提供名称以便我们在同一个页面吗?

    • 使用生成签名二进制 Z (= X (SYSFW X.509证书) + Y)的 SYSFW 签名脚本对 Y 签名。

    谢谢!  

    Hong  

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

    您好、Hong:

    这是用于在 MCU+ SDK 中对应用程序映像(.appimage)进行签名的脚本。 可从以下网址获取该手册: /tools/boot/signing/appimage_x509_cert_gen.py.

    如需了解更多相关信息、请访问:

    https://software-dl.ti.com/mcu-plus-sdk/esd/AM243X/09_02_00_50/exports/docs/api_guide_am243x/TOOLS_BOOT.html#TOOLS_BOOT_SIGNING

    此致、

    Prashant

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

    您好、API 是否会只检查签名? 它是否尝试验证修订目标地址等? 使用 API 是否意味着 我们需要为 SBL 和 appimage 具有相同的 SVREV 值?

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

    我目前还不确定它是否也检查 SWREV。 我会与团队核实并回复给您。

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

    感谢您的耐心,这已经花了我们很长时间跟进。  
    我们最终得到了开发团队的确认、并确认我们没有在 proc auth boot API 中检查 SWREV 值