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.

[参考译文] CC1310:AESGCM 解密

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

https://e2e.ti.com/support/wireless-connectivity/sub-1-ghz-group/sub-1-ghz/f/sub-1-ghz-forum/1239603/cc1310-aesgcm-decryption

器件型号:CC1310

我有 AES 128 GCM 加密数据、我正在尝试对 cc1310进行解密。
CryptoCC26xx 库似乎没有直接的支持、我之前用它来对 AESCMTM 数据进行编码/解密。
我正在使用 simplelink_cc13x0_sdk_4_20_02_07、其中在 ti/驱动程序中找到了相关代码:AESGCM 和 AESGCMCC26XX

AESGCM 头列出了不同的示例、我将"回调返回模式下使用明文加密密钥进行单调用 GCM 解密+验证"的示  例与在 TIRTOS EasyLink Echo 示例上设置的代码库结合使用。

在链接器过程中  、我遇到 错误:AESGCM_... 函数是未解析的符号。  

在我的理解中、CC1310应具有与 CC13XX 和 CC26XX 相同的加密模块、因此支持 AESGCM -这是正确的吗?
(https://e2e.ti.com/support/wireless-connectivity/sub-1-ghz-group/sub-1-ghz/f/sub-1-ghz-forum/654599/cc1310-aes-encryption-and-decryption)
(13x0/26x0的 TRM 还包含 参考 GCM 的寄存器说明)

我是否需要调整某些 链接器设置?

如何在 CC1310上实现硬件加速解密 AESGCM?

当前链接器调用和错误消息:

Building target: "rfEasyLinkEchoTx_CC1310_LAUNCHXL_tirtos_ccs.out"
Invoking: Arm Linker
"C:/ti/ccs1200/ccs/tools/compiler/ti-cgt-arm_20.2.6.LTS/bin/armcl" -mv7M3 --code_state=16 --float_support=none -me --define=DeviceFamily_CC13X0 --define=CCFG_FORCE_VDDR_HH=0 --define=SUPPORT_PHY_CUSTOM --define=SUPPORT_PHY_50KBPS2GFSK --define=SUPPORT_PHY_625BPSLRM --define=SUPPORT_PHY_5KBPSSLLR -g --diag_warning=225 --diag_warning=255 --diag_wrap=off --display_error_number --gen_func_subsections=on -z -m"rfEasyLinkEchoTx_CC1310_LAUNCHXL_tirtos_ccs.map" -i"C:/ti/simplelink_cc13x0_sdk_4_20_02_07/source" -i"C:/ti/simplelink_cc13x0_sdk_4_20_02_07/kernel/tirtos/packages" -i"C:/ti/ccs1200/ccs/tools/compiler/ti-cgt-arm_20.2.6.LTS/lib" --diag_wrap=off --display_error_number --warn_sections --xml_link_info="rfEasyLinkEchoTx_CC1310_LAUNCHXL_tirtos_ccs_linkInfo.xml" --rom_model -o "rfEasyLinkEchoTx_CC1310_LAUNCHXL_tirtos_ccs.out" "./CC1310_LAUNCHXL.obj" "./CC1310_LAUNCHXL_fxns.obj" "./ccfg.obj" "./cfgFirmware.obj" "./convert.obj" "./parseOBIS.obj" "./rfEasyLinkEchoTx.obj" "./uartHeat.obj" "./SensorController/scif.obj" "./SensorController/scif_framework.obj" "./SensorController/scif_osal_tirtos.obj" "./easylink/EasyLink.obj" "./easylink/easylink_config.obj" "./smartrf_settings/smartrf_settings.obj" "./smartrf_settings/smartrf_settings_predefined.obj" "../CC1310_LAUNCHXL_TIRTOS.cmd" -l"ti/display/lib/display.aem3" -l"ti/grlib/lib/ccs/m3/grlib.a" -l"third_party/spiffs/lib/ccs/m3/spiffs_cc26xx.a" -l"ti/drivers/rf/lib/rf_multiMode_cc13x0.aem3" -l"ti/drivers/lib/drivers_cc13x0.aem3" -l"ti/dpl/lib/dpl_cc13x0.aem3" -l"C:/_Data/TI_Workspace_V12/tirtos_builds_CC1310_LAUNCHXL_release_ccs/Debug/configPkg/linker.cmd"  -l"ti/devices/cc13x0/driverlib/bin/ccs/driverlib.lib" -llibc.a 
<Linking>
 
 undefined             first referenced      
  symbol                   in file           
 ---------             ----------------      
 AESGCM_Operation_init ./rfEasyLinkEchoTx.obj
 AESGCM_Params_init    ./rfEasyLinkEchoTx.obj
 AESGCM_init           ./rfEasyLinkEchoTx.obj
 AESGCM_oneStepDecrypt ./rfEasyLinkEchoTx.obj
 AESGCM_open           ./rfEasyLinkEchoTx.obj
 
error #10234-D: unresolved symbols remain
error #10010: errors encountered during linking; "rfEasyLinkEchoTx_CC1310_LAUNCHXL_tirtos_ccs.out" not built

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

    另一篇文章 显示出相互矛盾的信息:
    https://e2e.ti.com/support/wireless-connectivity/sub-1-ghz-group/sub-1-ghz/f/sub-1-ghz-forum/932370/launchxl-cc1310-aesgcm-ecryption-decryption-module-is-not-calculating-mac-as-expected

    GCM 似乎未得到 CC1310加密模块的完全支持、但建议使用 CTR 和基于软件的身份验证哈希计算。

    将 CC13X0、CC26X0 TRM swcu117i.pdf 与 CC13X2、CC26X2 TRM swcu185f.pdf 进行比较、显示 CC1310不直接支持 GCM。

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

    尊敬的 Thomas:  

    我确实看到技术参考手册没有列出 AES-GCM 简化版原理图。  

    我将与 RND 核实所提供的 AESGCM 驱动程序的相关信息、以了解此处提供的功能集是什么。  

    此外、您是否看过 SDK 中的 AESKeyagreement 示例?

    https://dev.ti.com/tirex/explore/node?node=A__AGs7eAztBXBRR16aU8sQZQ__com.ti.SIMPLELINK_CC13X0_SDK__eCfARaV__LATEST

    RX 任务有一个解密数据包函数 AES_CCM  解密。

    此致、

    SID

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

    感谢您提供有关 AES_CCM 的信息-很高兴知道 SDK 中有一个可用的示例。 我的代码基于我在论坛上找到的一些有用代码段。  

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

    尊敬的 Thomas:

    从驱动程序文件来看、AES 硬件似乎只是设置为在 AES-GCM 模式下运行、因此必须予以支持。 请您能尝试该示例、然后将其设置为在 AES-GCM 模式下运行、而不是 AES-CCM。  

    此致、

    SID

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

    尊敬的 Sid:

    我有点困惑、您是否建议使用  AESKeyagreement RX 示例并对其进行修改以在 AES-GCM 模式下运行?
    据我了解、 此示例基于 SimpleLink SDK 4.20.02.07中的 CryptoCC26XX 驱动程序、该驱动程序不直接支持 GCM:

     *  This type holds the CryptoCC26XX operation.
     *
     *  Currently supported types are
     *
     *  | Encryption                                    | Decryption                                    |
     *  |-----------------------------------------------|-----------------------------------------------|
     *  | ::CRYPTOCC26XX_OP_AES_CCM_ENCRYPT             | ::CRYPTOCC26XX_OP_AES_CCM_DECRYPT             |
     *  | ::CRYPTOCC26XX_OP_AES_CCM_ENCRYPT_AAD_ONLY    | ::CRYPTOCC26XX_OP_AES_CCM_DECRYPT_AAD_ONLY    |
     *  | ::CRYPTOCC26XX_OP_AES_ECB_ENCRYPT             | ::CRYPTOCC26XX_OP_AES_ECB_DECRYPT             |
     *  | ::CRYPTOCC26XX_OP_AES_CBC_ENCRYPT             | ::CRYPTOCC26XX_OP_AES_CBC_DECRYPT             |

    可能是我在查看错误的发布内容。 4.20.02.07是最新的 SimpleLink SDK 是否支持1310? SimpleLink SDK 7.10.00.98似乎不包含 CC1310。 内部版本的控制器。  

    感谢您的支持!

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

    不、您是正确的、我看到 CryptoCC26XX 驱动程序不支持 AES-GCM 模式。  

    4.20.02.07 SDK 是适用于 CC1310器件的最新 SDK。 因此、是的、我们用于该驱动程序的唯一示例是在 AES_CCM 模式下使用它。

    只是好奇、您如何使用 AES-GCM 加密数据?

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

    尊敬的 Thomas:  

    跟进我之前的回复,并澄清支持情况。 CC13x0实际上没有 AES-GCM 硬件支持。  

    此致、
    SID

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

    我接收到经过 AES-GCM 加密的外部数据、并且我想在 CC1310上进一步处理、之后以 AES_CCM 的加密形式发送这些数据。
    但是、忽略身份验证而使用 AES-CTR 进行解密可能是一种合适的方法。 这可以通过直接使用 AESCTR 驱动程序来实现-加密模块似乎不支持这一点。