你能解密传入的SSL流量吗?

时间:2014-06-15 17:18:00

标签: ssl encryption cryptography fiddler wireshark

有一个与此类似的问题,但它会询问您是否可以使用证书解密SSL。

所以我的问题是,如果您使用Wireshark从设备捕获所有流量,那么您是否应该至少有足够的信息来解密传入流量?我听到的是服务器发送一个公钥,计算机用它来生成一个对称密钥来加密数据,这些数据只能在服务器上解密。但是如果一切都是加密的,那么浏览器如何解密传入的流量呢?并且不能被拦截,或者浏览器如何能够解密服务器发送的内容?

我也使用了Fiddler,看起来Fiddler可以在facebook和facebook上看到https流量,那么这个怎么样呢?

3 个答案:

答案 0 :(得分:2)

Fiddler充当中间人:它将自己生成的证书(带有自己的私钥/公钥对)发送给客户端。因此,当客户端将对称密钥发送给Fiddler时,它使用与Fiddler本身已有的私钥匹配的公钥来实现。请参阅What is point of SSL if fiddler 2 can decrypt all calls over HTTPS?以了解如何配置浏览器以允许此操作。

在Fiddler获得解密流量后,它会重新发送到服务器的请求,假装服务器就像它是客户端一样,使用服务器的公钥来加密用于从Fiddler与服务器通信的新对称密钥。

[Client] -FiddlerPublicKey(SymmetricKey1)--> [Fiddler] -ServerPublicKey(SymmetricKey2)--> [Server]

相比之下,当您使用服务器的私钥提供时,Wireshark可以解密流量;它可以查找客户端发送对称密钥的消息,并使用服务器通常持有的(通常是秘密的)私钥对其进行解密。

答案 1 :(得分:0)

公钥和私钥(不对称加密)用于生成双方相同的共享密钥(对称加密)。其中一个原因是因为对称加密比非对称加密快得多。

Wireshark可以解密SSL流吗?是的 - 即使数据是用于浏览器,如果加密密钥can be provided,Wireshark可以解密它:

  

SSL解析器功能齐全,甚至支持高级功能   如果加密密钥可以解密SSL等功能   提供和Wireshark是针对GnuTLS(而不是OpenSSL)编译的   或bsafe)。这适用于RSA私钥。

这可能有点麻烦,但是由于SSL是用于端到端加密所必需的,这意味着只有浏览器和服务器应该能够解密消息。

修改 Fiddler能够通过充当您的请求的代理来解密您的SSL(Wirehark不会这样做)。

答案 2 :(得分:0)

没有。如果您拥有所有流量,则无法解密。即使您拥有证书的私钥,私钥也仅用于进行身份验证。通信程序(服务器和浏览器)在握手期间生成流量加密的密钥。因此,您的浏览器在内存中具有加密密钥,这允许它解密流量。在同一台机器上运行的其他程序都不会拥有它们。这包括Wireshark。

如果您拥有私钥,那么您可以进行中间人攻击(即您实际上是一个代理)。在这种情况下,您(或任何程序,例如Fiddler)将生成加密密钥,因此它可以解密流量。

总而言之,您需要一个主动攻击者而不是被动攻击者。即使给定双方的长期私钥(即证书的私钥),刚刚复制了会话期间传输的所有数据的被动攻击者也无法对其进行解密。

编辑:作为澄清,如果使用错误的密码套件,那么知道RSA私钥确实允许解密流量。这就是为什么应该使用短暂的DH套件。 Post Heartbleed这有望成为常态。