使用 Wireshark 中的 (Pre)-Master-Secret 日志文件解密应用程序数据

使用 Wireshark 中的 (Pre)-Master-Secret 日志文件解密应用程序数据

我读过几篇文章,概述了不使用私钥解密 SSL/TLS 流量的过程。会话密钥在日志文件中生成,然后通过指向日志文件从 Wireshark 读取这些密钥。

使用会话密钥解密 SSL 流量

但是,我特定的日志文件包含会话密钥,它是在我们与 Wireshark 执行数据包捕获会话后创建的。是否可以使用写入此日志文件的密钥来解密之前在 Wireshark 中捕获的数据包,还是必须同时完成此过程(写入日志文件并在 Wireshark 中捕获数据包)?

事实上,这些都是会议keys 让我认为写入日志文件的键必须与捕获的数据包相关联,但我无法确认确实如此。

答案1

不,可能不会,除非密钥在同一会话的稍后阶段被记录。每个会话都使用自己的密钥。

根据 MSDN:

会议

An exchange of messages under the protection of a single piece of 
keying material. For example, SSL sessions use a single key to send
multiple messages back and forth under that key. 

会话密钥

A relatively short-lived cryptographic key, often negotiated by a   
client and a server based on a shared secret. A session key's lifespan
is bounded by the session to which it is associated. A session key
should be strong enough to withstand cryptanalysis for the lifespan of
the session. When session keys are transmitted, they are generally
protected with key exchange keys (which are usually asymmetric keys)
so that only the intended recipient can access them. Session keys can
be derived from hash values by calling the CryptDeriveKey function.

来源

因此,几乎可以肯定,您捕获的消息正在使用以前的密钥,除非您在开始新会话之前记录捕获的密钥。

TLS 和 SSL 使用确定性伪随机数生成器 (DPRNG),为密钥生成流序列,该序列在主机和客户端上并行生成,基于它们协商的共享种子值,因此您需要知道初始种子,然后是每条消息的偏移量(因为它是流密码),并有办法将 DPRNG 快速转发到消息流部分的正确位置。Wireshark 很可能有能力执行后者,前提是它从一开始就捕获了流,但如果没有种子,您将无法找到特定消息的密钥。

相关内容