我知道服务器发送的证书不能被伪造(仍然存在MD5冲突,但代价高昂),但是伪造客户端呢..
在中间人攻击中:
我们不能告诉服务器我们是合法的客户端,并从该服务器获取数据然后对其进行操作,然后使用合法的客户端公钥再次对其进行加密吗?客户端如何确定数据确实来自服务器?

从理论上讲..我们可以向服务器发送给客户端的响应中注入任何数据吗?

最佳答案

您如何验证客户端? SSL客户端证书?还是某些应用程序级别的系统(Cookie等)?

简而言之,这就是SSL的作用:


协商双方之间的Diffie-Helmann共享会话密钥
让服务器对会话密钥进行签名并将结果发送给客户端。一旦客户端验证了这一点,客户端便知道不存在MITM,而服务器就是他们所说的身份。
如果启用了客户端证书,请让客户端对会话密钥进行签名并将签名发送给服务器。服务器现在知道没有MITM,客户端就是他们所说的身份。
使用共享会话密钥双向加密所有数据


通常,当您使用SSL时,您将不使用客户端证书。严格来说,服务器不知道该连接是否为MITM。但是,如果服务器证书不正确,大多数客户端将断开连接。服务器假定如果客户端继续连接,则没有MITM。即使执行MITM的Mallory选择不传播与客户端的断开连接,他现在也没有新信息;他所做的全部工作都是自己连接到服务器。如果不截取客户端的会话cookie或其他身份验证信息(仅在验证连接安全后才由客户端发送),则MITM无效。

因此,简而言之,只要一端或另一端在启动任何敏感信息的高层通信之前验证另一端的证书,SSL就双向都是安全的。

07-27 18:48