Sim*_*mon 19 encryption ssl-certificate
大多数wiki文章描述了客户端浏览器如何使用公钥(证书)加密敏感数据(例如用户名/密码)并将此加密数据发送到服务器.服务器将使用私钥对其进行解密.我得到这个部分.但没有明确的信息说服务器如何加密数据并发送回浏览器.
以我的网上银行为例:
(0)我已经从我的网上银行接受了可信证书(公钥).
(1)通过SSL URL,我的浏览器访问https://myonlinebanking.com
(2)我输入用户名/密码登录.这些数据是加密的,因此中间人只能看到无意义的数据.
(3)银行Web服务器收到我的加密数据,并使用其私钥对其进行解密并成功验证我的帐户.
现在我的问题是:
银行如何发回我的数据?银行用什么密钥加密响应数据?如果银行用"公钥"加密,那么中间人可以看到它就像我能看到的那样.所以中间人不知道我的用户名/密码,但他仍然可以看到我的帐户余额?
谢谢您的帮助.
的TLS握手过程建立了一个对称的双方键,可能使用非对称的加密处理(其细节取决于进行了谈判客户端/服务器之间的确切的算法).这样,通信就可以通过两种方式加密,而不仅仅是单向.
但是,最终保护您免受MITM攻击的事实是,您的浏览器会执行某种形式的主机名验证.首先检查服务器在握手中呈现的证书的有效性.如果成功,则浏览器会检查证书是否绑定到与之通信的确切主机.如果省略此检查,即使通信的其余部分严格遵循协议(包括所有加密元素),MITM攻击仍将成功.攻击者可以简单地假装成任何主机并尽职尽责地执行协议的其余部分,你不会知道其中的区别.