使用从openssl api获取的密钥解密ssl网络数据包

时间:2010-12-16 11:12:46

标签: ssl openssl aes encryption symmetric-key

我有一个在我的计算机上运行的客户端应用程序,它使用openssl与服务器使用SSLv3进行通信。我需要看看他们说什么,所以我基本上想要编辑和重新编译openssl库以获取相关的加密密钥。

该应用程序通常使用TLS-DHE-RSA-WITH-AES-256-CBC-SHA作为密码套件。有时它使用aes128而不是aes256,但这在现阶段并不重要。到目前为止我编辑了s3_enc.c文件。在ssl3_setup_key_block函数结束时,我将主密钥,密钥块(客户端 - 服务器写密钥,mac密钥和IV),服务器和客户端randoms写入文件。 http://www.ietf.org/rfc/rfc2246.txt表示如果流密码是可导出的,则客户端 - 服务器写密钥将相应地更新为最终客户端 - 服务器写密钥。我不确定这个密码套件是否被认为是可导出的(无论这意味着什么),但无论如何我都会创建最终的写密钥。

问题是我试过的,我无法成功解密使用wireshark获取的任何数据包。无论如何,输出都没有意义,我被卡住了。我正在考虑在解密后检查数据包的mac字段,以查看解密是否正确。但这似乎也是一个死胡同。

有没有人知道我错过了什么,我可能做错了什么?

1 个答案:

答案 0 :(得分:1)

如果您可以修改OpenSSL并使您的客户端应用程序使用它,那么您需要做的就是让修改后的OpenSSL将解密后的数据转储到该文件中。更简单的替代方案是使OpenSSL使用NULL密码套件之一,即使应用程序请求某些加密也是如此。