SSL 像这样使用非对称加密:
- 服务器发送其非对称公钥的副本。
- 浏览器创建一个对称会话密钥并使用服务器的非对称公钥对其进行加密。
- 服务器用自己的非对称私钥解密非对称公钥,得到对称会话密钥。
- 服务器和浏览器现在使用对称会话密钥加密和解密所有传输的数据。
但是,如果有人在“步骤 1”中收听此通信并执行以下操作会发生什么:
- 在步骤 1 中侦听服务器和客户端之间的通信。
- 当服务器发送其非对称公钥的副本时,黑客将其更改为他们自己的公钥(也有其私钥)并将其发送给客户端。
- 客户端创建会话密钥并使用黑客的公钥对其进行加密。
- 黑客侦听线路并获取会话密钥并使用其私钥对其进行解密。
所以他在这里得到会话密钥。接着..
- 黑客通过最后一个公钥(服务器发送的)加密会话密钥(解密的)
- 所以黑客现在有了会话密钥......
我在我的项目中使用了这个算法来进行服务器和客户端之间的通信。他们之间没有任何认证。我在公钥中添加一些字符并且客户端检查它们并使其有效是否正确?
我们如何解决它?有任何想法吗?