SSL对MITM攻击的安全性如何?

时间:2018-03-05 09:18:08

标签: security ssl encryption https

因此,我(可能不正确)了解SSL握手的工作方式是:

  1. 客户端发送一个(可能是未加密的,因为客户端没有加密信息)请求到服务器,要求公钥(MITM可以轻松访问),服务器发送回来给客户。

  2. 客户端生成一个永远不会与任何人共享的随机密码,并使用公钥(只能用于加密数据)对其进行加密,然后将此加密密码发送到服务器。

  3. 服务器使用其私钥解密加密密码(只有它知道,并且只能用于解密数据),从而获取客户端的密码,而不让MITM得到它,因为他没有私钥。

  4. 不知何故,这用于在客户端和服务器之间传输敏感信息(我不确定使用的是随机密码。所有敏感信息都不能用公钥加密吗?)。

  5. 我想知道为什么MITM无法解密敏感信息:

    1. 将所有流量从客户端重定向到MITM拥有的站点。这包括客户端对公钥的请求,该公钥将被MITM的服务器公钥替换。此外,回复应该伪装成来自真实服务器的回复。

    2. MITM的服务器将使用其私钥解密此流量,从而泄露敏感信息。然后,可以使用真实服务器的公钥对这些敏感信息进行加密,并将其发送到真实服务器,以便客户端获取它所要求的任何内容。

2 个答案:

答案 0 :(得分:1)

至于MitM伪造公钥 - 这就是使用证书的原因。证书将公钥与其所有者绑定,如果网站是其域名。因此,如果您输入ab.com,您将从服务器获得带有ab.com证书的公钥(如果没有,浏览器会抱怨)。如果中间有一个人,他们必须拥有为ab.com颁发的证书,这不是(轻松)可能的,但是请参阅CA hacks,攻击者利用证书颁发机构漏洞发布欺诈性证书。

SSL握手也比这更复杂,其中一部分称为密钥交换,并且是基于先前商定的算法提出用于流量加密的会话密钥。请注意,有多种算法可用于提供会话密钥(在客户端上生成它并使用公钥加密发送它是一种非常天真的方法),还有多种算法可以使用这些密钥进行加密。

A"密码套件"在SSL / TLS会话期间使用的实际上是为不同目的选择的算法列表。

答案 1 :(得分:0)

  

客户端向服务器发送(可能是未加密的,因为客户端没有加密信息)请求,要求公共密钥(MITM可以轻松访问),服务器将其发送回客户端

没有。服务器将签名证书发送回客户端,该证书包含其公钥,签名者和使用服务器私钥的数字签名。

  

客户端生成一个永远不会与任何人共享的随机密码,并使用公钥(只能用于加密数据)对其进行加密,然后将此加密密码发送到服务器。服务器使用其私钥解密加密密码(只有它知道,并且只能用于解密数据),从而获取客户端的密码,而不让MITM获取密码,因为他没有私钥。

仅限某些密码套件。不是全部。

  

不知何故,这用于在客户端和服务器之间传输敏感信息(我不确定随机密码用于什么。

除了一些密码套件外,它根本没有使用。无论如何,对称的视频密钥由两个对等体协商并且根本不传输。

  

是否所有敏感信息都不能用公钥加密?)。

没有。您还必须建立身份,即进行身份验证。

  

我想知道为什么MITM无法解密敏感信息:

因为MITM无法在证书上伪造数字签名。否则,你正和任何人进行秘密谈话。

  

将所有流量从客户端重定向到MITM拥有的站点。这包括客户端对公钥的请求,该公钥将被MITM的服务器公钥替换。此外,回复应该伪装成来自真实服务器的回复。

不可能,见上文。

  

MITM的服务器将使用其私钥解密此流量,从而泄露敏感信息。然后,可以使用真实服务器的公钥对这些敏感信息进行加密,并将其发送到真实服务器,以便客户端获得所需的任何信息。

不可能,见上文。

您对TLS和PKI的理解存在严重缺陷。