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.

[参考译文] CC3220:CC3220:就地执行加密(避免双存储器)

Guru**** 2539500 points


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

https://e2e.ti.com/support/wireless-connectivity/wi-fi-group/wifi/f/wi-fi-forum/663827/cc3220-cc3220-crypto-execution-in-place-avoiding-double-memory

器件型号:CC3220

您好!

我想使用 CryptoCC32XX_encrypt 和 CryptoCC32XX_decrypt 函数通过长度高达1K 的 AES CBC 对项目进行加密/解密。

只要我为输入和输出器件具有单独的存储器、这将正常工作。 但是、这要求我牺牲1K 的宝贵存储器。

从理论上讲、应该可以对 CBC 内容进行加密/解密(相同的存储器输入/输出)、方法是最多使用另一个块大小的额外存储器。 这是因为该算法基本上只是在整个输入上迭代。

但是、由于我想使用 CC3220的硬件加速、我不确定 API 是否可以/支持这一点。

最坏的情况是、我必须在它周围制作我自己的 CBC 包装器、例如一次执行多达256B 块、并将最后一个 cypertext 用作 IV 当然、这也有点愚蠢。

在不使用两倍内存的情况下加密大消息时,建议使用哪种方法?

感谢您的悔恨!

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    注:它... 工作正常。 我-am-使用相同的指针输入/输出、就我所见而言、这始终有效。

    但是、鉴于没有任何具体规定、这是可以的、即使示例代码也使用两个单独的缓冲区、我可以放心、这实际上是可以的:)
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好、Arnout、

    您可以查看驱动程序和 AES 引擎如何在 source/ti/drivers/crypto/CryptoCC32XX.c 和 source/ti/devices/cc32xx/driverlib/AES.c 中使用这些缓冲区 您还可以参阅 CC3220技术参考手册的第17节(17.2.3)

    这应该是安全的、因为每个数据块在运行时被复制到 AES 内核寄存器中、然后被复制回输出缓冲器。 重复使用的数据保存在与输入缓冲器分开的临时寄存器/缓冲器中。

    此致、
    本·M