在wireshark中用密码TLS_ECDHE_RSA解密ssl数据包

我正在尝试使用wireshark在数据包捕获中解码ssl数据包。 当TLS握手期间服务器select的密码是TLS_RSA_WITH_AES_256_CBC_SHA256时,我能够成功解码带有服务器密钥的数据包。我只是在edit-> preferences-> Protocols-中提到服务器IP /端口/协议(http)/server.key。 > SSL。 但是,当使用的密码是TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256时,它不工作我正在使用Wireshark版本2.0.2。 有没有其他解码方式?

你的问题的答案是

不,因为ECDHE_RSA。

现在让我们看看为什么这样。 我们来看看整个密码套件规范TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256的细节:

  • TLS – 协议
  • ECDHE_RSA – authentication和密钥交换algorithm
  • WITH_AES_128 – encryption/解密algorithm
  • GCM – 用于encryption数据的模式,因此可以安全地与algorithm一起使用
  • 消息authentication码algorithm

密钥交换algorithm是指定如何交换批量encryption/解密密码的密钥。 ECDHE_RSA中使用的Diffie-Hellman密钥交换还有一些特殊之处:

DHE_RSA提供了一种称为“完全向前保密”(Perfect Forward Secrecy)的特性,它是以下属性的一个浮夸名称:如果您的服务器被彻底入侵,攻击者获得服务器私钥的副本,那么他也将能够解密过去的TLS会话(他logging),如果这些会话使用RSA,而他将不能这样做,如果这些会话使用DHE_RSA。

从安全的答案偷窃

换句话说, 使用(EC)DHE,即使您拥有服务器的私钥,也不能从TLS密文对话中检索用于encryption和解密的AES密钥。

单独依靠RSA进行密钥交换时,情况是不同的:在这种操作模式下,要使用的批量密钥是由客户端生成的,用服务器的公钥进行RSAencryption并发送给服务器。 如果窃听的第三方拥有服务器的私钥,那么它只能解密密钥交换的RSA密文,获得批量密钥并解密其他信息。 这正是Wireshark为您解码TLSstream时所做的。

那么,对于基于RSA的密钥交换有什么作用,对于基于DHE的密钥交换不起作用。