0

我在嵌入式平台中运行 Mbed TLS 作为核心安全库。我的应用程序用于使用带有 mschapv2 的 PEAPv0 作为阶段 2 身份验证连接到企业网络。

以下是 Ubuntu 上的设置详细信息服务器设置

      Eap Server : Free radius with version 3.0.15
      openssl :1.0.2g
      Ubuntu version : 16.04LTS

客户端设置

      platform : Micro controller based platform
      OS : FreeRTOS

我正在使用带有密码套件 MBEDTLS_TLS_RSA_WITH_AES_256_GCM_SHA384 / MBEDTLS_TLS_ECDHE_WITH_AES_256_GCM_SHA384 的 TLSv1.2,并且我在上述密码套件的内置 tls-prf 函数的帮助下使用 tls_prf_sha384 函数,我发现在客户端和服务器端生成的 MPPE 密钥是不匹配。

但是当我使用 MBEDTLS_TLS_RSA_WITH_AES_256_GCM_SHA256 / MBEDTLS_TLS_RSA_WITH_AES_128_CBC_SHA 哪个实习生使用 tls_prf_sha256 时,我发现生成的 MPPE 密钥在两端都匹配

然而,根据 TLS v1.2 RFC,已经提供了基于客户端-服务器协商动态选择密码套件的规定。但在低于 TLSv1.2 的情况下,它使用 tls1_prf 函数。

当我查看 openssl 代码、freeradius 和 wpa_supplicant 代码时,它使用函数 SSL_export_keying_material 。然后我也找不到 wrt openssl "SSL_export_keying_material" 函数和 Mbedtls "tls_prf" 的实现差异。

我可以知道我还缺少什么。

4

1 回答 1

0

为了可见性,请在Mbed TLS 支持论坛中复制我的答案:

要排除基本情况,请确认您已MBEDTLS_SHA512_C在配置文件中定义。密钥材料在mbedtls_ssl_derive_keys(). 它应该派生与使用SSL_export_keying_material(). 如果可能,您应该检查客户端和服务器的输入参数是否相同,例如,您的平台上没有内存问题,导致缓冲区损坏。问候, Mbed TLs 团队成员 Ron

于 2018-01-18T15:24:47.490 回答