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.

[FAQ] [参考译文] 【常见问题解答】J721S2XSOMXEVM:如何生成密钥环数据 blob?

Guru**** 2546020 points


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

https://e2e.ti.com/support/processors-group/processors/f/processors-forum/1560218/faq-j721s2xsomxevm-how-to-generate-keyring-data-blob

器件型号:J721S2XSOMXEVM


工具/软件:

根据 TISCI 文档、它支持密钥环功能、有助于导入其他密钥、进而用于对图像进行身份验证。 生成密钥环 blob 涉及许多复杂的步骤,我们有任何参考工具来生成密钥环 blob 吗?

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

    钥匙环工具
    =============

    概述
    -----
    密钥环工具有助于生成安全密钥环块。 它会创建具有可用于固件身份验证的非对称和对称密钥的结构化密钥环。

    必要条件
    -----
    - Python 3.
    - OpenSSL 命令行工具
    - xxd 实用程序(用于二进制到标头的转换)

    非常重要
    -----
    1.将 key_ring.zip 文件解压缩到您的首选目录
    2.确保您的系统上安装了 Python 3

    用法
    -----
    运行主脚本:

    python3 main.py

    按照交互式提示操作:

    -指定键块的数量 (1-6)
    -对于每个关键块:
    -选择密钥类型(1 表示对称、0 表示非对称)
    -分配唯一密钥 ID (1-6)
    -配置密钥是否用于固件验证 (0/1)
    -配置密钥是否用于调试验证 (0/1)
    -根据提示设置其他参数

    该脚本将:

    -生成 JSON 配置文件
    -使用 OpenSSL 创建必要的密钥对
    -将 JSON 配置转换为二进制格式
    -使用 x509CertificateGen.sh 脚本生成 X.509 证书
    -创建最终的 keyring_blob.bin 和 keyring_blob.h 文件

    所有输出文件都将放置在 build/目录中

    输出文件
    -----
    该工具会在 build/目录中生成以下文件:

    - keyring_data.bin:密钥环数据的二进制表示
    - keyring_blob.bin:带有 X.509 证书的最终密钥环 blob
    - keyring_blob.h:包含密钥环数据的 C 头文件
    - private_key_*.pem:私钥(保持这些安全!)
    - public_key_*.pem:公钥

    与 SBL 集成
    ------------------------
    使用 SBL(次级引导加载程序)测试生成的密钥环:

    1.应用提供的补丁:

    补丁-P1 < 0001-Add-test-case-for-keyring.patch

    在 SBL 工程中包含生成的 keyring_blob.h

    工作原理
    -----
    该工具采用多步流程:

    1. gen_json.py 根据用户输入创建 JSON 配置
    2.使用 OpenSSL 生成密钥对
    3. json_to_c.py 将 JSON 转换为 C 兼容结构
    4. x509CertificateGen.sh 为密钥环创建 X.509 证书
    5.最后一个 blob 格式化并输出为二进制文件和 C 头文件

    重要说明
    -------------------
    -这是一个参考工具,不适用于生产用途
    -生成的密钥应妥善保护
    -对于生产系统,应实施适当的密钥管理程序

    工具:e2e.ti.com/.../key_5F00_ring.zip

    SBL 参考 补丁:e2e.ti.com/.../0001_2D00_ADD_2D00_test_2D00_case_2D00_for_2D00_keyring.patch

    输出日志:

    SBL Revision: 01.00.10.01 (Aug 28 2025 - 14:39:26)
    TIFS  ver: 10.1.6--v10.01.06 (Fiery Fox)
    Sciclient_importkey... PASSED

     

    使用密钥环导入的密钥为固件签名
    -----

    1.将更改应用到 x509CertificateGen.sh 以添加对密钥环扩展的支持。 请参阅下面的补丁以了解相同内容。

    文件: e2e.ti.com/.../0002_2D00_Add_2D00_keyring_2D00_node_2D00_information_2D00_to_2D00_X.509_2D00_certificate.patch

    2.构建未签名应用程序。

    3.使用您要使用的密钥 ID 对映像进行身份验证的应用映像签名。 另外、确保使用相应的私钥对应用程序签名。

    示例:
    ```bash
    ./ x509CertificateGen.sh -b input.bin -o output.bin -c R5 -l 0x41C00100 -k PRIVATE_KEY -a 1【其他选项】

    其中:

    • -A 1:指定使用密钥环中的密钥 ID 1 进行身份验证
    • -E <id>:可用于指定加密密钥 ID(尚不支持)