假设您有一个带有 HTTPS 流量的 PCAP 文件并具有密钥对(私有和公共),如果它使用 Diffie Hellman Ephemeral 可以解密流量吗?例如使用 openSSL 库。
据我所知,答案是否定的,因为 DHE 为每个连接生成一个新对,所以它不使用我们在 apache 配置中放置的密钥,不是吗?
我的任务是,知道私钥和公钥,解密流量。当然有很多 CipherSuite。我正在研究这个目标的局限性。
假设您有一个带有 HTTPS 流量的 PCAP 文件并具有密钥对(私有和公共),如果它使用 Diffie Hellman Ephemeral 可以解密流量吗?例如使用 openSSL 库。
据我所知,答案是否定的,因为 DHE 为每个连接生成一个新对,所以它不使用我们在 apache 配置中放置的密钥,不是吗?
我的任务是,知道私钥和公钥,解密流量。当然有很多 CipherSuite。我正在研究这个目标的局限性。
当 TLS/SSL 握手开始时,第一步是使用与服务器证书关联的私钥对服务器进行身份验证。在第二步中,客户端和服务器交换用于加密连接有效负载的会话密钥。会话密钥用于一个会话意味着当会话关闭时,相同的密钥不能用于加密另一个会话的流量。现在的问题是 SSL/TLS 经常使用 RSA 密码套件,其中会话密钥是从私钥派生的。因此,如果底层私有是已知的,将来可以计算会话密钥。
DHE 和 ECDHE 提供完美前向保密(PFS),意味着会话密钥不是从私钥派生的。因此,即使攻击者拥有会话握手中使用的私钥,攻击者也无法解密流量。
在 DHE(不是 DH)中,会话密钥是使用随机数计算的。
结论
使用 DHE 或 ECDHE 时,您无法使用私钥解密流量。
仅作记录:cloudflare 发布了一些关于 RSA 和 DH 握手如何工作的好图表:


总结一下:不,你不能。这是DHE 的确切点。用夸张的说法,DHE 提供了完美的前向保密,这意味着永久服务器的私钥(对应于服务器证书中的公钥)的知识不足以解密过去的会话。
从技术上讲,当使用 DHE 时,服务器的证书和私钥仅用于签名:服务器对其临时的、新生成的 DH 公钥进行签名;客户端验证该签名。所以使用私钥;仅不用于加密目的。通过拥有服务器私钥的副本,您可以伪造一个伪造的签名,这意味着您可以冒充服务器;但是签名不会隐藏数据,因此仅被动攻击(正如您提议的那样)无法以这种方式学习任何东西。
如果服务器使用 DHE 并且您需要查看数据,那么您必须发起主动攻击,通常称为中间人攻击。你冒充假服务器;您使用您对服务器私钥的了解来冒充服务器;当客户端连接时,您还作为客户端连接到真正的服务器,并在两个方向中继数据。MitM 对从客户端接收到的数据进行解密,并将其重新加密为与真实服务器打开的 SSL 连接,并且在服务器到客户端的方向上执行相同的操作。这样,中间人就可以看到所有数据,但他必须在连接时积极工作。事后他不能这样做,即解密他被动记录的过去会话。因此 PFS。