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.

[参考译文] CC3235MODASF:AES-CCM 文档

Guru**** 2538930 points
Other Parts Discussed in Thread: CC3235MODASF

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

https://e2e.ti.com/support/wireless-connectivity/wi-fi-group/wifi/f/wi-fi-forum/957278/cc3235modasf-aes-ccm-documentation

器件型号:CC3235MODASF

我正在寻找如何在 CC32XX 上使用 AES-CCM 加密/解密模式的文档或示例代码。

通过浏览 driverlib 源代码和文档、可以清楚地看到附加数据位于明文之前、但我找不到关于如何处理 nonce 的任何提及。 根据 TRM (swru543a.pdf)、我假设这应该按照 NIST 800-38c 进行格式化。 因此、我按如下方式构建了 B0和 B1、并以明文开头:

  • Block0:标志(1字节)、nonce (12字节)、Pad (1字节)、lengthOfClearText (2字节)//总共16字节
  • Block1:lengthOfAdditionalData (2字节)、additionalData (13字节)、pad0 (1字节) //总共16字节

加密参数设置如下:

   params.AES.keysize                 = CryptoCC32XX_AES_KEY_SIZE_128位;
   params.AES.pkey                    =服务器 WriteKey;
   params.AES.PIV                     = serverIV;
   params.aes.aadParams.input.pKey2   = serverWriteKey;
   params.aes.aadParams.input.key2Size = CryptoCC32XX_AES_KEY_SIZE_128bit;
   params.aes.aadParams.input.len     = AES128_BLOCK_SIZE * 2;                // 32字节

CryptoCC32XX_encrypt 返回 CryptoCC32XX_STATUS_SUCCESS、但结果与已知良好的软件实现方式相比不正确。

平台:CC3235MODASF

SDK:4.30.0.6

我们非常感谢您的帮助。

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

    您好!

    您按照 TRM 中所述执行的步骤应该是正确的。 您用于生成已知良好的软件实现的工具是什么? 如果您能描述如何重现您看到的结果、我们将不胜感激。

    此致、

    Michael

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

    迈克尔--

    感谢您的快速回复。

    我使用的是使用开源加密库的自定义构建 DTLS 实现、我已验证该实现与 openssl、libcoap 和 tinydtls 进行通信、因此我对 cyrpto 的保真度有99.44%的信心。 我正在考虑如何为您提供可重现的测试线束。

    但是、当我重新思考我的问题时、我认为我已经找到了问题和可能的解决方案:

    我正在按照 CoAP 的要求实现 TLS_ECDHE_ECDSA_with_AES_128_CCM_8{0xC0、0xAE}、而 driverlib 可能默认为 TLS_ECDHE_ECDSA_with_AES_128_CCM{0xC0、0xAC}。 它们使用相同的算法、但_8型号使用8字节标签、而另一个型号使用16字节标签。

    加密加速器可配置为任一种。 因此、我建议的解决ui32Config方案是更新 driverlib、将 tagLength 域添加到 CryptoCC32XX_AesAadInputParams 结构中、然后将其传递到 AESConfigSet 调用的 bitfield 中。

    有什么想法?

    ——Andy

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

    尊敬的 Andy:

    我认为已经确定了您遇到的问题、假设您的已知正常输出基于8字节 CCM 标签、而不是 AES 模块默认假定的16字节标签。

    我将提交一个功能请求以更新 CryptoCC32xx 驱动程序、以实现 CCM 标签长度的配置选项、但同时我建议您尝试在终端上快速修改驱动程序、并测试您是否获得预期的功能。 如果除了 AES_CCM 的其余配置外、还将 AESConfigSet 调用修改为传入 AES_CFG_CCM_M_8、您是否会获得预期结果?

    此致、

    Michael