SSL使用如下非对称加密:
但是,如果有人在“步骤1”中倾听这种交流,并执行以下操作,会发生什么情况:
所以他在这里得到了会话密钥。然后..。
我在我的项目中使用了这个算法,用于服务器和客户端之间的通信。他们之间没有任何认证。我在公钥中添加一些字符并对它们进行客户端检查并使其有效是对的吗?
我们怎么才能修好它?有什么想法吗?
发布于 2014-10-02 05:45:55
TLS没有被破坏,只有你对TLS的理解;)
在这的回答中解释了完整的TLS,但要回答具体的问题:
因此,要像您描述的那样使用MitM (Man中间)-Attack,攻击者必须替换服务器证书(这也是可能的,但要困难得多)。
证书是由CA (证书颁发机构)签名的公钥。因此,客户端可以通过验证证书上的签名来检查服务器证书。
所有证书都有一个由自签名证书组成的证书链。此自签名证书称为根证书,已包含在浏览器中。
您可以通过颁发根证书创建自己的CA,并使用此证书对自己的证书进行签名。然后,您只需将创建的根证书导入浏览器证书存储区。这仅适用于小用户群或对浏览器进行更新的公司。
发布于 2014-10-02 05:52:24
您缺少的是身份验证,即确认您收到的公钥确实是由服务器发送的。
例如,在https中,使用了证书颁发机构系统。某些组织被选为我们可以信任的组织。这些组织生成一个公钥,然后将其包含在浏览器中。因此,例如,在下载firefox时,会包含一组可信的CA证书。然后,当通过https连接到站点时,浏览器检查服务器提供的证书是否由受信任的CA证书之一签名。
CA则负责接收签署证书的请求,并验证证书是否由该站点的真正所有者发送。
在个人项目中,这意味着您需要在某个地方包含服务器的公钥,以便根据收到的证书进行验证。
发布于 2014-10-02 05:39:42
此攻击不起作用,因为客户端验证服务器的证书。如果中间人(在您的场景中是黑客)用自己的公钥替换服务器的公钥,那么证书就不会生效,客户端就知道出了什么问题,并中止了事务。客户端不会使用错误的公钥加密会话密钥,因此,这不会构成威胁。
https://security.stackexchange.com/questions/68786
复制相似问题