密码如何通过非 SSL 连接被盗?

信息安全 tls
2021-08-31 12:43:28

我在这个领域工作了 20 年,问这个问题有点尴尬,但是有人可以向我描述为什么我应该在任何使用身份验证的网站上运行 SSL 吗?我理解更大的“为什么”问题(人们在博客和银行上使用相同的密码)并且我假设密码存储在站点数据库中,但我想真正简单地解释传输非 SSL 的技术风险以实际应用为基础的密码。

示例:我在 bluehost 上托管了一个 wordpress 博客。我进入登录页面并输入我的用户名和密码,然后按提交。该信息通过未加密的 HTTP POST 发送到 Web 服务器。

现在,如果有人在我的网络或任何广播数据包的网络上运行嗅探器,他们可以读取数据包并编写代码来解析有趣的单词,如“登录”或“密码”。它是这样工作的吗?

在我的示例中这将如何工作?假设我的家庭网络上没有人——否则,我已经对我控制范围内的设备采取了适当的安全措施。黑客如何进入我和我的网站之间?他或她是否只需登录到他们自己的 bluehost 帐户并能够监控子网上的所有流量?或者他们可以在两者之间的任何地方吗?例如,我在 Verizon FIOS 上,所以他们可能会进入(安装自动化流程)Verizon 网络中某处的服务器。或者他们真的可以在任何地方吗?

我对网络的理解是,我的设备广播具有目标 IP 的数据包,即 bluehost 服务器。这些数据包被我的路由器“注意到”并重新发送到属于 Verizon 网络的上游路由器和交换机。当它们跨越每个子网时,位于该网络上的任何设备都有可能在本地广播数据包时观察数据包。好的做法是让那些网络设置安全,不会导致人们能够进入中间......但是一旦信息到达 bluehost,那么我们在广播数据包方面任由他们摆布。一旦 http 服务器“听到” POST 的信息,它就会加密并与本地加密的密码进行比较。

这是一种准确的思考方式并向他人解释吗?

1个回答

当通过 Internet 交换数据时,它会从一个路由器跳到另一个路由器,从源(您的台式计算机)开始,到目标(您要向其发送密码的身份验证服务器)结束。根据定义,所有路由器“看到”数据。而且,任何两台路由器之间的链路直接插入的所有机器也可以看到数据。

在实践中,对于低级攻击者来说,密码嗅探主要通过三种机制发生:

  1. 贴近用户(你)。例如,您正在使用笔记本电脑并通过 WiFi 接入点进行连接;连接到同一接入点的其他机器可以看到您的所有流量。请注意,“采取措施”来阻止此类本地攻击者可能非常困难(例如,忘记它涉及 WiFi)。

  2. 靠近服务器。通常,服务器大量托管在一些共享设施中,不雅的服务器所有者可能会监视他们的邻居。这是否可行甚至容易,很大程度上取决于托管站点的网络管理员的能力。

  3. 通过主动重定向。当您想连接到服务器时,您实际上输入了一个名称,然后DNS会找到与该名称对应的 IP 地址。您的机器会将数据包发送到该 IP 地址。然而,作为一个整体,DNS 受到的保护很差,并且可以被恶意个人更改。然后,坏人可能会透明地将您的数据包重定向到他自己的机器;他甚至可以检查数据但仍将其转发到他们的真实目的地,这使他成为中间人此时,攻击者会看到所有数据,包括密码和密码保护的任何内容,并且可以随时劫持连接。

所有这三种嗅探都可以付诸实践,并由预算数百美元且缺乏道德的学生实际应用。更高级的犯罪分子可以使用其他主动方法,例如试图扰乱动态路由机制或者干脆贿赂网络设施的员工(特别是互联网服务提供商)。

SSL(现在称为“TLS”)以多种方式解决问题:

  • 它使用只有两个端点(您的机器和服务器)知道的密钥加密所有数据,有效地阻止了被动窃听者。
  • 它使用服务器的证书,以便客户端可以确信它确实在与预期的正版服务器通信,而不是攻击者控制的假冒。这就是挂锁图片和 Web 浏览器中可怕警告的重点。
  • SSL 确保持续的完整性,这意味着主动攻击者不能简单地将自己置于中间人位置,来回转发数据字节,然后在身份验证发生后劫持连接。SSL 授予的保护既是为了机密性(数据不被外部人员读取)又是完整性(数据不能被外部人员更改),这包括完整的连接,而不仅仅是初始步骤。

在 SSL 处于活动状态且没有证书验证问题的情况下,您可以发送密码并合理保证只有预期的服务器才能看到它。服务器如何验证密码在这里无关紧要。此外,再次感谢 SSL,服务器可以假设初始身份验证对同一连接上的所有后续流量都有效,因为 SSL 保证它将一直与同一个客户端通信。