https是否可以防止代理服务器的中间人攻击?

信息安全 tls 证书 嗅探器
2021-09-01 22:51:52

有一个桌面客户端 A 在 https 连接中连接到网站 W

A --> W

不知何故,在 A 和 W 之间,有一个代理 G。

A --> G --> W
  • 在这种情况下,G 能否得到 A 之前从 W 那里得到的证书?
  • 如果G能拿到证书,是不是意味着G就能解密数据?
4个回答

HTTPS 是如何工作的?

HTTPS 基于公钥/私钥加密这基本上意味着有一个密钥对:公钥用于加密,秘密私钥用于解密。

证书基本上是带有标识所有者标签的公钥。

因此,当您的浏览器连接到 HTTPS 服务器时,服务器将使用其证书进行响应。浏览器检查证书是否有效

  • 所有者信息需要与用户请求的服务器名称相匹配。
  • 证书需要由受信任的证书颁发机构签名。

如果不满足这些条件之一,则通知用户该问题。

验证后,浏览器提取公钥并使用它对一些信息进行加密,然后将其发送到服务器。服务器可以解密它,因为服务器有匹配的私钥

HTTPS 如何防止中间人攻击?

在这种情况下,G 能否得到 A 之前从 W 那里得到的证书?

是的,证书是带有标签的公钥。网络服务器会将其发送给连接到它的任何人。

如果G能拿到证书,是不是意味着G就能解密数据?

不,证书包含网络服务器的公钥恶意代理不拥有匹配的私钥。因此,如果代理将真实证书转发给客户端,它就无法解密客户端发送给 Web 服务器的信息。

代理服务器可能会尝试伪造证书并提供他自己的公钥。但是,这将破坏认证机构的签名浏览器将警告无效证书。

代理服务器有没有办法读取 HTTPS?

如果您的计算机管理员配合,代理服务器可能会嗅探 https 连接。这在一些公司中用于扫描病毒并执行可接受使用的准则。

设置了本地证书颁发机构,管理员告诉您的浏览器该CA 是可信赖的代理服务器使用这个 CA 来签署他的伪造证书。

哦,当然,用户倾向于点击安全警告。

假设用户没有点击证书警告(并假设您正在运行未修改的客户端),答案是:不,代理无法解密数据

有关 HTTPS 如何防止中间人解密您的流量的详细说明,请参阅 SSL/TLS 上的任何标准资源,例如,

PS 证书是公开数据。它包含服务器的公钥和域名,两者都不是秘密的。观察证书并不能帮助攻击者解密数据。(是的,代理可以观察证书,但这是无害的。)

来自Philipp C. Heckel 的技术博客,做了一些简单的编辑:

虽然无需处理 X.509 证书和证书颁发机构 (CA) 即可攻击未加密的 HTTP 流量,但 SSL 加密的 HTTPS 连接对客户端和服务器之间的每个请求和响应进行端到端加密。而且由于传输的数据是使用共享密钥加密的,中间人(或代理)无法破译交换的数据包。当客户端打开与安全 Web 服务器的 SSL/TLS 连接时,它通过检查两个条件来验证服务器的身份:首先,它检查其证书是否由客户端已知的 CA 签名。其次,它确保服务器的公用名(CN,也:主机名)与它所连接的名称相匹配。如果两个条件都为真,则客户端假定连接是安全的。

为了能够嗅探连接,代理服务器可以充当证书颁发机构,但是,它不是一个非常值得信赖的颁发机构:代理不是向实际的个人或组织颁发证书,而是动态生成证书到连接所需的任何主机名. 例如,如果客户端想要连接到https://www.facebook.com,代理会为“www.facebook.com”生成一个证书,并使用自己的 CA 对其进行签名。如果客户端信任此 CA,则上述两个条件都为真(受信任的 CA,相同的 CN)——这意味着客户端认为代理服务器实际上是“www.facebook.com”。下图显示了此场景的请求/响应流程。这种机制称为透明 HTTPS 代理。

在此处输入图像描述

要使这种攻击起作用,必须满足几个条件:

  • 代理服务器作为标准网关(HTTP 和 HTTPS):对于 HTTP 和 HTTPS 代理,代理服务器当然必须能够拦截 IP 数据包——这意味着它必须位于数据包路径的某处。实现此目的的最简单方法是将客户端设备中的默认网关更改为代理服务器地址。
  • 受信任的代理 CA(仅限 HTTPS):要使 HTTPS 代理工作,客户端必须知道(并信任!)代理 CA,即必须将 CA 密钥文件添加到客户端的信任库中。

在此处输入图像描述

如果您对透明地嗅探普通 SSL 套接字感兴趣,您可能想尝试SSLsplit一个透明的 TLS/SSL 中间人代理。攻击 SSL 的方法有很多,但您不需要伪造的 SSL 证书、流氓证书颁发机构 (CA) 或安全专家 Moxie Marlinspike 的中间人 SSL 攻击的变体。当您可以购买 SSL 拦截代理(例如 Blue Coat Systems 的 ProxySG 或他们最近收购的 Netronome SSL 设备)来为您完成这项工作时,为什么还要这么麻烦呢?


来自ZDNet 上的 Steven J. Vaughan-Nichols(摘录):

SSL 拦截业务中的大腕 Blue Coat 远不是唯一一家提供 SSL 拦截和破解的公司。例如,直到最近,Microsoft 才会向您出售一个程序 Forefront Threat Management Gateway 2010,它也可以为您完成这项工作。有了 SSL 拦截代理程序或设备,实际情况如下:

在此处输入图像描述

如果您的公司正确设置了代理,您将不会知道有任何问题,因为他们会安排在您的机器上注册代理的内部 SSL 证书作为有效证书。如果没有,您将收到一条弹出错误消息,如果您单击继续,将接受“假”数字证书。在任何一种情况下,您都会获得与代理的安全连接,它会获得与外部站点的安全连接——并且通过代理发送的所有内容都可以以纯文本形式读取。哎呀。

根据您所在网络的配置,管理员可能会查看 HTTPS 连接(可能还有 VPN)的内容。

显然可以拦截网络上的流量,但通常的问题是他们无法为您访问的所有站点颁发有效证书,因此您每次访问 HTTPS 站点时都会看到很多证书警告,如果他们试图解密流量以查看它。

但是,如果您使用公司提供的机器,他们可以安装新的证书颁发机构,然后使用它为您访问的站点创建 SSL 证书,因此不会出现问题。

在 VPN 方面,如果 VPN 不使用 SSL,它可能会更复杂,但同样的理论也适用。如果您从他们控制的网络上的其他人拥有的机器访问 Internet,他们可能会访问您输入的任何内容。

如果您想避免此类问题,我会使用您拥有/控制的设备来访问 Internet,这样如果发生任何 SSL 拦截,您应该会收到警告。