为什么可以嗅探 HTTPS / SSL 请求?

信息安全 tls http 中间人 代理人 嗅探
2021-08-25 14:23:10

我是 HTTP 请求和安全领域的新手,但从我所读到的内容来看,如果您希望对请求和响应进行加密,请使用 HTTPS 和 SSL,这样会很好。上一个问题中的某个人发布了指向此应用程序的链接http://www.charlesproxy.com/,这表明实际上可以嗅探 HTTPS 请求,并以纯文本形式查看请求和响应。

我尝试使用 facebook.com 登录,我确实能够以纯文本形式查看我的用户名和密码。容易了。这是怎么回事?我认为这就是 HTTPS 的全部意义——加密请求和响应?

2个回答

这在他们关于SSL 代理的页面中进行了解释,可能没有足够的解释。

根据定义,代理是中间人:客户端连接到代理,代理连接到服务器。

SSL 做了两件事:

  • 它确保已建立连接的机密性和完整性。
  • 它对您正在连接的人进行一些验证。

第二部分很重要,而且看起来很糟糕:您坐在浏览器前,惊讶地发现您的浏览器正在连接到代理,而您希望它连接到 Facebook。从技术上讲,代理不是在嗅探 HTTPS 流量,而是在转发它。

您的浏览器知道它已连接到 Facebook,因为该站点有一个证书,上面写着“我真的www.facebook.com”。公钥密码学,通过我不会进入这里的方式,确保只有私钥的持有者才能启动与此证书的有效连接。这只是成功的一半:您只有服务器声称它确实是www.facebook.com而不是randomhijacker.com. 您的浏览器会另外检查证书是否已由证书颁发机构验证。您的浏览器或操作系统附带了它信任的证书颁发机构列表。同样,公钥加密确保只有 CA 可以发出您的浏览器将接受的证书。

当您连接到代理时,您的浏览器会收到一个证书,上面写着“我真的www.facebook.com”。但此证书并非由您的浏览器默认信任的 CA 签署。所以:

  • 要么您收到有关不安全 HTTPS 连接的警告,您点击查看该连接的位置https://www.facebook.com/
  • 或者您将签署代理证书的 CA(“Charles 的 CA 证书”)添加到浏览器信任的 CA 列表中。

无论哪种方式,您都告诉浏览器信任代理。确实如此。如果您开始信任随机的陌生人,则 SSL 连接是不安全的。

推荐阅读以获取更多信息:

除非您有权访问会话对称密钥,否则您无法破坏https简而言之,https会话以这种方式工作:

  1. 客户端和服务器交换一些初始信息
  2. 使用此信息,客户端能够验证服务器,确保它是值得信任的。
  3. 客户端使用服务器的公钥向他发送一个加密的秘密
  4. 服务器使用他的私钥解密这个秘密(只有经过身份验证的服务器才能这样做!)
  5. 客户端和服务器都使用秘密在本地生成会话对称密钥
  6. 现在他们可以安全地相互交谈,因为没有其他人知道他们的会话对称密钥

如果第三方能够以某种方式访问​​共享秘密,他也将能够生成会话对称密钥并解密通信。