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.

[FAQ] [参考译文] [常见问题解答] MCU-PLUS-SDK-AM243X:[常见问题解答]如何为 am2x 器件的 MCU_PLUS_SDK 中配置和优化 MbedTLS。

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

https://e2e.ti.com/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/1228013/faq-mcu-plus-sdk-am243x-faq-how-to-configure-and-optimize-mbedtls-in-mcu_plus_sdk-for-am2x-devices

器件型号:MCU-PLUS-SDK-AM243X
主题中讨论的其他器件:SHA-256
  • 如何配置 MbedTLS 功能?
  • 如何减少 MbedTLS 库的存储器占用空间?
  • 如何将加密转移到定制实现或加密引擎?
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    此常见问题解答简要讨论了 mbedTLS 的配置和 MbedTLS 存储器封装的优化、MbedTLS 在中作为独立库提供、开箱即用 MCU_PLUS_SDK 08.06进行编程 传递函数 am243x、am263x、am273x 和 am64x

    如何配置 MbedTLS 功能?

    MbedTLS 功能由位于的顶层头文件控制  mcu_plus_sdk/source/networking/mbedtls_library/mbedtls_ti/alt_config.h

    config 头文件 包含#define 宏以启用或禁用 MbedTLS 的以下功能:

    • 禁用或启用 SSL 服务器或 SSL 客户端功能。
    • 禁用或启用某些加密模块、例如 可以禁用 SHA-256支持、同时仍支持 SHA-512和 SHA-1。
    • 可禁用或启用对 n 位数据进行的数学运算支持。
    • 可以基于 CPU、内存、平台支持、许多功能、如时间计算、内存分配器进行控制。
    • 可以启用、禁用或重新实现线程支持。
    • 可以启用加密功能的其他实现方式。
    • 可以启用或禁用 TLS 加密套件。
    • 可控制加密模块的部分功能。 例如、AES–解密可在仍然使用默认的 AES 加密的同时被禁用/更改。

    注:  在配置文件或源代码中进行任何更改后、需要重建 MbedTLS 库。


    如何减少 MbedTLS 库的存储器封装?

    MbedTLS 库的存储器占用量可通过缩减  正在禁用  配置文件中的某些功能、如上所述。

    从功能上讲、MbedTLS 可分为 TLS 层实施和加密模块支持。

    在应用中使用时、MbedTLS 存储器占用量为:

    版本构建(176.4 KB)

    代码

    RO 数据

    RW 数据

    总计(字节)

    127988.

    39289.

    9159.

    176436.

    上述存储器占用量是启用了大多数功能的开箱即用库的占用量。 如果禁用某些不需要的功能、则可以进一步减少存储器占用空间。 上图展示了该分布、将 MbedTLS 功能分为多个子部分。

    SSL:

    TI 器件 大小(以字节为单位)
    代码 RO 数据 RW 数据
    SSL TLS 26298. 9359. 52.
    SSL 服务器 12450 5462. 0
    SSL 客户端 11464 5035. 0
    SSL 加密套件 218. 6047. 317.

    在大多数应用中、可能需要 TLS 客户端或 TLS 服务器功能、可以禁用其中一种 TLS 服务以减少存储器占用空间。 例如、 禁用 TLS 服务器功能会将库大小减小约23%(17.1 KB)、类似地、禁用 TLS 客户端将库大小减小约21%(16.4 KB)。 下图显示了 TLS/SSL 服务的存储器分布。

    TI 器件 减小库大小
    TLS 服务器 23%
    TLS 客户端 21%

    加密

    根据  alt_config.h 中启用的加密模块、 mbedTLS 加密的示例大小分布如下表所示:

    评估板 大小(字节)
    AES 13491.
    Bignum 8422.
    ECP 8277
    X509 7719.
    ECP 曲线 7416.
    RSA 5270
    SHA1. 5080
    OID 5016.
    第512章 4830.
    PK 解析 3757.
    SHA256 3066
    MD5 2572.
    X509 2534.
    密码 1942年
    GCM 1652.
    密码换行 1631.
    RSA 内部文件 1562.
    ECDSA 1422.
    dhm 1408.
    PEM 1191.
    CCM 1142.
    30.
    PK 后续处理 993.
    CTR DRBG 964.
    PKCS12. 922.
    ASN1解析 774.
    PKCS5. 770
    峰值 737.
    MD5 668
    ECDH 638.
    MD 缠绕 613.
    HMAC GRBG 594.
    基数64 500
    ASN1写入 384.

    它可以通过两种主要方式进一步优化:

    1. 优化加密模块的实现。
    2. 禁用最终应用中不需要的加密功能:
      -这可能涉及完全禁用加密模块(例如,禁用 SHA-256支持)或部分禁用(例如,禁用 AES 解密,但支持 AES 加密)

    例如、如果所选的密码套件为  MBEDTLS_TLS_RSA_WITH_AES_256_CBC_SHA256 , 仅要求对 RSA、AES、SHA 和其他实用程序的加密支持,而其他实用程序可以禁用,例如 HMAC、GCM、CCM、 ECDSA 等可被禁用、进一步节省~28.5 KB。

    注:  上述数字仅用作示例演示、并不代表 MbedTLS 库的最佳优化情况。

    如何将 MbedTLS 加密转移至定制实施或加密引擎?

    MbedTLS 加密可转移到备用加密引擎或定制实施。  大多数加密模块都支持替代实施、通常用于将加密转移到硬件加密引擎(对于 am2x 器件、如 SA2_UL 和 DATH)。

    要检查硬件支持的特性和驱动程序支持的特性、请检查以下各项:

    1. SA2_UL - AM243x MCU+ SDK:SA2UL (TI.com)

    2. DTHE - AM263x MCU+ SDK:DTHE (TI.com)

    3. pka - AM243x MCU+ SDK:pka (TI.com)

    卸载加密的简单步骤:

    1. 创建名为"xyz_alt.h"和"xyz_alt.c"的备用实现.c 和.h 文件、例如 SHA256_alt.c
    2. 在 alt_config.h 中启用宏"MBEDTLS_XYZ_ALT"
    3. 编译作为 MbedTLS 库一部分的替代实现文件。

    根据替代实施方案的效率和优化程度、性能吞吐量可以得到提高、例如在 am24x 上、加密转移到 SA2_UL 加密加速器上、使 AES-CBC 的性能提高~700%- 900%。

    注: 本常见问题解答中显示的数据仅用于演示、通过 am243x 和 am263x 的 mcu_plus_SDK 08_06获取、这些数字不是最优化的、或不表示最佳的器件性能。