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.

[参考译文] LP-AM261:LP-AM261:安全启动

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

https://e2e.ti.com/support/tools/code-composer-studio-group/ccs/f/code-composer-studio-forum/1645835/lp-am261-lp-am261-secure-boot

器件型号: LP-AM261

大家好:

我目前正在研究 AM261x-LP 平台 、并尝试启用和了解 系统上的安全启动流程。

我指的是正式文件: https://software-dl.ti.com/mcu-plus-sdk/esd/AM261X/latest/exports/docs/api_guide_am261x/SECURE_BOOT.html

以下是我迄今为止所做的工作:

  1. 我使用以下 make 命令编译 SBL 映像:
    make -s -C examples/drivers/boot/sbl_ospi_multiple_elf/am261x-lp/r5fss0-0_nortos/ti-arm-clang All device=am261x device_type=HS
    这将生成文件: sbl_ospi_multicore_elf.Release.hs.tiimage 

    1. 类似地、我使用以下命令构建应用程序映像:
      make -s -C examples/drivers/gpio/gpio_led_blink/am261x-lp/r5fss0-0_freertos/ti-arm-clang all device=am261x device_type=HS
      这将生成文件:  gpio_led_blink.mcelf.hs 
  2. 我成功刷新(非安全映像) sbl_ospi_multicore_elf.tiimage 和 gpio_led_blink.mcelf。 OSPI 引导加载程序和应用程序引导并在串行控制台上正确地打印输出。
  3. 但是、当我刷新(安全映像) sbl_ospi_multicore_elf.Release.hs.tiimage 和 gpio_led_blink.mcelf.hs时、在串行控制台上看不到任何输出。
  4. 我尚未将器件转换为 HS-SE 器件。 是否需要将器件转换为 HS-SE?
  5. 是否有办法在不将器件转换为 HS-SE 的情况下测试安全启动? (FS GP 器件上的安全启动)。
  6. 如何将器件转换为 HS-SE 类型? 我已申请 AM261X-TIFS-SDK、但尚未收到。
  7. 是否有办法在不刻录密钥的情况下测试安全启动?

在 TI 论坛上的一篇文章中、我了解了试用运行模式。 这是否也需要刻录钥匙? 如何执行试用模式?

我已经阅读了有关启用安全启动的信息、并了解在使用 make 命令构建 SBL 和应用程序时、生成的二进制文件(带有扩展名) .hs已经过签名。 根据我收集到的信息、这些映像默认使用 TI 虚拟密钥进行签名。 是这样吗?  

有人能帮助我了解测试和验证安全启动过程吗?

另外、我还想了解以下主题:

  1. 器件类型 FS 和 GP 之间的区别是什么?
  2. 在不设置 DEVICE_TYPE=HS 的情况下编译示例代码或 SBL 时、 gpio_led_blink.mcelf sbl_ospi_multicore_elf.tiimage 会生成并。 这些图像是否未签名? 然后、为哪种器件类型 HS_FS 或 GP 生成相应的图像?
  3. 如何识别器件类型 (GP VIN/HS-EM/HS-SE FS) 以及生成的图像适用于哪种器件类型?

谢谢、

