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.

[参考译文] AM625:【OPTEE 客户端代码开发】【基准:SDK 10.1】关于 TI 基准 Yocoto 构建代码的问题

Guru**** 2484615 points


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

https://e2e.ti.com/support/processors-group/processors/f/processors-forum/1552459/am625-optee-client-code-devellop-baseline-sdk-10-1-questions-about-ti-baseline-yocoto-built-code

器件型号:AM625


工具/软件:

最近、我尝试根据 Yocto 构建的存储库(基于 TI SDK10.1 基线)开发 OPTEE 客户端(主机)代码。 可加速开发 从而尝试找出是否可以将任何预编码的类似 API 的源代码用作参考、

然后我找到了  在相对路径: /work/sdk/VW_FPK_YOCTO/build/arago-tmp-default-glibc/sysroots-components/aarch64/optee-client /,在这个路径, 我找到了“libckteec.so"。“。

然后我检查相应的源代码“PKCS11_API.c",“,我、我阅读了大多数 API、大多数部分对我来说是可以理解的、我收到了以下两个 API () 的问题

第一个:  

CK_RV C_VerifyInit (CK_Session_handle hSession、
      CK_ERITICY_PTR 机制、
      CK_object_handle HKEY(
对于这个 API, HKEY(一个键句柄)只是一个输入,我的点这是什么旧的 PKCS#11 驱动程序没有告诉我哪里可以检索键句柄,我甚至不知道在哪里可以生成我自己的键句柄(就像我想导入为我知道的私钥,然后也得到为我知道的键句柄)。 你知道答案吗?
第二个问题:
CK_RV C_DECRYPT (CK_Session_Handle hSession、
    CK_BYTE_PTR pEncryptedData、
    CK_Ulong ulEncryptedDataLen、
    CK_BYTE_PTR pData、
    CK_Ulong_ptr pulDataLen)
对于这个 API,我不能真正告诉 我实现 AES-ECB 方法和 AER-CBC 方法之间的“按输入“的区别是什么,因为后者需要一个额外的参数,叫做“ IV “,而不是前者。 你知道答案吗?

最后一个问题是:TI 的同行能否在以下情况下提供基于此 PKCS#11 驱动程序(以下简称“libckteec.so")“)的可用演示代码:
(1)“ AES-CBC 加密和说明“,还应包括相应的密钥管理(安全存储在 RPMB )。   
(2)“基于 SHA256 的哈希“
(3)“基于 ECDSA256 的签名生成和验证“还应包括相应的密钥管理(RPMB 的安全存储)。   
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    嗨、Jibin、
    关于 OPTEE/PKCS11/TA...的一些参考
    https://static.linaro.org/connect/lvc21/presentations/lvc21-215.pdf
    https://optee.readthedocs.io/en/latest/building/userland_integration.html
    https://optee.readthedocs.io/en/latest/building/trusted_applications.html

    下面是 OPTEE xtest 套件 PKCS11 测试代码,您可以在其中浏览此文件,了解如何在 OPTEE 中测试各种 PKCS11 函数。
    https://github.com/OP-TEE/optee_test/blob/master/host/xtest/pkcs11_1000.c

    请注意、OPTEEE 就是开源社区项目。 OPTEE/PKCS11 是通用库、TI 提供的支持有限。

    此致、
    - Hong

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

    Hong、感谢您的澄清。 我们是否有一个清晰的 API 列表来突出显示 OPTEE 上下文中哪些具体 API 已被 M4_0 内核上运行的 TI 硬件模块加速器或 tifs 固件加速和启用? 我认为这有助于将 TI 应该支持的部分分开、或者将开放源代码社区的其他部分分开。  

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

    尊敬的 Xu:
    正如我上次答复中第一个链接的第 6 张幻灯片所述
    “OP-TEE TA 中的 PKCS#11 令牌
    目标:交付 PKCS#11 解决方案、由 OP-TEE 社区提供可靠和维护“

    关于 OPTEE 中的硬件加密引擎支持、我们于 2025 年 5 月通过电子邮件与客户进行了沟通
    - OPTEE 中的 RNG 通过硬件加密 RNG 模块得到支持
    - OPTEE 中的其余加密操作通过软件实现得到支持
    https://optee.readthedocs.io/en/latest/architecture/crypto.html
    -在 OPTEE 中运行硬件加密引擎 SAX_UL 时没有 CPU 卸载优势,因为 OPTEE 不能被抢占

    此致、
    - Hong

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

    我知道 OPTEE 在大部分情况下是一个 opensoure。 但这点对于 RPMB 部分,有一些关键修改必须根据实际的硬件平台修改,你应该真正阅读你发送给我的 URL。 这就是为什么我问这个问题…

    例如:

    第 1 点:

    要允许 Secure Storage 在您的平台上安全运行、您必须在您的平台代码中定义实现:

    void tee_OTP_get_hw_unique_key (struct tee_hw_unique_key *hwkey);
    
    int tee_OTP_get_die_id (uint8_t *buffersize_t len); 
    

    这些实现应根据 SoC 供应商定义的方法从 SoC 特定电子保险丝或加密单元获取密钥数据。

    第 2 点:

    但是请注意、由于 RPMB 密钥只能写入一次控制器、因此在保护主板之前访问 RPMB 将导致主板安全后、将来 RPMB 访问将被拒绝。 为防止这种情况发生、OP-TEE 提供了一个软件挂钩、平台应使用该软件挂钩来实现其安全逻辑  plat_rpmb_key_is_ready()

    Just wonder if there is any points that are hardware platform dependent, TI should help to point them out.

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

    Hong、请从硬件平台相关性角度回答 Jinbin 提出的 RPMB 问题、特别是必要的问题  

    OPTEE 规范/文档明确突出显示了 TEE_OTP_GET_HW_UNIQUE_KEY 和 TEE_OTP_GET_DIE_id 核心 API。 最好将 Jinbin 指向正确的源代码、以便识别 TI 的实现方案。 
    非常感谢。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    尊敬的 Jibin/Xu:
    我在新的 e2e 中回答了相同的 RPMB 问题。
    回复:AM625:【OPTEE TI 构建的 RPMB 问题】【基线:SDK 10.1】关于 TI 基线 Yocoto 使用 eMMC 介质为 RPMB 构建代码的问题 
    让我们关闭这个。
    此致、
    - Hong