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.

[参考译文] PROCESSOR-SDK-AM69:安全 AM69器件开发

Guru**** 2539500 points


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

https://e2e.ti.com/support/processors-group/processors/f/processors-forum/1298850/processor-sdk-am69-security-am69-device-development

器件型号:PROCESSOR-SDK-AM69

您好、TI 专家。

我使用 FS 基于 SK-AM69-EVM HS-SDK v9的 BINMAN SPL/Uboot 构建流程进行映像准备。  

  有关   https://software-dl.ti.com/jacinto7/esd/processor-sdk-linux-j784s4/09_00_01_03/exports/docs/linux/Foundational_Components_Kernel_Users_Guide.html 中的"生成新密钥集"的说明 是:

注: 
openssl
genpkey -alsa -out keys/cra dev.key \-pkeyopt ras_keygen_bits:4096 -pkeyopt rsa_keygen_pubexp:65537 $ openssl req -batch -new -x509 -key keys/crt dev.key -out keys/dev.crt

我认为 dev.key 应移至 board/ti/key/custMpk.pem 并重命名为 binman 构建流程? 在哪里实际上使用了 dev.cert (看起来像是 Keywriter 操作)(看起来不是 binman 构建)?

但基于旧白皮书https://www.ti.com/lit/an/sprad04/sprad04.pdf?ts = 1701160982790&ref_url=https%253A%252F%252Fwww.ti.com%252Fproduct%252FTDA4VH-Q1
gen_keywr_cert.sh -g 应用于生成新的密钥、内部也以不同的方式基于 openssl。 我想、在此过程中、
应将 smpk.pem 用作 custMpk.pem?

似乎这第二个描述的过程是更好的,应该使用,因为使用了许多其他键,如: aes256.key bmek.key bmpk.pem smek.key smpk.pem tifekpub.pem ?
同样、dev.crt (来自"以前的注释")也不包含与 gen_keywr_cert.sh -s keys/smpk.pem --smek keys/smek.key -t keys/tifekpub.pem -a keys/final_certificate.bin aes256.key 中的 x509cert/crt 相同的信息。

我的问题是,新密钥生成过程(在注释开头说明)如何与通过 Keywriter 将 HS_FS 转换为 HS-SE 相关?

您能否提供整个流程的实际逐步描述、以便为 SK-AM69-EVM 和 SDKv9 SPL-Uboot 的新密钥使用进行映像签名、加密和过渡到 HS-SE?
Bay 您是否支持 make SDK uboot 构建过程中的独立 binman 安全签名/加密过程?

此致、

大柳什·加西奥罗夫斯基

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

    尊敬的  Dariusz:

    bin li26 说:
    注:
    openssl genpkey
    -alsa -out keys/cra dev.key \-pkeyopt rsa_keygen_bits:4096 -pkeyopt rsa_keygen_pubexp:65$ openssl req -batch -new -x509 -key keys/crt dev.key -out keys/dev.537

     如果客户 不想 使用 TI 虚拟密钥、这些命令用于使用 openssl 生成新的密钥集。

    我认为 dev.key 应移至 board/ti/key/custMpk.pem 并重命名为 binman 构建流程? [/报价]

    更正密钥 custMpk.pem 是用于签名映像的 TI 虚拟密钥、如果客户希望使用其密钥、则可以使用其密钥替换该密钥。

    bin li26 说:
    和在哪里实际上使用了 dev.cert (看起来像是用于 Keywriter 操作)(似乎不是用于 binman 构建)?

    这只是一种展示如何使用新生成的密钥生成已签名证书的方法。

    但基于旧论文https://www.ti.com/lit/an/sprad04/sprad04.pdf?ts = 1701160982790&ref_url=https%253A%252F%252Fwww.ti.com%252Fproduct%252FTDA4VH-Q1
    gen_keywr_cert.sh -g 应用于生成新的密钥、内部也以不同的方式基于 openssl。 我想、在此过程中、
    应将 smpk.pem 用作 custMpk.pem 吗?

    Smpk.pem 与 custMpk.pem 相同,最终 gen_kewr_cert.sh 将使用 openssl 命令来生成密钥。

    bin li26 说:
    似乎第二个描述的过程更好,应该使用,因为使用了许多其他键,例如:aes256.key bmek.key bmpk.pem smek.key smpk.pem tifekpub.pem?
    同样,dev.crt (来自"以前的注释")也不包含与 gen_keywr_cert.sh -s keys/smpk.pem --smek keys/smek.key -t keys/tifekpub.pem -a keys/AES256.key
    中的 x509cert/final_certificate.bin 相同的信息。

    如果您正在使用 keywriviter,建议使用 PDK 中提到的脚本。 Linux SDK 只展示如何生成密钥,但我们已经在 PDK 的 shell 脚本( gen_keywr_cert.sh )中加入了这些命令,这样就可以减少工作量。

    似乎也像 dev.crt (来自"以前的注释")一样,不包含与来自 gen_keywr_cert.sh -s keys/smpk.pem --smkkeys/smek.key -t keys/tifekpub.pem -a keys/final_certificate.bin aes256.key 的 x509cert/crt 信息。
    [/报价]

    正如我提到的 ,dev.crt 只是显示如何使用新生成的密钥生成证书的方法,它从密钥写入器中使用的证书中扩散。

    在上述命令中、我们将生成证书以将 SMPK/SMEK 刻录到电子保险丝中。

    bin li26 说:
    我的问题是新密钥生成过程(在注释开头描述)如何与通过 Keywriter 将 HS_FS 转换为 HS-SE 相关?
    [/报价]

    上述步骤仅表明、如果客户想要生成自己的密钥、他们可以如何执行该操作。 更好地关注应用手册 https://www.ti.com/lit/an/sprad04/sprad04.pdf?ts = 1701160982790&ref_url=https%253A%252F%252Fwww.ti.com%252Fproduct%252FTDA4VH-Q1

    因为它包含所有所需的脚本,所以无需担心生成单个密钥(aess/smpk,smek...) 则可以选中多功能引脚。

    应用手册与 FS 使用 Keywriter 工具将 HS-SE 器件转换为 HS-SE 的过程非常一致。

    您能否为整个流程提供实际的逐步说明,以便为 SK-AM69-EVM 和 SDKv9 SPL-Uboot 的新密钥使用进行映像签名、加密和转换到 HS-SE?
    [/报价]

    在将 HS-SE FS 样本转换为 HS-SE 的过程中、您使用/生成的私钥无论您使用同一密钥为图像签名。

    请参阅有关签署过程的 TISCI 文档:

    https://software-dl.ti.com/tisci/esd/latest/6_topic_user_guides/secure_boot_signing.html

    sysfw 如何授权映像。

    https://software-dl.ti.com/tisci/esd/latest/6_topic_user_guides/authentication.html

    Bay 您是否支持 make SDK uboot 构建过程中的独立 binman 安全签名/加密过程? 

    [/报价]

    您能详细说明一下吗?

    此致
    迪瓦卡尔

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

    尊敬的 Diwakar:

    感谢您提供 详细的答案。 非常清楚。 我还想问一下当前的 binman 进程 SDK v9。 使用 smpk.pem 作为 custMpk.pem 签名是由 binman 准备的,那么通过 bmpk.pem 的潜在/可选备份签名是什么-它 现在是由 binman 支持的? 此操作的外观(看起来像图像应该由两个键先被 SMPK,然后由 BMPK 分离-这是如何与当前 binman 进程和 Keywriter 或其他方法 激活 BMPK 支持(密钥修订和密钥计数控制)相关的?)。  

    接下来,在当前 BINMAN 流程的上下文中加密支持的外观如何? -没有默认的样本密钥/custMek.pem (来自密钥生成脚本的 smek.pem )。

    关于 BINMAN 明确分离(编译/链接与 FIT 图像制备以及 BINMAN 的演唱/加密)-我做了这样的分离、但 TI 可能 会提供这样的选项以使分离更加干净、特别是对于签名/加密上下文而言、这可能是个问题。

    基于 uboot/binman 文档的详细信息:

    '虽然 binman 是从 U-Boot 构建系统([DG]:这受 TI 支持)中调用的、但也可以单独调用它。 这通常用于生产构建系统、其中完成签名(使用实密钥)并提供任何缺少的二进制文件。

    因此,在实践中 BINMAN 经常被使用两次:

    • 进入 U-Boot 构建系统后、用于开发和测试

    • 同样是在 U-Boot 之外进行组装和最终生产映像

    虽然在每种情况下都使用相同的输入二进制文件、但您当然需要创建自己的 binman 命令行、类似于   Makefile 中 cmd_binman 中的命令行。 您可能会发现-i 和–toolpath 选项很有用。 该器件树文件以二进制形式提供给 binman、因此无需访问原始的 .dts  源。"

    此致、

    大柳什·加西奥罗夫斯基

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

    大家好,Dariusz Gasiorowski

    现在很清楚。 我还想问一下当前的 binman 进程 SDK v9。 使用 smpk.pem 作为 custMpk.pem 签名是由 BINMAN 准备的,关于通过 bmpk.pem 的潜在/可选备份签名-它 现在是由 BINMAN 支持吗?[/报价]

    bmpk.pem 是备份密钥,这些密钥用于您的 SMPK GET 安全。

    如果 bmpk 是您的活动密钥,您可以将 custMpk.pem 替换为 bmpk.pem。

    此操作的外观(似乎应该先通过 SMPK 和 BMPK 同时通过两个键来分离图像-这是如何与当前 BINMAN 进程和 Keywriter 或其他 激活 BMPK 支持的方法(密钥修订和密钥计数控制)相关的?)。  [/报价]

    在刷写电子保险丝中的 SMPK/SMEK 和 BMPK/BMEK 两个密钥时、需要将密钥计数烧录为2、因为电子保险丝中有两个密钥、其中 keV 版本指明哪一个是活动密钥=。

    如果 kev_rev = 1、则 SMPK 是有效密钥、所有映像将根据该密钥进行身份验证。

    如果 Key_rev = 2、则 BMPK 是活动密钥、所有映像将根据该密钥进行身份验证。

    接下来,在当前 BINMAN 流程中加密支持的前景如何? -没有默认的样本密钥/custMek.pem (来自密钥生成脚本的 smek.pem )。[/报价]

    在当前的过程中,我们只是对映像签名,而不是对映像进行加密, 还需要注意的是、加密映像也会增加启动时间、因为衰减映像的时间也会根据映像的大小而增加。

    但可以对映像进行加密、只需添加密钥、需要更改 openssl 命令即可对映像进行加密。

    此致
    迪瓦卡尔

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

    尊敬的 Diwakar:

    感谢您的帮助和解释。 这表明 bmp.pem 签名应该不由以前的 smpk.pem 预先签名即可完成(相比之下、  这里仅提供了 software-dl.ti.com/.../key_writer.html 上的图片-但这是用于密钥编写器证书的准备、我还看到此论坛上不久前对此进行了解释-再次感谢)。

    关于 binman 进程中的加密可能性,基于 https://software-dl.ti.com/tisci/esd/latest/6_topic_user_guides/secure_boot_signing.html : "..  需要首先加密二进制文件、并将其用作上述签名过程的输入。 X509扩展中填充的某些值也被修改。"

    这看起来是一个连续的过程:加密->签名。因此、似乎不仅仅是替换内部 openssl 请求声调到加密、而是应该准备两个操作以及一些其他操作...?

    此致、

    大柳什·加西奥罗夫斯基