我在嵌入式平台中运行 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" 的实现差异。
我可以知道我还缺少什么。