我正在使用 RSA 加密服务器和客户端之间的通信。假设我们有 2 个非对称密钥,密钥 1 和密钥 2。
服务器从一开始就有key1(私有),客户端有key1(公共)
所以这里是场景:
- 客户端生成key2
- 客户端连接到服务器
- 发送用 key1(public) 加密的 key2(public)
- 从现在开始,服务器将发送所有使用 key2(public) 加密的数据
- 客户端向服务器发送一些随机数据
- 服务器发回相同的散列数据
- 客户端验证数据是否正确
据我所知,这应该可以防止中间人攻击,还是我错过了什么?在第 7 点,客户端应该知道是否有人试图给服务器提供错误的密钥来加密,因为除了服务器之外没有其他人可以解密 key2(public)。
如果有什么可以提高安全性的方法,请告诉我。