SSL如何加密从服务器到客户端的数据?

Sim*_*mon 19 encryption ssl-certificate

大多数wiki文章描述了客户端浏览器如何使用公钥(证书)加密敏感数据(例如用户名/密码)并将此加密数据发送到服务器.服务器将使用私钥对其进行解密.我得到这个部分.但没有明确的信息说服务器如何加密数据并发送回浏览器.

以我的网上银行为例:

(0)我已经从我的网上银行接受了可信证书(公钥).

(1)通过SSL URL,我的浏览器访问https://myonlinebanking.com

(2)我输入用户名/密码登录.这些数据是加密的,因此中间人只能看到无意义的数据.

(3)银行Web服务器收到我的加密数据,并使用其私钥对其进行解密并成功验证我的帐户.

现在我的问题是:

银行如何发回我的数据?银行用什么密钥加密响应数据?如果银行用"公钥"加密,那么中间人可以看到它就像我能看到的那样.所以中间人不知道我的用户名/密码,但他仍然可以看到我的帐户余额?

谢谢您的帮助.

小智 9

你有一些错误的假设:

  • HTTP数据并不总是使用服务器的公钥加密,以便将其发送到服务器
  • 服务器的公钥刚刚在开始时使用(握手协议)来建立安全密钥,用于安全密钥加密(对称加密)
  • 所有通信都通过密钥或对称密钥加密,其中客户端(浏览器)和服务器使用相同的密钥来加密和解密数据.

TLS(传输层安全)协议使用非对称加密(公钥)和对称加密(安全密钥)的组合.与银行的主要通信使用对称加密,为此会话密钥(安全密钥)TLS握手期间建立安全,使用非对称加密.

这一切都在TLS(传输层安全性)握手中,这里的链接对此进行了很好的解释.


emb*_*oss 8

TLS握手过程建立了一个对称的双方键,可能使用非对称的加密处理(其细节取决于进行了谈判客户端/服务器之间的确切的算法).这样,通信就可以通过两种方式加密,而不仅仅是单向.

但是,最终保护您免受MITM攻击的事实是,您的浏览器会执行某种形式的主机名验证.首先检查服务器在握手中呈现的证书的有效性.如果成功,则浏览器会检查证书是否绑定到与之通信的确切主机.如果省略此检查,即使通信的其余部分严格遵循协议(包括所有加密元素),MITM攻击仍将成功.攻击者可以简单地假装成任何主机并尽职尽责地执行协议的其余部分,你不会知道其中的区别.

  • 你能否详细说明TLS握手如何加密服务器响应?如果确实如此,客户将如何解密它? (3认同)