我们正在使用配置了 OpenSSL 的 SE05x 中间件库进行主机加密 (-DPTMW_HostCrypto=OPENSSL -DPTMW_OpenSSL=3_0)。我有一些代码使用 AES 密钥设置经过身份验证的会话并观察持续的内存泄漏。通过 valgrind 深入研究,我在 `sss_host_mac_init()` 中发现了内存泄漏。然后我能够确定泄漏会发生在每个 APDU 上,正如 valgrind 回溯所支持的那样:
==4576== 1个块中的144,401(456个直接,143,945个间接)字节肯定丢失在丢失记录1,961 of 1,961中
==4576== 在 0x486551C:malloc (vg_replace_malloc.c:381)
==4576== 0x4A65507:CRYPTO_zalloc(在/usr/lib/libcrypto.so.3 中)
==4576== 0x4A60B43:OSSL_LIB_CTX_new(在/usr/lib/libcrypto.so.3 中)
==4576== 0x4BC237:sss_openssl_mac_context_init (fsl_sss_openssl_apis.c:2965)
==4576== 0x4D9DEB:nxpSCP03_Decrypt_ResponseAPDU (nxScp03_Com.c:154)
==4576== 通过 0x4D946B:se05x_DeCrypt (se05x_tlv.c:727)
==4576== 0x4BD8F3: sss_se05x_TXn (fsl_sss_se05x_apis.c:7011)
==4576== 通过 0x4D16CB:Se05x_API_ReadObject (se05x_APDU_impl.h:769)
==4576== 0x4BE25B:sss_se05x_session_prop_get_au8 (fsl_sss_se05x_apis.c:856)我在本地修补了这个问题(一旦我得到管理层的批准,我将提交补丁),但考虑到它的严重性,这会对任何长时间运行的进程产生合理的影响。
这让我想到了以下问题:
- 是否支持 openssl 主机加密并积极测试?
- 如果是,哪个版本的 openssl?
- 如果现在,我应该切换到 mbedtls 吗?