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-MSPM0G3519:关于密钥库配置、AESADV 密钥处理和 API 超时设计的说明

Guru**** 2895520 points

Other Parts Discussed in Thread: AES-128

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

https://e2e.ti.com/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/1577460/lp-mspm0g3519-clarification-on-keystore-configuration-aesadv-key-handling-and-api-timeout-design

器件型号: LP-MSPM0G3519
主题: AES-128 中讨论的其他器件

  1. 密钥库组合配置
    参考:SLAU846B–2023 年 6 月–2024 年 11 月修订  

    根据第 25.2 节、密钥库支持三种组合:
  • 四个 128 位密钥
  • 两个 256 位密钥
  • 一个 256 位密钥+两个 128 位密钥
    问题 1: 如何将 KEYSZSEL 配置为“一个 256 位密钥和两个 128 位密钥“的组合?

   2. NK256 字段含义
     
     文档指出两个 256 位密钥是最大配置。
     问题 2: 那么、在密钥库配置中、NK256 值 0x03 和 0x04 的意义是什么          注册?
      


3.密钥库初始化时序
问题 3: 是否可以应用程序启动之前创建密钥库并在运行时加载密钥
如果没有、请说明原因吗?
(在 CSC 示例中,密钥库创建和密钥加载都在应用程序启动之前进行。)  

keystore_implementation.png
4. 基于软件的密钥加载
问题 4: 我们是否可以DL_AESADV_setKey()通过调用 API 两次来使用 API 同时加载两个 AES-128 会话密钥(例如 KEY0 和 KEY1)?  

AESADV 轮询超时指南
问题 5: 以下 AESADV API 使用连续轮询:

while (!DL_AESADV_isInputReady(AESADV)) { ; }
while (!DL_AESADV_isOutputReady(AESADV)) { ; }
while (!DL_AESADV_isSavedOutputContextReady(AESADV)) { ; }

我们需要 TI 关于这些循环的预期运行时间的指导、以设计合适的超时处理并避免死锁。

谢谢
Kasirajan C

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

    尊敬的 Kasirajan:

    第一个问题:

    您不限于三个密钥库配置、所有可能的配置都可以在下面找到:

    • 一个 256 位密钥:
      • 如果存在 256 位密钥、则必须将其写入最低的可用时隙 (0 和 1)。
      • 有效字段= 0011。
    • 最多四个 128 位密钥:
      • 每个密钥都可以写入任意槽位。
      • 有效字段= 0,001,0010、...、1111。
    • 两个(或一个)128 位密钥和一个 256 位:
      • 256 位密钥存储在时隙 0 和 1 中。
      • 128 位密钥可存储在槽位 2 或 3 中。
      • 有效字段=  1111.
    • 两个 256 位密钥:
      • 密钥 0 存储在时隙 0 和 1 中。
      • 密钥 1 存储在插槽 2 和 3 中。
      • 有效字段= 1111。

    KEYSZSEL 指示要写入密钥库槽位的密钥是 128 位还是 256 位。 每个密钥都需要单独写入 Keystore。  

    第二个问题:

    这仅表示仍可以配置能够管理四个 256 位密钥的器件。

    第三个问题:

    加载密钥是指将它们写入密钥库吗? 如果是、则不会 仅当器件处于特权状态时、才能访问密钥库。 这是为了确保除通过安全的内部总线连接的 AES 引擎之外的所有事物都无法访问密钥。 但是、AES 引擎可以在运行时加载并使用写入密钥库的密钥来执行操作。

    第四个问题:

    AES 引擎只能按顺序使用不同的密钥。 它无法一次加载多个密钥。

    第五个问题:

    我将需要更多的时间来执行这些测量、但一旦我获得它们、我会将它们添加到该线程中。

    此致、
    Brian

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

    您好、Brian、

    您能否就有关 AESADV 轮询循环的预期超时值的第五个问题提供更新或指导?
    我们需要此信息来实现适当的超时处理并避免在软件中出现死锁。

    感谢您的支持!

    此致、
    Kasirajan c

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

    尊敬的 Kasirajan C:

    很抱歉耽误了回复。

    在我的测试中、我发现以下内容:

    • while (!DL_AESADV_isInputReady(AESADV)) { ; } ran for <500ns
    • while (!DL_AESADV_isOutputReady(AESADV)) { ; } ran for < 1.5us
    • while (!DL_AESADV_isSavedOutputContextReady(AESADV)) { ; } ran for < 500ns

    Best Regards,
    Brian