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.

[参考译文] CC2745R10-Q1:BLE 连接期间的 PSA 密钥存储

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

https://e2e.ti.com/support/wireless-connectivity/bluetooth-group/bluetooth/f/bluetooth-forum/1610195/cc2745r10-q1-psa-key-storage-during-ble-connection

器件型号: CC2745R10-Q1

我想在 BLE 连接期间使用 Keystore_PSA_importkey () API、但由于对 Keystore_PSA_importkey () 的独占控制、BLE 连接断开。
因此、是否可以禁用 Keystore_PSA_importkey() 的独占控制并使用它?
如果可能、请告知程序和设置。

SDK 版本为 9.10。

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

    Kento 您好:  

    你能用 PSA_IMPORT_KEY () 函数来尝试吗? Keystore 函数是 ARM PSA 功能周围的包装器。 我们建议为 CC27xx 使用 PSA 函数。 如果您正在使用任何其他 Keystore 函数、请使用您可 在此处找到的正确 PSA 函数将其切换掉。 PSA 函数可在 crypto.h 头文件中找到。 请尝试一下、如果这对我有所帮助、请告诉我。

    此外、您是否在不同线程中执行加密功能?

    请告诉我。  

    谢谢、
    Isaac   

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

    您好、Isaac、

    keystore PSA_importkey() 在 PSA_import_key() 的处理中存在。 这种互斥控制是否会导致 BLE 连接断开?

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

    Kento 您好:  

    是的,我知道 PSA_import_key 函数在 Keystore_PSA_importkey () 的处理中。 请将 Keystore 函数替换为正确的 PSA 函数、以查看它是否首先解决了问题。 不应在 CC27xx 上使用 Keystore 函数、应选择 PSA 函数。  

    谢谢、
    Isaac

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

    您好、Isaac、

    我使用了 PSA_import_key()、但得到的结果与使用 Keystore_PSA_importkey() 时的结果相同。
    与使用 Keystore_PSA_importkey() 时类似、访问 PSA 密钥库时 BLE 连接断开。
    访问 PSA 密钥库时是否无法保持 BLE 连接?
    是否可以将密钥存储在 PSA 密钥库中、而不在 PSA_IMPORT_KEY_() 处理中使用互斥控制?

    谢谢

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

    Kento、  

    我正在进一步研究这一点。 请期待星期五的回复 (01/30)。  

    谢谢、
    Isaac

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

    您好:

    我希望事情能顺利完成。

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

    您好、Isaac

    您是否能够确认此功能?
    我期待在 1 月 30 日之前收到回复、但由于我尚未收到回复、请确认。

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

    Kento 您好:  

    我不知道为什么您在调用 PSA_IMPORT_KEY 时看到此内容。 PSA_IMPORT_KEY 函数不使用互斥函数。 您是否将不同的线程用于加密功能? 调用此函数的时间限制是多少?  

    请进一步说明您的配置。  

    谢谢、

    Isaac

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

    您好、Isaac、

    对 PSA_IMPORT_KEY () 的调用没有时间限制。
    此功能与 BLE 栈共享相同的资源。
    您是否需要任何其他信息?

    谢谢。

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

    通过使用 PSA_IMPORT_KEY () 获取信标, BLE 任务停止,通信调度错位,导致 BLE 任务完全停止。

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

    您好、Isaac、

    当使用 cc2745 作为目标板并执行`PSA_IMPORT_KEY ()`时、BLE 栈是否停止、因为信标是通过`SemaphoreP_pend ()` Inside `PSA_IMPORT_KEY ()`获取的?
    此外、使用不同的资源是否会阻止此问题?
    此外、是否有方法可以在不获取信标的情况下将密钥存储在 PSA 中?

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

    Kento 您好:  

    很抱歉耽误你的时间。 我未能进一步研究这个问题。 我将在下周提供星期五的回复 (02/20)。  

    谢谢、

    Isaac

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

    Kento 您好:  

    您能否向我提供要传递到 PSA_IMPORT_KEY 函数的属性? 此外、您能否提供连接参数? 我和我们的 PSA 函数研发专家谈过、他提到根据属性、执行该函数所需的时间在微秒到 1ms 之间。 除非您在连接事件发生之前直接调用函数、否则这不应影响您的连接。  

    此外、您每次运行 PSA_IMPORT_KEY 函数时都看到断开连接的情况、还是断开连接是间歇性的?  

    请告诉我。  

    谢谢、

    Isaac

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

    Kento 您好:  

    此外、您是否调用了 PSA_IMPORT_KEY 函数调用? 如果 BLE 栈和 PSA_IMPORT_KEY 函数共享同一个栈/线程、则希望您使用 BLEAppUtil_invokeFunction 来调用 PSA_IMPORT_KEY 函数。 调用该函数将允许将函数执行添加到 BLE 栈队列。 这将防止 BLE 事件与 PSA_IMPORT_KEY 执行之间发生任何重叠。  

    如果您尚未实现此功能、请尝试执行此操作。  

    谢谢、

    Isaac

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

    您好、Isaac、

    >是否可以向我提供要传递到 PSA_IMPORT_KEY 函数的属性?
    传递给 PSA_IMPORT_KEY 函数的属性包括 Key_Type(作为 keystore 的 PSA_KEY_TYPE_AES)、Key_Bytes(作为 16)、寿命(作为持久密钥和本地存储)、Key_Usage(作为 keystore 的 PSA_KEY_USAG_SIGN_message)和 Key_Algorithm(作为 keystore 的 PSA_ALG_CMAC)。

    >执行该功能所需的时间在微秒至 1ms 之间。
    保存上述属性的键时、大约需要 10 毫秒。 为什么会这样?

    >此外,您能否提供您的连接参数?
    您能具体告诉我连接参数指的是什么吗?

    >此外、每次运行 PSA_IMPORT_KEY 函数时、是否都看到断开连接、或者断开连接是否是间歇性的?
    此问题并非每次都出现、而是间歇性出现。 当在调用 PSA_IMPORT_KEY 函数时执行连接事件时、会发生该情况。

    谢谢。

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

    Kento 您好:  

    连接参数涉及连接间隔、连接延迟和监控超时。 有更多与连接参数相关的参数、但这些是我需要的变量。  

    好的、最后一点很有趣。 请尝试使用 BLEAppUtil_invokeFunction  API 调用 PSA_IMPORT_KEY 函数。 这将调度 PSA_IMPORT_KEY 函数、以便它不会干扰 BLE 相关事件。  

    谢谢、
    Isaac

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

    您好、Isaac、

    我想就这一问题提供一些补充信息、并提出几个问题。
    我意识到我没有分享有关任务优先事项的详细信息、因此我想在下面补充这些信息。


    ・BLE 相关任务
    ・密钥‑存储任务
    ・规范‑合规性任务
    这三个任务是独立的。


    优先级配置如下:
    ・BLE 相关任务(优先级:4)
    ・密钥‑存储任务(优先级:3)
    ・规范‑合规性任务(优先级:1)


    BLE 相关任务通过执行 GapAdv_enable 来启用广播。
    建立 BLE 连接后、标准‑合规性任务会使密钥‑存储事件进入密钥‑存储任务的队列。
    处理该事件时、密钥‑存储任务使用 PSA_IMPORT_KEY 将密钥存储到 PSA 中。
    当‑密钥存储任务执行的 BLE 广播输出和 PSA 密钥存储同时发生时、广播停止输出。
    之后、广播不会恢复。


    ① 即使添加了这些条件、使用 BLEAppUtil_invokeFunction 函数是否会解决 PSA_IMPORT_KEY 和 BLE 相关事件之间的干扰?
    我们目前为任务分配优先级、并在较低的‑优先级密钥‑存储任务中执行 PSA 密钥存储。
    因此、我们担心即使使用 BLEAppUtil_invokeFunction 函数时也会出现相同的问题、这就是我们提出的原因。

    ② 您能否告诉我们可能导致此问题的原因是什么?
    由于我们尚未在应用程序中嵌入 BLEAppUtil、因此我们正在考虑是否可以通过使事件排队以对密钥‑存储任务执行 PSA_IMPORT_KEY 来解决该问题。
    谢谢。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好:  

    1.是的,BLEAppUtil_invokeFunction 会将函数执行添加到当前队列中,这可以确保在发生 BLE 事件时不执行函数。  

    2.这基本上就是 BLEAppUtil_invokeFunction 的作用。 它正在对与您尝试执行的函数相关的事件进行排队。  

    谢谢、

    Isaac

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

    您好、Isaac、

    感谢您的答复。
    我们知道、通过在 BLEAppUtil 任务中对函数执行排队、可以阻止函数在本应发生 BLE 事件的时间执行。


    但是、我们没有在我们的系统中集成 BLEAppUtil 任务。
    相反、我们生成一个从任务 A 到任务 B 的事件、并在任务 B 收到事件时执行 PSA 密钥存储。
    我们认为这实现了与 BLEAppUtil 任务中的函数执行排队等效的行为、如您所述。
    这种理解是否正确?
    如果没有、请您澄清其中的差异。

    此外、如果我们的理解正确、在我们的环境中、我们会遇到广播传输与任务 B 中执行密钥存储到 PSA 中的时间重叠的问题、从而导致不传输广播。
    我们不明白为什么要使用 BLEAppUtil_invokeFunction 函数来解决此问题。
    如果您能解释为什么这种方法有效、我们将不胜感激。

    谢谢。

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

    您好:  

    您能给我发送您正在使用的 BLEAppUtil 事件队列的代码吗? 如果队列会中断 BLE 任务功能、那么我会假设它无法按您的预期工作。 您是否可以尝试使用 BLEAppUtil_invokeFunction 作为测试?  

    谢谢、
    Isaac

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

    您好、Isaac、

    在用户应用中、使用以下 FreeRTOS 函数实现事件队列处理。
    ・vListInsertEnd
    ・xEventGroupSetBitsFromISR
    ・xEventGroupWaitBits

    【程序】
    1.任务 B 调用 vListInsertEnd 函数、并将消息排入任务 C 的队列句柄列表中
    2.在任务 B 结束时、任务 B 执行 xEventGroupSetBitsFromISR 以向任务 C 通知事件。
    3.任务 C 通过执行 xEventGroupWaitBits 函数等待事件通知,并在收到事件后,
    将消息从队列句柄列表中取消队列。
    4.任务 C 根据步骤 3 中出队的消息内容执行适当的处理。

    注意:
    我已将您的问题解释为与 UserApp 的事件队列机制有关、并相应地分享了上述信息。
    如果这与您的问题或意图不符、请告诉我。

    时序图说明了当前问题以及上述步骤 1 至 4 中所述的过程。
    在 UserApp 中、根据随附图中所示的流程执行处理。

    当 PSA 密钥存储的时序与连接间隔内接收空数据包的时间一致时、会发生争用、
    导致连接间隔中断和随后发生监视超时。

    注意:
    下图中的数字 1 至 4 与步骤相对应。

    【时序图】

    谢谢。

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

    您好:  

    感谢您的解释。 是否可以尝试使用 BLEAppUtil_invokeFunction 来查看是否仍看到问题?  

    此外、您的连接间隔是多久? 导入密钥函数不会花费足够长的时间来阻止连接间隔、除非在连接事件发生前立即调用该函数。 我再次要求您尝试使用 BLEAppUtil_invokeFunction 执行此函数。 请  

    谢谢、
    Isaac

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

    您好、Isaac、

    感谢您的答复。

    正如我们上周提到的、我们通过在 UserApp 中排队事件来实施 PSA 密钥存储。
    我们的理解是、这种方法实现的行为与使用 BLEAppUtil_invokeFunction 相同。

    您能否告诉我们使用 BLEAppUtil_invokeFunction 会产生哪些差异(如果有)、以及为什么它被认为是一种有效的方法?

    谢谢。