我在嵌入式平台上运行Mbed TLS作为核心安全库。 我的应用程序用于使用PEAPv0连接到企业网络,mschapv2作为phase2身份验证。
以下是设置详情 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
我使用TLSv1.2和密码套件MBEDTLS_TLS_RSA_WITH_AES_256_GCM_SHA384 / MBEDTLS_TLS_ECDHE_WITH_AES_256_GCM_SHA384并且我正在为所提到的密码套件提供内置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。 然后alos im无法找到实现差异wrt openssl" SSL_export_keying_material"功能和Mbedtls" tls_prf"。
我可以知道我还缺少什么。
答案 0 :(得分:0)
要获得可见性,请在Mbed TLS support forum中复制我的答案:
要排除基础知识,请验证您的配置文件中是否已定义MBEDTLS_SHA512_C
。
密钥材料在mbedtls_ssl_derive_keys()
中生成。它应该派生使用SSL_export_keying_material()
派生的相同密钥。
如果可能,您应检查客户端和服务器的输入参数是否相同,例如,您的平台上没有内存问题,导致缓冲区中的内容损坏。
问候,
Mbed TL团队成员
罗恩