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.

[参考译文] AM2434:从 CCS 对 HF_FS 文件启用加密

Guru**** 2455360 points
Other Parts Discussed in Thread: AM2434

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

https://e2e.ti.com/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/1479689/am2434-enable-encryption-on-hf_fs-file-from-ccs

器件型号:AM2434

工具与软件:

您好!  

基于 https://software-dl.ti.com/mcu-plus-sdk/esd/AM243X/10_01_00_32/exports/docs/api_guide_am243x/BOOTFLOW_GUIDE.html 中的信息
和 https://software-dl.ti.com/mcu-plus-sdk/esd/AM263X/latest/exports/docs/api_guide_am263x/SECURE_BOOT.html

正在尝试生成签名和加密的 AP 图像。 目前、我使用 x509证书对映像签名、但似乎生成的输出尚未加密。 您能否提供一些可能性来启用加密、或在可能的情况下启用对生成的 appiimage.hs_fs 文件或 CCS 中构建的设置进行加密?  

以及如何实施 PKI 以进行签名?  

谢谢你。

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

    您好!

    可以使用在"devconfig/devconfig.mak"文件中定义的"ENC_ENABLED"标志来启用加密。

    https://software-dl.ti.com/mcu-plus-sdk/esd/AM243X/10_01_00_32/exports/docs/api_guide_am243x/SECURE_BOOT.html#autotoc_md605

    请注意、加密可能仅适用于 HSSE 器件。

    此致、

    Prashant

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

    您好 Prashant、是否可以描述为 am2434器件创建 HSSE 文件的过程?  

    文档中包含:
    如果接收到的安全器件是  HS-SE FS 子类型、则需要将其转换为 HS-SE 型号、并将客户密钥烧录到器件 eFUSE 中。
    如果我们要尝试使用 TI 的通用密钥来了解流程、则需要编辑什么内容?

    在我们当前的 devconfig/devconfig.mak 文件中、已禁用应用程序的加密、我们将重写以启用加密:

    #应用程序加密选项(是/否)
    ENC_ENABLED?=是

    是否还有其他步骤?



    实际上、我们已加密了次级引导加载程序:

    # SBL 的加密选项(是/否)
    ENC_SBL_ENABLED?=是

    SBL 加密和应用程序加密之间有何区别? 应用不是 SBL 的一部分?


    谢谢你。

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

    您好!

    如之前的共用指南中所述、如果 DEVICE_TYPE 设置为 HS、则会为 HSSE 器件类型构建图像。 如果 ENC_SBL_ENABLED 和 ENC_ENABLED 设置为"yes"、则映像也会加密。

    SBL 是引导加载程序、可引导应用程序、因此两者是不同的。

    此致、

    Prashant

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

    您好 Prashant:

    感谢您的解释、  

    我们将生成自己的签名.pem 并加密密钥并在 devconfig.mak 中输入自己的密钥路径、然后我们还将重写以下行:

    #器件类型(HS/LVDS GP)
    DEVICE_TYPE?=HS

    #应用程序加密选项(是/否)
    ENC_ENABLED?=是

    这些步骤是否正确?


    另外、我们当前的 apiimage.hs_fs 文件约有580KB、我们担心您共享的文档中描述的限制: 在 SBL OSPI 中无法解密大于256kb 的应用程序映像。  我们希望加密的文件会更小,但如果我们的 apiimahe 文件将大于256kb ,我们需要加密和保护我们的代码怎么办?

    谢谢、Matej。

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

    您好!

    这些步骤是否正确?

    这些步骤是正确的。

    在 SBL OSPI 中不能对大于256KB 的应用程序映像进行解密。

    限制是因为加密后的映像会加载到 MSRAM 中进行解密、并且 MSRAM 中的可用空间仅限于256KB、具体遵循以下布局:

    https://software-dl.ti.com/mcu-plus-sdk/esd/AM243X/10_01_00_32/exports/docs/api_guide_am243x/MEMORY_MAP.html

    如果您具有 DDR、则可以修改 SBL OSPI 源代码以使用 DDR 进行解密。

    此致、

    Prashant

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

    您好 Prashant:

    目前、我们的设计中没有 DDR、从网络安全角度来看、我们无法使用外部元件进行解密。

    是否有可能仅对一个内核上的知识产权进行加密而仅对其他内核使用进行签名?

    目前、我们使用4个 AM2434内核- M4F、 R5 _0_0、 R5 _0_1、R5 _1_0、 我们只需要加密其中一个 R5内核。

    谢谢你。

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

    尊敬的 Matej:

    是否有可能只加密一个内核上的知识产权而其它内核仅使用有符号?

    可以 为 R5_0_0内核创建一个 appimage、为所有其他内核创建另一个 appimage。

    请查看 SBL_OSPI_MULTI_PARTITION 引导加载程序、该加载程序需要为不同的内核提供单独的 appimage:

    https://software-dl.ti.com/mcu-plus-sdk/esd/AM243X/10_01_00_32/exports/docs/api_guide_am243x/EXAMPLES_DRIVERS_SBL_OSPI_MULTI_PARTITION.html

    此致、

    Prashant

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

    您好 Prashant:

    感谢您对此的解释、我们目前有具有4个内核的系统项目、我们只想加密其中一个内核、我们如何才能以最简单的方式实现它? 我们如何将 devconfig.mak 文件修改为  ENC_ENABLED?=yes (仅针对系统项目的一个内核)?

    谢谢你。

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

    尊敬的 Matej:

    我们如何修改 devconfig.mak 文件、 使之能为 ENC_ENABLED?=yes、因为系统项目只有一个核心?

    这是不可能的。

    可以通过 为 R5_0_0内核创建一个 appimage、为所有其他内核创建另一个 appimage 来实现。

    这是您的用例的唯一解决方案。

    BR、Prashant

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

    您好 Prashant:
    为了正确阐明我们的理解、我们需要为每个内核创建两个具有单独的 apiimage 的单独项目?
    具体而言、对于其中一个内核(例如 R5_0_0)、我们需要修改 devconfig.mak 文件以设置 ENC_ENABLED?=yes。
    之后、我们会将生成的多核 API 映像刷写到闪存中。

    但是、对于此过程、我有几个问题:
    在 MCU_PLUS_SDK 中、我注意到只有一个可用的 devconfig.mak 文件。 我们应如何修改此文件、以确保仅为一种特定类型的内核启用加密?

    关于固件升级、如果我们要将新的 API 映像保存到闪存中、该过程在管理两个单独的内核时如何工作? 每个内核是否会独立处理自己的升级、或者是否有同步机制来确保两个内核在升级过程中保持同步?

    我感谢您对这些问题的见解。

    谢谢您、BR、
    Matej.

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

    您好!

    我建议您一次性浏览 SBL_OSPI_MULTI_PARTITION botloader。 它需要为不同内核提供单独的 appimage。 这样、您可以通过修改所需内核的 makefile 来加密 appimage、如下所示:

    diff --git a/examples/hello_world/am243x-evm/r5fss0-0_nortos/ti-arm-clang/makefile b/examples/hello_world/am243x-evm/r5fss0-0_nortos/ti-arm-clang/makefile
    index 15d269dd..df5067a0 100644
    --- a/examples/hello_world/am243x-evm/r5fss0-0_nortos/ti-arm-clang/makefile
    +++ b/examples/hello_world/am243x-evm/r5fss0-0_nortos/ti-arm-clang/makefile
    @@ -2,6 +2,7 @@
     export MCU_PLUS_SDK_PATH?=$(abspath ../../../../..)
     include $(MCU_PLUS_SDK_PATH)/imports.mak
     include $(MCU_PLUS_SDK_PATH)/devconfig/devconfig.mak
    +ENC_ENABLED=yes
     
     CG_TOOL_ROOT=$(CGT_TI_ARM_CLANG_PATH)
     
    

    至于固件更新、只是闪存到介质中。 处理固件升级的内核可以接收所有 appimage 并将其刷写到各自的偏移量中。

    此致、

    Prashant

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

    您好 Prashant:
    感谢您之前对 SBL_OSPI_MULTI_PARTITION 引导加载程序的指导。
    我想要求进一步澄清几个具体问题、以确保顺利的整合进程。

    Makefile Identification:您提到修改 makefile 为所需内核加密应用映像。 您能说明一下我们需要修改哪个具体的 makefile 吗? 是与每个内核关联的 makefile 还是引导文件夹中有集中式 makefile?

    系统文件夹用法:我们是否需要在实现中使用系统文件夹? 如果是、我们应该如何在引导加载程序的上下文中对其进行结构化?

    内核间通信:在此设置中、内核之间是否仍然存在通信功能? 如果是、您能否提供有关如何在没有系统文件夹的情况下实现这一点的指导?

    Makefile 生成:由于内核的 makefile 是自动生成的、因此这应该如何影响我们的修改? 我们是否应该纳入任何具体的指令,以确保我们的改变在再生后持续存在?

    分步指导:最后、您能否提供实施这些更改的详细分步解决方案或指导? 这将大大有助于我们与最佳做法保持一致。

    我感谢你对这些问题的支持和指导、并期待你迅速作出反应。

    BR、Matej。

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

    您好!

    我想继续跟进这个问题。

    我理解您可能很忙、但如果您能提供任何更新或信息、我们将不胜感激。