付款

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

    尊敬的 Payal:

    我尚未将器件转换为 HS-SE 器件。 我是否需要将器件转换为 HS-SE?

    是的。

    是否有办法在不将器件转换为 HS-SE 的情况下测试安全启动? (FS GP 器件上的安全启动)。

    安全靴只能在 HSSE 上进行测试

    如何将器件转换为 HS-SE 类型? 我已申请 AM261X-TIFS-SDK、但尚未收到。

    在 TIFS SDK 路径中使用 OTP Keywriter 固件。 请问是否与 TI 签订了 NDA、以便与您的 ORG 进行采购? 如果不是、请联系您当地的现场支持以获取相同信息。

    是否有办法在不刻录密钥的情况下测试安全启动?

    在 TI 论坛上有一篇文章、我了解了试用运行模式。 这是否也需要刻录钥匙? 如何执行试验模式?

    抱歉、您指的是 OTPKW 的干运行模式? 如果是、这只是为了检查 SBL OTP KW 功能的运行、而不实际烧录密钥。 这样将解析发送到 HSM 的证书、并表明此过程已成功、以便您可以继续操作并熔断密钥。 这与安全启动无关。

    [引用 userid=“699534“ url=“~/support/tools/code-composer-studio-group/ccs/f/code-composer-studio-forum/1645835/lp-am261-lp-am261-secure-boot ]我已经阅读了有关启用安全启动的信息、并了解在使用 make 命令构建 SBL 和应用程序时、生成的二进制文件(带有扩展名) .hs已经过签名。 根据我收集到的信息、这些映像默认使用 TI 虚拟密钥进行签名。 是这样吗?  [/报价]

    是的、在编译 SBL 之前、您还必须编译 TIFS-SDK 以生成 HS-SE HSMRT 映像、SBL 将在 HS-SE 器件上加载该映像。 这将由 TI 虚拟密钥签名、仅在您使用相同的 OOB 虚拟密钥已使用 OTP KW 将器件转换为 HS-SE 时才使用

    有人能帮助我了解测试和验证安全启动过程的流程吗?

    1.使用 OTP KW 固件将器件转换为 HS-SE(提供与 TIFS-SDK 相同的路径)、查看软件包自述文件以获取说明。 如果您只是测试固件、请使用虚拟密钥

    2.转换后,从 TIFS SDK 软件包构建更新的 HSMRT

    3、像您已经做的那样编译 SBL 和映像的 HS 映像。

    4.刷写内容并引导(这是安全引导)

    设备类型 HS-BIOS FS 和 GP 之间有何差异?

    TI 不运送 GP 器件。 您终端应该有一个 HSFS 设备

    当我在不设置 DEVICE_TYPE=HS 的情况下编译示例代码或 SBL 时、 gpio_led_blink.mcelf sbl_ospi_multicore_elf.tiimage 会生成和。 这些图像是否未签名? 然后、为哪种器件类型 HS_FS 或 GP 生成图像?

    对于 HS-SE 器件、这将使用 TI 虚拟密钥签名

    如何识别器件 FS 类型 (GP / HS-SE/HS-SE)、生成的图像适用于哪种器件类型?

    以 UART 引导模式上电、并观察终端上打印的十六进制值。 使用 SDK 中的以下工具和该数据获取器件状态

    AM263Px MCU+ SDK:引导工具

    谢谢。此致、

    Nikhil Dasan

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

    你好、Nikhil、

    我获得了 OTP Keywriter 和 TIFS SDK 的访问权限、编译代码。

    /source/security/sbl_keywriter/am263px/r5fss0-0_nortos/ti-arm-clang 并通过 tera 项刷写了 sbl_keywriter_am261x_r5fss0-0_nortos_ti-arm-clang.tiimage。 以下是刷写此映像后我看到的日志。

    Starting KeyWriter Bootloader ...
    INFO: Bootloader_socLoadOTPHsmRtFw:67: Key Writer HSMRT Size in Bytes : 81364
    INFO: Bootloader_socLoadOTPHsmRtFw:68: Key Writer hsm runtime firmware load complete
    INFO: Bootloader_socLoadOTPHsmRtFw:69: Below Device DETECTED
    Device Type : HSFS
    SR version 1.0
    
     [HSM_CLIENT] New Client Registered with Client Id = 2
     [HSM CLIENT] OTP-KW 64bit version string = 0x0013306000b0001
    
     [HSM CLIENT] OTP-KW Information
    [Soc Type]          = AM261X
    [Device Type]       = HS-FS
    [HSM Type]          = HSM_V1
    [Bin Type]          = OTPKW
    [OTP-KW Version]    = 11.0.1
    
    #
    # Validating certificate..
    #
    
    BMPK Key Type : RSA Key
    
    
    SMPK Key Type : RSA Key
    
    
    #
    # Decrypting extensions..
    #
    
     * MPK Options: 0x0
    
     * MEK Options: 0x0
    
     * MPK Opt P1 : 0x0
    
     * MPK Opt P2 : 0x0
    
     * MEK Opt    : 0x0
    
    * SMPKH Part 1 BCH code: 0x20f65682
    
    
    * SMPKH Part 2 BCH code: 0x000f704c
    
    
    * SMPK Hash (part-1,2):
    
    0xce0c44734447afec12ba0b2226c3bdbc15576d212323ece46a9c4ccd6a463e41
    
    0x7086083fee572a09a9496dbed447a9f13f9cf535fad75b18e0ee095a4e783c62
    
    * SMEK Hash: 0x716ded828b2731a19c961aa866ca07fcb99603d52ea1b3fa9d5b23c19e99c60a
    
    0x2ca76a82e34fa0a12cfc4d7cc5352bb0ec74e313ddd42edfda52832055b662bf
    
    
    
    * BMPKH Part 1 BCH code: 0x4006cd64
    
    
    * BMPKH Part 2 BCH code: 0x806234dd
    
    
    * BMPK Hash (part-1,2):
    
    0xc090ae52abdb03fee89446518eb34f23c971fe29c0094e52d0a4f303fc8d7c75
    
    0x6ae38cc1830a7aa8bd5abc2901d76bf7f7780544543f136eb6b67069af7d1bf1
    
    * BMEK Hash: 0x83b1b25a53f4863a27d4e2ddc496771d31a3b131bc74b959eecc3475900ff19a
    
    0xc82c062da18e8cb0b646219b379d987392b3df7919c666fd3fa14952552e699e
    
    
    
    EXT OTP extension disabled
    
    [uint32_t] MSV     : 0xF1E22D
    
    [uint32_t] MSV_BCH : 0x11
    
    * APP SWREV: 0x000000000000000000000001000000000000000000000001
    
    
    * SBL SWREV: 0x0000000100000001
    
    
    * HSM SWREV: 0x0000000100000001
    
    
    
    [u32] key_cnt : 0x303
    
    
    [u32] key_REV : 0x101
    
    #
    # Programming Keys..
    #
    
    MSV:
    block: 1, row: 11 data: 0x0
    
    
    MSV_BCH:
    block: 1, row: 12 data: 0x0
    
    
    Error detected: 13 bit(s) mismatch
    
    Dry run mode: Skipping error correction
    
    Final: 13 bit(s) failed to program in this row
    
    Programmed 0/1 rows successfully
    
    [HSM CLIENT] OTP-KW Error encountered in OTP Keywriter
    
    [HSM CLIENT] OTP-KW debugResponse = 0x0070a023
    [HSM CLIENT] OTP-KW Error phase = 0x3
    [HSM CLIENT] OTP-KW Error module = 0x02
    [HSM CLIENT] OTP-KW Error stage = 0x0a
    [HSM CLIENT] OTP-KW Error customer key extension = 0x7
    
    KPI_DATA: [BOOTLOADER_PROFILE] CPU Clock        : 500.000 MHz
    KPI_DATA: [BOOTLOADER_PROFILE] Boot Media       : undefined
    KPI_DATA: [BOOTLOADER_PROFILE] Boot Image Size  : 0 KB
    KPI_DATA: [BOOTLOADER_PROFILE] Cores present    :
    KPI_DATA: [BOOTLOADER PROFILE] System_init                      :        339us
    KPI_DATA: [BOOTLOADER PROFILE] Drivers_open                     :         17us
    KPI_DATA: [BOOTLOADER PROFILE] Board_driversOpen                :        180us
    KPI_DATA: [BOOTLOADER PROFILE] LoadHsmKeyWriterRtFw             :      35548us
    KPI_DATA: [BOOTLOADER PROFILE] Enable Vpp                       :      28494us
    KPI_DATA: [BOOTLOADER PROFILE] LoadHsmCustomerKeyCertificate    :    1433670us
    KPI_DATA: [BOOTLOADER PROFILE] KeyWriter SBL End                :     850707us
    KPI_DATA: [BOOTLOADER_PROFILE] SBL Total Time Taken             :    2348959us
    
    KeyWriter Bootloader Execution Complete...

    在这些日志中、我们可以看到类似的一些错误  

    检测到错误:13 位不匹配

    干运行模式:跳过错误校正

    [HSM 客户端] OTP-KW 错误相位= 0x3
    [HSM 客户端] OTP-KW 错误模块= 0x02
    [HSM 客户端] OTP-KW 错误阶段= 0x0a
    [HSM 客户端] OTP-KW 错误客户密钥扩展= 0x7

    您能帮助我了解这些误差是什么以及 SBL OTP KW 功能是否起作用吗?  

    如何确定 SBL OTP KW 功能是否正常工作?

    谢谢、

    付款

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

    干运行模式:跳过错误校正

    这意味着您在模拟运行模式下运行。  

    这是为了通过查看打印内容来验证 HSM 是否正确解析证书的内容。

    要进行实际转换、如 OTP KW 文档  中所述、请将文件${SDK}\source\security\sbl_keywriter\am261x\r5fss0-0_nortos\main.c 中的模式更改为 certHeader.reserved = KEYWRITER_MODE、然后再次重新编译 SBL 和闪存。  

    在这里、您应该在重复相同的过程后看到成功日志。

    谢谢。此致、

    Nikhil Dasan

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

    你好、Nikhil、

    到目前为止、我已经了解了 dryrun_mode、

    1.在将 OTP Keywriter 映像加载到器件上之前、我们需要 使用所有必需字段 (MSV、SMPK、SMEK、BMPK、BMEK、 KEY_COUNT 和 KEY_REVISION) 进行编程。

    2.然后在设备上构建并加载 OTP 密钥库映像。

    3、在 dryrun_mode 中的 OTP Keywriter 会 解析第一步生成的证书  ,并在构建 OTP kewiter 映像时进行链接, 解密证书, 提取密钥 ,计算哈希, 准备 OTP 编程, 并 模拟 OTP 写入。

    我的理解是否正确、我是否缺少任何概念理解?

    我已经 使用 TI 密钥和自定义密钥测试了 dryrun_mode。

    我有以下疑问:

    1. HSMRT 在 dryrun_mode 中的作用是什么?

    2.将 OTP Keywriter 模式更改为 KEYWRITE_MODE 后、公钥将被烧录到 OTP 上。 因此、只会烧录公钥、或者也会烧录任何其他数据以及密钥、或者烧录生成的证书?

    3、密钥烧录后、器件引导/复位时、谁以及如何根据烧录的密钥验证 SBL 和应用程序映像、如何执行此过程?

    4.  

    是的、在编译 SBL 之前、您还必须编译 TIFS-SDK 以生成 HS-SE HSMRT 映像、SBL 将在 HS-SE 器件上加载该映像。 这将由 TI 虚拟密钥签名、仅在您使用相同的 OOB 虚拟密钥
    使用 OTP KW 将器件转换为 HS-SE 时使用

    使用自定义密钥时、TIFS-SDK 是否还需要使用自定义密钥进行签名? 在使用自定义密钥适用于 HS-SE 器件的 TIFS-SDK 中、需要做哪些更改?

    5、HSMRT 映像在 FS 使用自定义密钥的 HS-HSMRT 器件上的作用是什么?

    6. 自定义密钥被刻录在设备上,被泄露或我想更改这些刻录的密钥出于某种原因。 是否有任何规定可以更改烧录的密钥?

    谢谢

    付款

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

    您好团队:

    是否对上述问题有任何更新?

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    我的理解是否正确、我是否缺少任何概念理解?

    没错

    HSMRT 在 dryrun_mode 中的作用是什么?

    HSMRT 将 解析第一步生成的证书、 解密证书、 提取密钥、 计算哈希、 准备 OTP 编程、 并 模拟 OTP 写入

    将 OTP Keywriter 模式更改为 KEYWRITE_MODE 后、公钥将烧录到 OTP 上。 因此、只会烧录公钥、或者也会烧录任何其他数据以及密钥、或者烧录生成的证书?

    在干运行模式下打印的所有射野数据都将被熔断。 请参阅 OTP KW 的自述文件、了解有哪些不同的可用字段

     

    烧录密钥后、器件启动/重置时、谁以及如何根据烧录的密钥验证 SBL 和应用程序映像、如何执行此过程?

    ROM 验证 SBL、HSMRT 验证应用。 请参阅以下内容。

    AM26x 器件中的安全启动流程

    使用自定义密钥时、TIFS-SDK 是否还需要使用自定义密钥签名? 在使用自定义密钥的 HS-SE 器件的 TIFS-SDK 中、我需要做哪些更改?

    如果使用虚拟密钥、则再次构建 TIFS 固件、它将从默认 TIFS SDK 位置获取密钥。 TIFS SDK 自述文件中提到的构建 TIFS 固件的方法。

    如果使用您自己的密钥、请替换 SDK devconfig.mak 文件中的密钥路径、以便在构建过程中获取这些密钥。

    在 FS 具有自定义密钥的 HS-HSMRT 器件上、HSMRT 映像的作用是什么?

    HSFS 没有自定义密钥。 它只有 TI 内部 MPK 和 MEK、客户无法访问这些信息。 因此、HSMRT 在 HS-RT 中的功能非常有限 FS、如下表所述

    AM261x MCU+ SDK:HSM 客户端

    自定义密钥被刻录在设备上、被泄露、或者出于某种原因我想更改这些刻录的密钥。 是否有任何规定可以更改烧录的密钥?

    将密钥刻录到 Efuse 是一次性活动。 因此、我们有 2 对要电子保险丝的密钥、即 OTP 中的次级 (SMPK 和 SMEK) 和备用密钥 (BMPK 和 BMEK)。

    因此、如果 SMPK/SMEK 受到影响、您可以切换到 BMPK/BMEK(也是一次性开关)

    谢谢。此致、

    Nikhil Dasan

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

    你(嗨,Nikhil)

    感谢您的帮助。 我还有一个关于使用备份密钥的问题。  

    将密钥烧录到 Efuse 是一次性活动。 因此、我们有 2 对要电子保险丝的密钥、即 OTP 中的辅助密钥 (SMPK 和 SMEK) 和备用密钥 (BMPK 和 BMEK)。

    我知道当我想使用备份密钥作为信任根时、我必须更改密钥版本。 我的问题是如何更改密钥版本? 我是否需要再次使用 Keywriter 固件来更新密钥版本?

    谢谢、

    付款

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

    你好、Nikhil、

    关于密钥更新的另一个查询。

    主密钥和备份密钥都受到威胁时、设备会恢复到出厂状态。 我们是否能够完全清理先前的密钥并使用 Keywriter 写入新密钥?

    谢谢、

    付款

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    我知道当我要将备份密钥用作信任根时、我必须更改密钥修订版。 我的问题是如何更改密钥版本? 是否需要再次使用 Keywriter 固件来更新密钥版本?

    不可以、您必须使用 TIFS SDK 执行此操作。  

    我们在 TIFS SDK 中有一个信任根切换示例。 请参阅相同的。

    {TIFS_sdk) C:\ti\tifs_am263x_11_01_00\examples\rot_switching_service

    如果主密钥和备份密钥都被泄露、并且设备恢复出厂状态。 我们是否能够完全清除先前的密钥并使用 Keywriter 写入新密钥?

    不、这是不可能的。 密钥写入过程是器件在生命周期内的一次性活动。

    谢谢。此致、

    Nikhil Dasan