【发布时间】:2022-01-07 14:28:05
【问题描述】:
我想从我的 TLS 客户端和服务器程序创建一个秘密文件(这些目前只是测试程序:client.exe 和 server.exe,我在其中玩 SSL/TLS),稍后可用于解密 Wireshark 中的流量。
对于 TLS 1.2,我创建了一个具有以下格式的 CLIENT_RANDOM 文件(仅测试单个连接,因此文件中只有 1 行):
CLIENT_RANDOM <32 bytes client random in hex format> <48 bytes master secret in hex format>
代码 sn -p 读取随机数和主密钥:
uint8_t random[SSL3_RANDOM_SIZE];
size_t randomLength = SSL_get_client_random(ssl, random, SSL3_RANDOM_SIZE);
...
uint8_t masterKey[SSL_MAX_MASTER_KEY_LENGTH];
size_t masterKeyLength = SSL_SESSION_get_master_key(SSL_get_session(ssl), masterKey, sizeof(masterKey));
将此(客户端或服务器)机密文件作为 Pre-Master-Secret 日志文件导入 Wireshark,我能够解密 TLS 1.2 流量,但据我所知,CLIENT_RANDOM 不能用于 TLS 1.3(至少它对我不起作用),但我应该在那里使用,即 CLIENT_HANDSHAKE_TRAFFIC_SECRET/SERVER_HANDSHAKE_TRAFFIC_SECRET。
这种秘密的格式是什么?如何使用 OpenSSL API 获取这些数据,以便能够解密 Wireshark 中的 TLS 1.3 流量?
【问题讨论】: