gpt4 book ai didi

c - 如何使用基于 OpenSSL 的客户端提取预主 key ?

转载 作者:太空宇宙 更新时间:2023-11-03 14:45:33 33 4
gpt4 key购买 nike

我正在制作一个使用 OpenSSL 1.0.2 的应用程序,我想使用 Wireshark 检查流量。 Wireshark 可以(据称)解密 TLS 对话,前提是你给它预主 key 。

如果我使用像 TLS_RSA_WITH_AES_256_CBC_SHA256 这样的密码套件;谁能告诉我如何从 SSLSSL_CTX 结构中获取预主 key ?我同意破解 SSL 对象中的不透明结构——这不适用于产品中附带的任何东西;我只想知道如何为 Wireshark 填充预主 key 文件。

最佳答案

我建议使用主 key ,它更容易获得。据我所知,预主 key 仅临时存在于 OpenSSL 的堆栈中。主 key 在 ssl_session_st 中可用。 (在 1.0.2 分支的 ssl.h 中定义,但在更高版本中移至 ssl_locl.h)。 SSL 成员变量 session 是指向其 ssl_session_st(又名 SSL_SESSION)的指针。

Wireshark 可以使用主 key 和预主 key 来解密连接。 Here are the formats在撰写本文时 Wireshark 支持:

  • RSA xxxx yyyy其中 xxxx 是加密的预主 key (十六进制编码)的前 8 个字节其中 yyyy 是明文预主 key (十六进制编码)(这是 bug 4349 引入的原始格式)

  • RSA Session-ID:xxxx Master-Key:yyyy其中 xxxx 是 SSL session ID(十六进制编码)其中 yyyy 是明文主 key (十六进制编码)(添加以支持 openssl s_client Master-Key 输出)这有点用词不当,因为没有什么特定于 RSA 的关于这个。

  • PMS_CLIENT_RANDOM xxxx yyyy其中 xxxx 是来自 ClientHello 的 client_random(十六进制编码)其中 yyyy 是明文预主 key (十六进制编码)(此格式允许解密 SSL 连接,如果用户可以捕获 PMS 但无法恢复特定 session 的 MS使用 SSL 服务器。)

  • CLIENT_RANDOM xxxx yyyy其中 xxxx 是来自 ClientHello 的 client_random(十六进制编码)其中 yyyy 是明文主 key (十六进制编码)(此格式允许解密非 RSA SSL 连接,即ECDHE-RSA。)

请注意,预主 key 和主 key 都不是对称 key (您的问题标题暗示您可能认为是)。对称 key 来源于主 key 和客户端/服务器随机数据。

关于c - 如何使用基于 OpenSSL 的客户端提取预主 key ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39298711/

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