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.

[参考译文] SK-AM64B:当前正在将 U-boot 用于各个进程、但 ROM 引导加载程序无法引导这些二进制文件

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

https://e2e.ti.com/support/processors-group/processors/f/processors-forum/1481803/sk-am64b-currently-using-u-boot-for-the-processes-but-the-rom-boot-loader-is-not-booting-these-binaries

器件型号:SK-AM64B

工具/软件:

Prashant & TI 团队--

我们的客户正在使用 TI SK-AM64B 板来实现安全启动解决方案。  他们试图为 TI AM64板执行代码签名并生成组合启动映像 、目前无法这样做。 我们想了解以下内容。

  • 为 HS-SE 器件构建 SBL (次级引导加载程序固件)、系统固件、电路板配置二进制文件
  • 如何签署这些二进制文件
  • 如何连接它们以便使用企业证书为 HS-SE 器件生成已签名的二进制文件。

它们当前正在将 U-boot 用于进程、ROM 引导加载程序未引导这些二进制文件。 我们希望了解构建安全二进制文件以使 ROM 引导加载程序能够接受的过程。

此外、 参考信息:

U-Boot 存储库: https://github.com/phytec/u-boot-phytec-ti  (正在使用 PHYTEC SOM)

U-Boot 标签/哈希:v2023.04_09.00.00.011-phy / 187feb2c7f6c545b5ef2c704442dbd4d62d080cd

为了简要说明应该如何使用他们的 U-Boot 版本中的签名步骤、我将简要介绍一下、因为我假设至少有一些关于构建系统的粗略知识、以及此客户和应用程序的遗留知识(离线电子邮件)。 编译过程以运行"binman"结束、该运行从器件树文件中获取输入、该文件告诉它应放置不同编译对象的位置、以创建启动过程需要运行的各种二进制文件。 此过程的一部分是获取给定的私钥、在本例中为 TI Dummy'custMpk.pem'密钥、生成具有扩展的公钥:

 

  • swrv
  • EXT_BOOT_INFO
  • SBL
  • sysfw
  • sysfw_data
  • sysfw_inner_cert

 

使用以下命令:`openssl req -new -x509 -key custMpk.pem -nodes -outform der -out ./cert.tiboot3-am64x_sr2-hs-phycore-som.bin.ti-secure-rom -config ./config.tiboot3-am64x_sr2-hs-phycore-som.bin.sha512-secure-rom -secure -rom -config`

我们认为到目前为止、他们已经能够重现此过程、但到目前为止有一个不同之处:CCoE 证书缺少'sfw_data'扩展、正在努力解决此差异。

 证书作为 tiboot3.bin 二进制文件的第一段附加为"ti-secure-rom"。 此部分"ti-secure-rom"目前是唯一经过修改、使用自定义和预生成的证书而不是使用 binman 生成的证书的部分。 如果二进制文件的其他部分需要更新才能使此过程正常工作、那么这就是我们需要了解的一些信息。

 他们 确实注意到编译的"ti-sysfw"部分有一些有趣的二进制文件、这些似乎是 TI 生成的二进制文件、一个附加了-enc、另一个附加了-cert 查看'-cert'二进制文件的模数、它似乎来自与 TI 虚拟密钥不同的私钥。 团队内部的聊天倾向于将此作为一个可能的痛点、同时需要使用企业密钥签名; 我们相信、无论设备类型或密钥如何、这些都将按原样使用。 这也是可能需要一些清理的东西。

 他们最初尝试将证书附加到 tiboot3.bin 是天真的、只是切断虚拟密钥并在最终二进制文件中将其替换为企业密钥。 主要是因为他们担心二进制中的地址混乱(企业密钥更大)、所以最终修改了 binman 而不是跳过生成并使用自定义密钥。 这样、地址将根据证书大小动态更新。 我们非常确定、这些修改(至少是专门针对 tiboot3.bin 的"ti-secure-rom"部分)是实心的。

 "直接集成 HSM 或密钥?" -密钥正在直接使用。

 如果您需要任何澄清细节或有其他问题、请告知我们。  我们也可以在需求出现时要求提供更多信息。 如果您想要分析生成的任何二进制文件、请告知我、我们可以尝试让客户执行该操作。  也有人要求我们打电话。

 CY、

CY

 

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

    您好、Chris、

    我认为这是以下线程的副本:

    https://e2e.ti.com/support/processors-group/processors/f/processors-forum/1480532/sk-am64b-trying-to-implement-secure-boot-but-failing-wanted-to-know-step-by-step-process

    TI U-Boot 使用 binman 在 U-Boot 构建过程中对二进制文件进行签名。

    此致、

    Prashant

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

    您好、Prashant、

    您认为这两个线程是重复的是正确的。

    我们知道 BINMAN 是签字过程的一部分。 我们还研究了它是如何完成签名的。 但是、过程会崩溃、那就是构建 TI U-Boot 二进制文件的工程师无法访问用于签名和 HS-SE FS 转换的私钥。 如果已授予对该密钥的访问权限、是的、对二进制文件进行签名的过程将与您的回答建议的过程一样简单。 似乎不可能发送此私钥、具有密钥访问权限的团队也似乎不太可能执行 U-Boot 的实际构建。 也许最好假设两个组之间的二进制通信仅限于生成的证书。

    考虑到这一限制因素、您还有什么建议吗?

    谢谢、
    Callie

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

    您好 Callie、

    [报价 userid="100134" url="~/support/processors-group/processors/f/processors-forum/1481803/sk-am64b-currently-using-u-boot-for-the-processes-but-the-rom-boot-loader-is-not-booting-these-binaries ]"直接集成 HSM 或密钥?" -按键正在直接使用。

    所以,通过"密钥是直接使用",你意味着密钥实际上可以在一个单独的系统中使用,在那里它们可以根据需要直接使用?

    如果是、您可以将配置文件发送到系统、该系统可以使用 OpenSSL 返回已签名的证书。 如果客户端和管理密钥的系统之间有一个定义的协议,我相信你只需要修改执行签名的 binman 中的函数。

    https://git.ti.com/cgit/ti-u-boot/ti-u-boot/tree/tools/binman/btool/openssl.py?h=10.01.10#n337

    此致、

    Prashant

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

    关闭主题、因为问题已通过邮件讨论得到解决。