【问题标题】:PSA crypto library makes big binaryPSA 加密库生成大二进制文件
【发布时间】:2022-07-17 18:12:45
【问题描述】:

尝试使用 PSA Crypto API 库为 ARM Renesas RA6M1 控制器构建程序。 看起来像在我的项目中添加密码库会在调试构建时生成太大的二进制文件。我只需要整个库功能的一小部分:

  • 生成密钥 RSA 2048 位 RSA PKCS #1 v2.2

  • 签名和检查签名功能 RSASSA-PKCS1-v1_5

  • 加密功能 RSASSA-PKCS1-v1_5

我发现文件 crypto_config.h 看起来像允许选择所需内容的配置文件。我是正确的?但我的 Segger Embedded 项目不包含此标头。为什么?

如何通过加密库配置使二进制文件更小?

crypto_config.h 的内容:

#ifndef PSA_CRYPTO_CONFIG_H
#define PSA_CRYPTO_CONFIG_H

#define PSA_WANT_ALG_DETERMINISTIC_ECDSA        1
#define PSA_WANT_ALG_ECDH                       1
#define PSA_WANT_ALG_ECDSA                      1
#define PSA_WANT_ALG_HKDF                       1
#define PSA_WANT_ALG_HMAC                       1
#define PSA_WANT_ALG_MD2                        1
#define PSA_WANT_ALG_MD4                        1
#define PSA_WANT_ALG_MD5                        1
#define PSA_WANT_ALG_RIPEMD160                  1
#define PSA_WANT_ALG_RSA_OAEP                   1
#define PSA_WANT_ALG_RSA_PKCS1V15_CRYPT         1
#define PSA_WANT_ALG_RSA_PKCS1V15_SIGN          1
#define PSA_WANT_ALG_RSA_PSS                    1
#define PSA_WANT_ALG_SHA_1                      1
#define PSA_WANT_ALG_SHA_224                    1
#define PSA_WANT_ALG_SHA_256                    1
#define PSA_WANT_ALG_SHA_384                    1
#define PSA_WANT_ALG_SHA_512                    1
#define PSA_WANT_ALG_TLS12_PRF                  1
#define PSA_WANT_ALG_TLS12_PSK_TO_MS            1
#define PSA_WANT_KEY_TYPE_ECC_KEY_PAIR          1
#define PSA_WANT_KEY_TYPE_ECC_PUBLIC_KEY        1
#define PSA_WANT_KEY_TYPE_RSA_KEY_PAIR          1
#define PSA_WANT_KEY_TYPE_RSA_PUBLIC_KEY        1

#endif /* PSA_CRYPTO_CONFIG_H */

【问题讨论】:

  • 您是否尝试将所有设置为 0 以确认该文件确实不包含在内?
  • 我添加了“blablabla”行以损坏头文件,并期望得到编译错误。重建后没有发现错误。
  • 您在编译时是否尝试过优化大小?它应该能够从最终的精灵中删除未使用的功能。

标签: c arm embedded cryptoapi mbedtls


【解决方案1】:

Mbed TLS 2.28/3.x 有两种配置 PSA 加密的方法:旧版或下一代。默认是旧方法。

在旧版配置方法中,通过旧版 API (mbedtls_xxx) 启用的所有机制也通过 PSA API (psa_xxx) 启用。例如,如果您启用MBEDTLS_RSA_CMBEDTLS_GENPRIMEMBEDTLS_PKCS1_V15,则可以通过psa_xxx 函数使用RSA 密钥导入/生成、PSA_ALG_RSA_PKCS1V15_SIGN 签名/验证以及PSA_ALG_RSA_PKCS1V15-CRYPT 加密/解密。只有mbedtls/mbedtls_config.h(Mbed TLS 2.x 中的mbedtls/config.h)是相关的,psa/crypto_config.h 被忽略。

在下一代配置方法中,PSA加密通过psa/crypto_config.h配置。如果此处启用了某种机制并且没有驱动程序存在,则相应的MBEDTLS_XXX 符号将自动启用。要启用下一代 PSA 加密配置方法,请在 mbedtls/mbedtls_config.h 中设置 MBEDTLS_PSA_CRYPTO_CONFIG

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-11-30
    • 2013-10-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多