gpt4 book ai didi

ssl - 将 OpenSSL 1.0.2 移植到 ECOS 后出现错误的 MAC

转载 作者:太空宇宙 更新时间:2023-11-03 12:53:59 26 4
gpt4 key购买 nike

我们有一个在我们的嵌入式系统上运行的 OpenSSL,它正在运行 ECOS OS .我们现在正在将 OpenSSL 升级到 1.0.2 版本。我们已经成功移植并编译了OpenSSL库。但是当我们尝试使用 SSL(通过 https)连接我们的设备时,握手失败并始终出现错误记录 mac 警报。我们启用了 OpenSSL 调试选项,但无法确定其失败的原因。

有人将最新的 OpenSSL 代码移植到 ECOS 吗?我们是否需要为 ECOS 使用最新的 OpenSSL 代码的任何特殊编译标志?

作为引用,这里是ssl3_get_record的相关部分:

mac = rr->data + rr->length;
i=s->method->ssl3_enc->mac(s,md,0 /* not send */);
if (i < 0 || CRYPTO_memcmp(md, mac, (size_t)mac_size) != 0)
{
al=SSL_AD_BAD_RECORD_MAC;
SSLerr(SSL_F_SSL3_GET_RECORD,SSL_R_DECRYPTION_FAILED_OR_BAD_RECORD_MAC);
goto f_err;
}

最佳答案

调试后我们发现随机库 ( RAND ) 对于 ECOS 失败。 OpenSSL 中有很多地方检查 random_bytes 返回类型。由于此故障,预主 key 解密失败。传入的数据包未正确解密。因此,出现了 BAD Mac 记录错误。

我们还检查了旧的移植代码 (0.9.6),RAND 库在那里也失败了,但是我们没有返回检查 random_bytes 和 pseudo_rand_bytes。作为修复,我们让 RAND 每次都返回成功,并且我们可以看到使用 OpenSSL 1.0.2 版本可以很好地建立 SSL session 。

关于ssl - 将 OpenSSL 1.0.2 移植到 ECOS 后出现错误的 MAC,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30828257/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com